AI小栈AI小栈
首页
  • 模块概览
  • Transformer 与注意力机制
  • 主流大模型对比
  • Prompt Engineering
  • Token 与成本核算
  • Function Calling
  • 模块概览
  • Agent 范式
  • 多 Agent 协作
  • 记忆系统
  • 规划与推理
  • 安全与可控性
  • 模块概览
  • LangChain / LangGraph
  • Claude Agent SDK
  • OpenAI Agents SDK
  • AutoGen / CrewAI
  • Dify / Coze
  • MCP 协议
  • 模块概览
  • RAG 工程化
  • 工具设计与封装
  • 流式输出与 UX
  • 可观测性
  • 部署与成本优化
  • 测试与评估
  • 模块概览
  • 智能编程助手
  • 知识库问答 Agent
  • 数据分析 Agent
  • 多模态 Agent
  • 运维 Agent
  • 从0到1构建
  • 模块概览
  • 论文解读
  • 开源项目追踪
  • MCP 生态
  • Agent 商业化
  • 职业路径
  • 模块概览
  • 技术面试实战
  • Agent 面试题解析
  • 项目经验包装
  • 流程与心态准备
首页
  • 模块概览
  • Transformer 与注意力机制
  • 主流大模型对比
  • Prompt Engineering
  • Token 与成本核算
  • Function Calling
  • 模块概览
  • Agent 范式
  • 多 Agent 协作
  • 记忆系统
  • 规划与推理
  • 安全与可控性
  • 模块概览
  • LangChain / LangGraph
  • Claude Agent SDK
  • OpenAI Agents SDK
  • AutoGen / CrewAI
  • Dify / Coze
  • MCP 协议
  • 模块概览
  • RAG 工程化
  • 工具设计与封装
  • 流式输出与 UX
  • 可观测性
  • 部署与成本优化
  • 测试与评估
  • 模块概览
  • 智能编程助手
  • 知识库问答 Agent
  • 数据分析 Agent
  • 多模态 Agent
  • 运维 Agent
  • 从0到1构建
  • 模块概览
  • 论文解读
  • 开源项目追踪
  • MCP 生态
  • Agent 商业化
  • 职业路径
  • 模块概览
  • 技术面试实战
  • Agent 面试题解析
  • 项目经验包装
  • 流程与心态准备
  • LLM 核心能力

    • 模块概览
    • Transformer 与注意力机制详解
    • 主流大模型特性对比
    • Prompt Engineering 高阶技巧
    • Token、上下文窗口与成本核算
    • Function Calling 与 Tool Use 协议

Prompt Engineering 高阶技巧

在 Agent 工程中,Prompt 不是"写一句话让模型回答",而是通过文本编程来控制模型的行为、推理路径和输出格式。掌握高阶 Prompt Engineering 技巧,是让 LLM 在复杂工作流中稳定运作的核心能力。

系统提示(System Prompt)

系统提示是设定模型"角色"与"行为边界"的最高优先级指令。它位于用户消息之前,权重高于后续所有对话内容。

设计原则

  1. 角色定义要具体:不要只说"你是一个助手",而是明确界定职责范围。例如:你是一个数据分析 Agent,只负责从用户提供的数据中提取统计指标,不负责数据采集或可视化。

  2. 约束条件要穷举:模型不会自动理解你的隐含边界。列出所有"不要做的事"比列出"要做的事"更重要:

    不要:
    - 编造不存在的数据
    - 离开数据分析话题进行闲聊
    - 输出未经计算验证的数字
    
  3. 输出格式要预设:在系统提示中定义输出模板,比在用户消息中临时指定更稳定:

    输出格式:
    {
      "metric_name": string,
      "value": number,
      "confidence": "high" | "medium" | "low",
      "source": string
    }
    
  4. 分层结构优于线性叙述:用标题、分隔符、编号等结构组织系统提示,让模型更容易定位和遵循每个指令段落。

结构化输出(Structured Output)

Agent 系统需要 LLM 的输出能被下游代码直接解析。纯自然语言输出在自动化流程中是灾难性的。

JSON 模式

在系统提示中要求 JSON 输出,并给出完整的 schema 示例。关键技巧:

  • 给出完整示例而非只描述格式:模型从示例学习比从规则描述学习更可靠
  • 指定 response_format 参数(OpenAI API):使用 response_format: { type: "json_object" } 强制 JSON 输出
  • 在 Claude 中使用 XML 标签包裹输出:<result><metric>...</metric></result> 比 JSON 更抗干扰

防御性设计

