Prompt 工程不是”写一句好话让 AI 回答得更准”——它是一套系统的方法论。同样一个模型,有人用 Prompt 能写出一个完整的 SaaS 后台,有人只能得到一段废话。差距不在模型本身,在于你给了它什么指令。

这篇文章不讲玄学,只讲可复现的技巧。每个技巧有原理、有例子、有反例。

基础篇:零样本提示

清晰指令的三要素

一个有效的 Prompt 只需要三样东西:角色、任务、约束。

1
2
你是一个 Python 后端开发。写一个 FastAPI 路由,接收 JSON 格式的用户注册请求。
只返回代码,不要解释。

拆开看:角色(Python 后端开发)+ 任务(写 FastAPI 路由)+ 约束(只返回代码)。

要什么,不要什么

AI 对否定指令的理解远不如肯定指令。告诉它要什么,而不是不要什么。

1
2
不要:不要用旧的 React 写法
应该:使用 React 18+ 的函数组件和 Hooks

否定指令容易被忽略,肯定指令直接给出目标模式。这一条规则就能消除一半以上的 Prompt 调试时间。

给出格式

AI 的输出格式由你决定。不给格式 = 让 AI 自己猜 = 每次结果不一样。

1
2
用 JSON 格式输出,结构为 { "name": string, "price": number, "features": string[] }。
不要加任何其他文字。

指定格式后的输出是机器可解析的——如果你在做 API 调用,这一点直接决定代码能不能跑。

进阶篇:少样本提示

最少给一个例子

零样本做不准的事,加一个例子就能解决。不需要给十个。

1
2
3
4
5
6
把下面的产品描述翻译成适合电商列表页的短文案。每条不超过 20 个词。

输入:Built with a powerful 1500W motor, this blender crushes ice, frozen fruit, and tough greens in seconds.
输出:1500W motor, crushes ice and fruit in seconds.

现在翻译:This espresso machine features a 15-bar pump and PID temperature control for consistent extraction.

AI 从例子中自动推断出风格、长度、保留哪些信息、丢掉哪些信息。一个例子就够了。

错了不要重写 Prompt,给反例

AI 输出不满意时,不要立刻重写整个 Prompt。在原对话中直接纠正:

1
不对。"consistent extraction" 应该保留,重新翻译:

给反例比猜 Prompt 哪里有问题快得多。迭代三次一般就能稳定。

高级篇:思维链推理

让它先想再说

要求 AI 在给出答案之前先输出推理过程。

1
2
3
4
5
6
7
8
不要:这个 Python 函数有什么问题?
应该:
分析下面这个 Python 函数的逻辑,一步一步讲清楚哪里有问题。
先列出所有潜在问题,再给出修正后的代码。

def process_data(items):
for i in range(len(items)):
items[i] = items[i] / items[i-1]

加上”一步一步讲”后,AI 会先推理(发现除 0 风险、i-1 在 i=0 时报错),再给出修正代码。正确率提升 30-50%。

结构化思考

对于复杂任务,要求分步骤思考:

1
2
3
4
5
你要做三件事:
1. 找出代码中的所有潜在 bug
2. 按严重程度排序(Critical > Warning > Info)
3. 为每个 Critical bug 写一个可运行的修复
按顺序输出,不要跳步骤。

分步思考不会被跳步骤,每一步的输入是上一步的输出,逻辑链条完整。

实战篇:Prompt 模板库

代码审查

1
2
3
你是资深代码审查者。用表格输出审查结果:

| 行号 | 严重程度 | 问题 | 建议 |

文档生成

1
2
为下面这个 API 函数写 JSDoc。需要说明:参数类型和含义、返回值类型、可能抛出的错误、至少一个使用示例。
只写 JSDoc,不要改代码。

错误排查

1
我遇到了这个错误:[粘贴错误信息]。分析可能的原因,列出 3 个最可能的方案,每个方案说明为什么它可能解决问题。按概率从高到低排列。

内容改写

1
把下面这段技术文档改写为面向产品经理的版本。去掉代码块和 API 细节,用业务语言解释这个功能做了什么,为什么用户需要它。

对比分析

1
2
3
4
5
6
比较 [方案 A] 和 [方案 B]:
1. 各自优势(3 条)
2. 各自劣势(3 条)
3. 适用场景
4. 如果预算有限(<$1000/月),选哪个?为什么?
用表格输出前 3 项,最后一项用一段话。

常见错误与纠正

错误问题纠正
“帮我把这个改了”没说改成什么“把这个函数的返回值改成 async,用 await 处理所有 fetch 调用”
“要最好的”没有标准“优先可读性,其次性能”
一次给十个任务AI 注意力分散三个三个来,每完成一组确认一次
问开放式问题输出不可控给格式、给长度限制、给例子

进阶方向

当你掌握了上面的技巧后,这些方向值得深入:

  • System Prompt 设计:不同模型对 System Prompt 的服从程度不同。Claude 遵循度最高,GPT-5 次之。在 Claude API 中使用 System Prompt 的效果远远好于把指令放在第一条用户消息里。
  • Prompt 缓存:Anthropic 和 OpenAI 都支持 Prompt Caching——相同前缀的多次请求只计费一次。设计好 System Prompt 结构,高频调用场景下成本降低 50-70%。
  • 动态 Prompt 生成:根据用户输入动态拼装 Prompt。比如先用一个小模型分类用户意图,再根据意图类型加载不同的 Prompt 模板。

如果你在用 Claude Code 做 AI 编程,Claude Code 进阶实战 里详细讲了如何用 CLAUDE.md 和 MCP 工具集成交替写 Prompt。

总结

Prompt 工程的本质是:把模糊的意图翻译成精确的指令。每次你觉得自己被 AI 气到了,停下来想一想——你给它的指令,另一个人能不能理解你要什么?如果不能,AI 也不能。

最好的 Prompt 不是最长的,是最清楚的。三要素(角色 + 任务 + 约束)能覆盖 80% 的场景。剩下 20%,靠例子和思维链补。