Prompt Engineering 进阶:从"提问"到"工程"
Prompt 写得好,AI 输出质量提升 10 倍。本文系统讲解 Prompt 工程的核心技术:结构化、少样本、思维链、ReAct。
Prompt Engineering 进阶:从"提问"到"工程"
同样一个问题,好的 Prompt 和差的 Prompt 输出质量差距可以达到 10 倍以上。Prompt 不是"问问而已",而是一门工程学科。
一、为什么 Prompt 重要
LLM 本质是概率预测:给定上文,预测下一个最可能的 token。
- 模糊的 Prompt = 模糊的上下文 = 模糊的输出
- 结构化的 Prompt = 清晰的指令 = 稳定高质量的输出
二、Prompt 的五大原则
2.1 明确具体
❌ "写一篇文章" ✅ "写一篇 800 字的技术博客,主题是 Kubernetes 入门,面向后端开发者,包含 3 个代码示例,语气友好"2.2 结构化组织
# 角色
你是 {role}
# 任务
{task}
# 要求
- 要求 1
- 要求 2
# 输出格式
按以下格式:
1. ...
2. ...
# 示例(可选)
输入:xxx
输出:xxx
2.3 提供上下文
你不知道的事情:用户的产品是 XX SaaS 平台,主要客户是中小企业。
2.4 给出示例(Few-shot)
将以下句子翻译为英文:
示例:
输入:你好
输出:Hello
输入:今天天气真好
输出:
现在请翻译:机器学习很有趣
2.5 指定输出格式
请以 JSON 格式输出:
{
"category": "...",
"tags": ["...", "..."],
"summary": "..."
}
三、核心技巧
3.1 角色扮演
你是一位有 20 年经验的资深 PHP 工程师,擅长性能优化。
请帮我分析以下代码的性能瓶颈:
...
效果:AI 会调用相关"领域知识",输出更专业。
3.2 思维链(Chain of Thought)
请一步步思考:
1. 先分析问题
2. 再列出每种方案的优缺点
3. 最后给出推荐
问题:如何设计一个高并发的评论系统?
效果:AI 不会跳过推理步骤,复杂问题正确率提升 30-50%。
3.3 少样本提示(Few-shot)
把评论分类为:好评/差评/中性
示例:
评论:这个东西真棒 → 好评
评论:太差了 → 差评
评论:还行吧 → 中性
现在分类:发货速度挺快 →
3.4 ReAct 模式
让 AI 推理 + 行动:回答问题时,请按以下格式:
思考:你的推理过程
行动:使用什么工具(如果有)
观察:工具返回的结果
...
最终答案:xxx
这是 LangChain Agent 的核心思想。
3.5 自我批评
回答后,请审视你的回答:
1. 是否完整回答了用户问题?
2. 是否有错误?
3. 是否有更优的方案?
如果有,请修正。
四、常用模板
4.1 内容创作
你是 {角色}。
主题:{主题}
读者:{目标读者}
长度:{字数}
风格:{风格}
要求:
- 论点 1
- 论点 2
- 必须包含一个案例
请撰写。
4.2 代码生成
你是 {语言} 专家。
任务:{任务}
输入:{输入数据}
输出格式:完整的、可运行的代码,包含注释
约束:
- 使用 {框架}
- 性能优化
- 错误处理
4.3 数据提取
从以下文本中提取 {字段}。
文本:{文本}
输出 JSON:
{
"field1": "value",
"field2": ["v1", "v2"]
}
4.4 翻译
将以下文本翻译为 {目标语言}。
要求:
- 保留原文格式(Markdown、代码等)
- 专业术语用 {领域} 习惯译法
- 语气:{正式/随意}
文本:{text}
五、高级技术
5.1 Meta-Prompting
让 AI 帮你写 Prompt:我想要一个 Prompt,用于 {场景},要求:
1. 输入是 xxx
2. 输出是 xxx
3. 风格要 xxx
请帮我设计这个 Prompt,并解释为什么这样设计。
5.2 Prompt 链
复杂任务拆成多步:def pipeline(input):
# 步骤 1: 提取关键信息
keywords = llm(f"从以下文本提取关键词:{input}")
# 步骤 2: 基于关键词生成大纲
outline = llm(f"基于关键词 {keywords},生成大纲")
# 步骤 3: 基于大纲写文章
article = llm(f"基于大纲 {outline},写一篇 1000 字文章")
return article
每步用更小、专门的 Prompt,比一个大 Prompt 效果更好。
5.3 自一致性(Self-Consistency)
同一个问题问多次,取多数答案:answers = [llm(prompt) for _ in range(5)]
final = most_common(answers)
适合需要确定性的场景(数学题、选择题)。
5.4 树形思考(ToT)
让 AI 探索多条思路:对每个方案:
1. 评估可行性
2. 列出优缺点
3. 给出评分
最后选择最优方案。
六、避坑指南
❌ 坑 1:Prompt 太长
不是越长越好。模型有注意力衰减,Prompt 超过 2000 tokens 后指令跟随能力下降。❌ 坑 2:指令冲突
请简洁回答,不要超过 100 字,详细说明每个步骤...
简洁 + 详细互相矛盾,AI 会困惑。
❌ 坑 3:依赖 AI 知识
请根据官方文档说明 Laravel 11 的新特性
如果 AI 训练数据没包含,它会编造。要提供原文。
❌ 坑 4:忽视版本
用 Python 3.5 写代码 # 太老
指定当前主流版本(如 Python 3.12)。
七、Prompt 优化工具
- Promptfoo:A/B 测试 Prompt
- LangSmith:追踪 Prompt 效果
- Helicone:LLM 可观测性
- Vellum:Prompt 实验室
八、实战示例
8.1 文章摘要
你是内容编辑。
任务:为以下文章写 3 个不同风格的摘要:
1. 学术风(严谨)
2. 营销风(吸引点击)
3. 简洁风(一句话)
要求:
- 每条不超过 50 字
- 保留核心信息
文章:[粘贴文章]
8.2 代码审查
你是资深代码审查员。
请审查以下代码,重点关注:
1. 安全漏洞(SQL 注入、XSS、CSRF)
2. 性能问题(N+1 查询、内存泄漏)
3. 可维护性(命名、结构、注释)
输出格式:
🔴 严重:[问题 + 修复建议]
🟡 警告:[...]
🟢 建议:[...]
代码:[粘贴代码]
8.3 SQL 生成
你是 SQL 专家,擅长 MySQL 8.0。
表结构:
- users (id, name, email, created_at)
- orders (id, user_id, amount, status, created_at)
需求:找出 2025 年 1 月消费超过 1000 元的 VIP 客户邮箱,按消费总额降序。
要求:
- 索引友好
- 处理 NULL
- LIMIT 100
九、Prompt 的未来
- Auto-Prompt:LLM 自动优化 Prompt(DSPy、TextGrad)
- Multi-Modal Prompt:图像 + 文本
- Dynamic Prompt:根据上下文动态调整
Prompt 是 AI 时代的"编程语言"。会写 Prompt,等于会编程。
💬 评论 0 条
暂无评论 — 来做第一个发声的人 ✨