模型有时会在 JSON 中嵌入"思考过程"或注释,破坏解析。防御策略:

  • 在系统提示中明确声明:直接输出 JSON,不要包含任何解释文字
  • 使用 """json\n{...}\n""" 这样的围栏格式减少嵌入干扰
  • 在后端代码中做二次清洗(截取第一个 { 到最后一个 } 之间的内容)

思维链(Chain-of-Thought, CoT)

思维链让模型先展示推理过程,再给出最终结论。这对多步推理任务的效果提升是显著的——GPT-4 在数学推理上的错误率在使用 CoT 后可降低 40% 以上。

基础 CoT

最简单的触发方式是在 prompt 结尾加上:请逐步思考后再给出答案。

自洽性 CoT(Self-Consistency)

生成多条推理路径,取多数一致的结论。实现方式:

  1. 设置 temperature > 0 生成 N 个回答
  2. 对最终结论做聚类或投票
  3. 选择出现频率最高的结论

这种方法在数学与逻辑推理任务上效果最好,代价是调用次数倍增。

强制结构化 CoT

要求模型按固定格式输出推理步骤:

思考过程:
1. [识别问题类型]
2. [列出已知条件]
3. [制定解题步骤]
4. [逐步执行计算]
5. [验证结果合理性]

最终答案:...

这种格式在 Agent 系统中尤其有用——你可以解析中间步骤,在特定节点插入人工审核或工具调用。

Few-shot 示例

Few-shot 通过在 prompt 中提供少量示例来传递隐含的模式规则。关键技巧:

示例选择策略

  • 多样性优于数量:3 个覆盖不同类型的示例,比 5 个同类型示例更有效
  • 难度递增:从简单示例开始,逐步展示复杂场景,帮助模型渐进理解
  • 包含边界案例:至少一个示例展示"不该怎么做"或边缘情况的处理

示例格式

示例 1:
输入:简单的销售数据
输出:{"total": 1500, "trend": "up", "confidence": "high"}

示例 2:
输入:缺失部分数据的销售报表
输出:{"total": "N/A", "trend": "inconclusive", "confidence": "low", "missing_fields": ["week3"]}

示例 3:
输入:包含异常值的数据集
输出:{"total": 1500, "trend": "up", "confidence": "medium", "outliers": ["week5: 50000"]}

注意示例 2 和 3 展示了非理想情况的处理——这在 Agent 系统中至关重要,因为真实输入永远不会总是完美的。

ReAct 模式

ReAct(Reasoning + Acting)将推理与工具调用交织进行,是 Agent 系统中最常用的 prompt 模式:

思考:我需要查询用户最近的订单数据来计算退款金额
行动:call_database_query({"table": "orders", "user_id": "12345"})
观察:[工具返回的数据]
思考:根据返回数据,退款金额应为 299 元
行动:call_refund_process({"amount": 299, "order_id": "ORD-789"})

这种模式让 Agent 的每一步决策都可追踪、可审计、可中断——这是生产级 Agent 系统的基本要求。

组合使用原则

在实战中,这些技巧不是独立使用的。一个高效的 Agent prompt 通常组合了:

  • System Prompt 设定角色、约束、输出格式
  • Few-shot 传递具体行为模式
  • CoT / ReAct 控制推理与行动的展开方式
  • Structured Output 确保结果可被代码解析

组合顺序建议:System Prompt → Few-shot 示例 → 当前任务描述 → CoT/ReAct 指令


本章小结

技巧核心作用使用场景
System Prompt设定角色、约束、输出格式所有 Agent 任务的底层配置
Structured Output强制模型按指定格式输出需要被下游代码解析的场景
Chain-of-Thought引导模型展示推理过程数学、逻辑、多步推理任务
Few-shot通过示例传递隐含规则输出格式固定、模式明确的任务
ReAct将推理与工具调用交织需要多步环境交互的 Agent

组合公式:System Prompt(地基) + Few-shot(示例) + CoT/ReAct(推理控制) + Structured Output(格式锁定)


📖 延伸阅读

  1. OpenAI Prompt Engineering Guide —— 官方最佳实践
  2. Anthropic Prompt Engineering —— Claude 专用技巧
  3. Chain-of-Thought Prompting Elicits Reasoning in LLMs —— CoT 原论文
  4. ReAct: Synergizing Reasoning and Acting in Language Models —— ReAct 原论文

⚠️ 重要提醒:Prompt Engineering 不是"调参魔法",而是系统工程。每次修改 prompt 后,务必用 20+ 个测试案例验证稳定性。

Prev
主流大模型特性对比
Next
Token、上下文窗口与成本核算