AI API Prompt 工程进阶实战指南 2026:从 Chain-of-Thought 到 ReAct 的高阶技巧
2026-09-03 · 约 12 分钟阅读
Prompt 工程是从"能用"到"好用"的分水岭——同样的模型、同样的 Token 预算,一段精心设计的 Prompt 可以把准确率从 60% 拉到 90%。本文系统梳理 2026 年在生产环境最常用的进阶 Prompt 技术,附可直接复用的代码模板。
一、为什么 2026 年还要聊 Prompt 工程
过去一年大模型能力突飞猛进,但生产落地仍然严重依赖 Prompt 质量:
- 模型变强了,但对指令的容错率反而下降——更聪明的模型更敏感,模糊指令更容易产出"看着合理其实跑偏"的答案
- 多数企业场景跑的还是 GPT-5.6 / Claude Opus 5 / Gemini 3.1 / Qwen3.5 等主力模型,不会无脑用最贵的那一档
- Agent 与多轮工具调用场景里,Prompt 设计直接决定成功率与可调试性
可以说:Prompt 工程是 ROI 最高的优化手段——不改一行模型代码,就能拿到立竿见影的效果提升。
二、进阶技术的六层金字塔
把进阶 Prompt 技术按抽象层级排一下,方便按场景选择:
| 层级 | 技术 | 主要解决的问题 |
|---|---|---|
| L1 | Zero-shot + 角色设定 | 通用任务 |
| L2 | Few-shot + 示例选择 | 格式对齐、风格模仿 |
| L3 | Chain-of-Thought (CoT) | 多步推理、数学、逻辑 |
| L4 | Self-Consistency / CoT-SC | 推理结果稳定性 |
| L5 | ReAct / Tool-Use | 外部工具调用、动态决策 |
| L6 | 结构化约束 + 自动评测 | 生产可观测、CI/CD |
下面逐层拆解。
三、Few-shot:从"举几个例子"到"挑对的例子"
3.1 为什么 Few-shot 仍然有效
研究表明,即使在 GPT-5、Claude Opus 5 这种超大规模模型上,3-5 个高质量示例带来的准确率提升仍然可以达到 10%-30%,特别是在以下场景:
- 输出格式特殊(JSON schema、特定报表样式)
- 风格要求细微(客服语气、品牌口吻)
- 边界用例多(异常输入该如何处理)
3.2 示例选择策略
多样性 > 数量。比"堆 10 个相似例子"更有效的做法:
examples = [
{"input": "正常订单咨询", "output": "..."},
{"input": "价格异议", "output": "..."},
{"input": "投诉 + 情绪激烈", "output": "..."},
{"input": "超出业务范围的咨询", "output": "..."}, # 关键:覆盖拒绝场景
]
每一类边界场景至少一个,模型就能学到隐含规则。
3.3 跨模型示例兼容性
不同模型对 Few-shot 的敏感度差异很大:
| 模型 | 推荐示例数 | 注意事项 |
|---|---|---|
| GPT-5.6 / GPT-5.6 Sol | 2-5 | 示例尽量简短,避免稀释指令 |
| Claude Opus 5 / Sonnet 5 | 1-3 | 过多示例反而干扰,建议把"示例"写进系统提示里 |
| Gemini 3.1 Pro | 3-6 | 对多模态示例特别敏感 |
| Qwen3.5 / DeepSeek V3 / GLM-5 | 2-4 | 国产模型对中文示例理解更好 |
经验法则:示例总数控制在 Prompt 总长度的 20%-40%,超过这个比例就开始挤占指令空间。
四、Chain-of-Thought (CoT):让模型"想一步再说"
4.1 基础 CoT
最简单的形式是让模型在给最终答案前先输出推理过程:
请按以下步骤思考:
1. 提取题目中的关键数字
2. 列出计算公式
3. 代入数字算出中间结果
4. 给出最终答案
题目:小明有 15 个苹果,吃了 3 个,又买了原来数量一半的苹果,现在有几个?
OpenAI、Anthropic、Google 在官方 Prompt 文档里都把这个模式列为推荐基础技术。
4.2 Zero-shot CoT
更简单的触发咒语——只要在用户消息末尾加一句 "Let's think step by step",大多数模型就会自动切到推理模式。零示例、零配置,对快速实验很有用。
4.3 显式推理标记 vs 隐式推理
| 方式 | 代表模型 | 特点 |
|---|---|---|
显式 thinking 字段 | Claude Opus 5 (thinking blocks), Gemini 3.1 Pro (Deep Think), Qwen3.5-QwQ | 推理过程与最终答案分离,可单独计费 |
| 隐式推理 | GPT-5.6 (reasoning_effort 参数), DeepSeek R1 | API 透传一个强度参数,内部展开推理 |
生产建议:能用显式推理字段就尽量用——你能看到模型"想了什么",调试和审计都更可控。隐式推理则适合延迟敏感场景。
五、Self-Consistency:用投票换稳定
Self-Consistency (CoT-SC) 的核心思想:同一个问题跑 N 次推理,按多数答案投票。
适用条件:
- 任务有"对/错"客观标准(数学、代码、分类)
- 单次推理正确率不够高,但又上不起最强的模型
- 能容忍 3-5 倍的延迟和成本
from collections import Counter
def self_consistency(client, model, prompt, n=5):
answers = []
for _ in range(n):
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.7, # 必须非零,多样性是投票的前提
)
answers.append(extract_final_answer(resp.choices[0].message.content))
return Counter(answers).most_common(1)[0][0]
实测下来,5 次投票能把数学题准确率提升 5%-15%,是非常划算的工程折中。
六、ReAct 与 Function Calling:让模型"动手"
ReAct(Reason + Act)是 Agent 时代的核心 Prompt 模式:推理 → 调用工具 → 观察结果 → 再推理,直到能给出最终答案。
在生产里,ReAct 几乎都是通过 Function Calling / Tool Use 实现的,主流厂商的 API 都已标准化:
| 模型/平台 | 参数名 | 工具描述格式 |
|---|---|---|
| OpenAI GPT-5.6 | tools | JSON Schema(OpenAI 风格) |
| Anthropic Claude Opus 5 | tools | JSON Schema(与 OpenAI 高度相似) |
| Google Gemini 3.1 | tools | JSON Schema(OpenAPI 3 子集) |
| 国产模型(GLM-5、Qwen3.5、DeepSeek V3) | tools | 普遍兼容 OpenAI 格式 |
6.1 一个最小可用的 ReAct Prompt 模板
你是一个智能助手,可以使用以下工具:
{tool_descriptions}
请按以下流程回答用户问题:
1. 思考 (Thought): 你打算怎么处理这个问题
2. 行动 (Action): 调用哪个工具、传什么参数
3. 观察 (Observation): 工具返回了什么
4. 重复 1-3 直到能给出最终答案
5. 最终答案 (Final Answer): 用人话告诉用户结果
6.2 ReAct 常见的几个坑
1. 工具描述太啰嗦——模型把工具描述当成"次要信息"忽略掉。每个工具描述控制在 50-150 字
2. 并行调用没启用——多个独立工具可以一次调用,减少 round-trip。OpenAI/Anthropic 都支持 parallel_tool_calls
3. 错误处理缺失——工具返回异常时,模型没"兜底"机制,要么死循环要么直接放弃。务必在 Prompt 里加"如果工具持续失败超过 N 次,请回答'暂时无法完成'"
4. 上下文膨胀——多轮工具调用累积的 Observation 会把上下文塞满,建议每 5-10 轮做一次摘要压缩
七、结构化约束:让输出"可控、可解析"
生产场景里,最讨厌的就是模型输出 JSON 漏一个逗号。三类解决方案:
7.1 JSON Mode / Structured Outputs
OpenAI 的 response_format={"type": "json_schema", ...}、Anthropic 的 Tool Use 强制 JSON、Gemini 的 response_schema——主流厂商都已支持"严格 JSON 输出"。优先用这个。
from openai import OpenAI
client = OpenAI(api_key="***", base_url="https://你的中转站/v1")
resp = client.chat.completions.create(
model="gpt-5.6",
messages=[{"role": "user", "content": "提取这段订单信息"}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "order",
"schema": {
"type": "object",
"properties": {
"order_id": {"type": "string"},
"amount": {"type": "number"},
"currency": {"type": "string"},
},
"required": ["order_id", "amount", "currency"],
},
},
},
)
print(resp.choices[0].message.content) # 100% 合法 JSON
7.2 Prompt 层面的约束
如果模型不支持 JSON Schema,或者要做更复杂的结构化输出:
请严格按以下格式输出,不要加任何额外文字:
### 摘要
[一句话总结]
### 关键点
1. ...
2. ...
3. ...
### 风险
[无 / 具体描述]
7.3 输出解析与重试
不要相信模型一定听话。生产代码应该:
import json
from pydantic import BaseModel, ValidationError
class Output(BaseModel):
summary: str
key_points: list[str]
def call_with_retry(prompt, max_retries=3):
for i in range(max_retries):
raw = call_model(prompt)
try:
return Output.model_validate_json(raw)
except ValidationError as e:
# 把错误反馈给模型,让它自己修
prompt += f"\n\n上一次输出解析失败:{e}\n请修正后重新输出。"
raise RuntimeError("模型输出格式始终不合规")
八、跨模型 Prompt 迁移的几个"坑位"
实际项目中经常遇到"原本给 GPT-5 写的 Prompt,换到 Claude / Gemini 效果断崖式下跌"的情况。常见原因和应对:
| 现象 | 原因 | 应对 |
|---|---|---|
| Claude 比 GPT-5 更啰嗦 | Claude 更"详尽",会主动补充内容 | 在 Prompt 里加"严格按指定格式,不要补充" |
| Gemini 对 Few-shot 示例顺序敏感 | Gemini 倾向把最后一个示例当"权威" | 把最重要的示例放最后 |
| Qwen3.5 / GLM 中文更优,英文略弱 | 中文预训练数据比例高 | 英文任务可考虑混合英文示例 |
| DeepSeek-R2 推理过程长,截断风险 | 默认输出长度更激进 | 显式设置 max_tokens |
九、把 Prompt 放进 CI/CD:版本化与评测
生产级项目里,Prompt 应该和代码一样走 PR + 评测:
- Prompt 文件进 Git,每次变更触发评测流水线
- 用 LLM-as-Judge 或规则匹配跑几百条历史样本,对比新旧 Prompt 的胜率
- 关键业务 Prompt 在评测通过前不允许上线
推荐工具:Promptfoo、LangSmith、LangFuse 都支持这种"Prompt 即代码"的工作流。
十、选一个稳定的中转站开始你的 Prompt 实验
Prompt 工程的迭代速度极快,最忌讳"换个 Key 还要重写代码"。建议直接对接兼容 OpenAI Chat Completions 格式的AI API 中转站——一套代码可以随时切换 GPT-5.6、Claude Opus 5、Gemini 3.1 Pro、DeepSeek V3、Qwen3.5、GLM-5 等不同底座,对比哪家模型对你的 Prompt 反应最好。
如果你正在挑选稳定的中转平台,可以去 openairouter.net 看看排行榜和实时状态——这里汇总了主流中转站的模型覆盖、价格、稳定性指标和用户反馈,能省下不少自己踩坑的时间。