Prompt Engineering 进阶:从"提问"到"工程"
同样一个问题,好的 Prompt 和差的 Prompt 输出质量差距可以达到 10 倍以上。Prompt 不是"问问而已",而是一门工程学科。
一、为什么 Prompt 重要
LLM 本质是概率预测:给定上文,预测下一个最可能的 token。
- 模糊的 Prompt = 模糊的上下文 = 模糊的输出
- 结构化的 Prompt = 清晰的指令 = 稳定高质量的输出
二、Prompt 的五大原则
2.1 明确具体
❌ "写一篇文章" ✅ "写一篇 800 字的技术博客,主题是 Kubernetes 入门,面向后端开发者,包含 3 个代码示例,语气友好"2.2 结构化组织
\\\`markdown
角色
你是 {role}任务
{task}要求
- 要求 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)
\\\`
请一步步思考:
- 先分析问题
- 再列出每种方案的优缺点
- 最后给出推荐
\\`
效果:AI 不会跳过推理步骤,复杂问题正确率提升 30-50%。
3.3 少样本提示(Few-shot)
\\\`
把评论分类为:好评/差评/中性
示例: 评论:这个东西真棒 → 好评 评论:太差了 → 差评 评论:还行吧 → 中性
现在分类:发货速度挺快 →
\\\`
3.4 ReAct 模式
让 AI 推理 + 行动:\\\`
回答问题时,请按以下格式:
思考:你的推理过程 行动:使用什么工具(如果有) 观察:工具返回的结果 ...
最终答案:xxx
\\\`
这是 LangChain Agent 的核心思想。
3.5 自我批评
\\\`
回答后,请审视你的回答:
- 是否完整回答了用户问题?
- 是否有错误?
- 是否有更优的方案?
\\`
四、常用模板
4.1 内容创作
\\\`
你是 {角色}。
主题:{主题} 读者:{目标读者} 长度:{字数} 风格:{风格} 要求:
- 论点 1
- 论点 2
- 必须包含一个案例
\\`
4.2 代码生成
\\\`
你是 {语言} 专家。
任务:{任务} 输入:{输入数据} 输出格式:完整的、可运行的代码,包含注释 约束:
- 使用 {框架}
- 性能优化
- 错误处理
\\`
4.3 数据提取
\\\`
从以下文本中提取 {字段}。
文本:{文本}
输出 JSON:
{
"field1": "value",
"field2": ["v1", "v2"]
}
\\\`
4.4 翻译
\\\`
将以下文本翻译为 {目标语言}。
要求:
- 保留原文格式(Markdown、代码等)
- 专业术语用 {领域} 习惯译法
- 语气:{正式/随意}
\\`
五、高级技术
5.1 Meta-Prompting
让 AI 帮你写 Prompt:\\\`
我想要一个 Prompt,用于 {场景},要求:
- 输入是 xxx
- 输出是 xxx
- 风格要 xxx
\\`
5.2 Prompt 链
复杂任务拆成多步:\\\`python
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)
同一个问题问多次,取多数答案:\\\`python
answers = [llm(prompt) for in range(5)]
final = mostcommon(answers)
\\\`
适合需要确定性的场景(数学题、选择题)。
5.4 树形思考(ToT)
让 AI 探索多条思路:\\\`
对每个方案:
- 评估可行性
- 列出优缺点
- 给出评分
\\`
六、避坑指南
❌ 坑 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 文章摘要
\\\`markdown
你是内容编辑。
任务:为以下文章写 3 个不同风格的摘要:
- 学术风(严谨)
- 营销风(吸引点击)
- 简洁风(一句话)
- 每条不超过 50 字
- 保留核心信息
\\`
8.2 代码审查
\\\`markdown
你是资深代码审查员。
请审查以下代码,重点关注:
- 安全漏洞(SQL 注入、XSS、CSRF)
- 性能问题(N+1 查询、内存泄漏)
- 可维护性(命名、结构、注释)
代码:[粘贴代码]
\\\`
8.3 SQL 生成
\\\`markdown
你是 SQL 专家,擅长 MySQL 8.0。
表结构:
- users (id, name, email, createdat)
- orders (id, userid, amount, status, created_at)
要求:
- 索引友好
- 处理 NULL
- LIMIT 100
\\`
九、Prompt 的未来
- Auto-Prompt:LLM 自动优化 Prompt(DSPy、TextGrad)
- Multi-Modal Prompt:图像 + 文本
- Dynamic Prompt:根据上下文动态调整
Prompt 是 AI 时代的"编程语言"。会写 Prompt,等于会编程。
📌 相关推荐