← 返回知识库
AI AgentPromptSystem Prompt鲁棒性Lost in the middle

Prompt 工程

Agent 专属的 System Prompt 设计、工具使用规范、输出格式约束、失效模式与鲁棒性提升。

Prompt 工程(Agent 专属)

普通 Chat 的 Prompt 负责「怎么回答」,Agent 的 Prompt 还要负责「怎么决策、怎么调工具、什么时候停」。这是两者的本质差异。

Agent 的 System Prompt 与普通 Chat 的区别

Agent System Prompt 承担工具使用规范 + 决策逻辑 + 输出格式三重角色:

  1. 角色定义(2-3 句)
  2. 能力边界(能用什么/不能用什么)
  3. 决策准则(什么情况调什么工具/什么情况转人工)
  4. 输出格式约束(JSON Schema/标记)
  5. 安全规则
  6. 错误处理策略(工具失败怎么办)

与 Chat 三大差异:

差异说明
要有「工具使用说明书」写成 if-then:当用户给订单号 → 调 A;只给日期 → 调 B
输出格式精确约束JSON schema,程序侧还要再校验一遍
必须有终止条件「完成所有步骤后直接给最终回复,不要在结尾问还有什么可以帮你」

Prompt 为什么会「失效」

LLM 是概率模型,Prompt 失效是必然不是偶然。失效模式:

  1. 指令冲突:多条规则互相矛盾
  2. 长 prompt 中间指令被忽略(Lost in the middle——关键信息放中间时遵循率显著低于首尾)
  3. 场景漂移:用户落到未覆盖的长尾

提高鲁棒性的对策

  • 关键规则放首尾
  • 反例(不只说做什么,更说不做什么)
  • 输出双层约束:prompt 写一遍 + 代码 schema 校验一遍
  • 监控漂移:LLM-as-judge 自动检测 + 人工抽检
  • Few-shot ≤ 5 个示例(多了浪费 token 且过拟合)
  • CoT 用在复杂多步决策,但限定思考步数防「想太多跑偏」

防幻觉的 Prompt 边界(RAG 场景)

  1. 「仅基于以下参考内容回答,不要使用参考内容之外的知识」
  2. 「每个结论标注对应参考片段编号」
  3. 「参考内容没有相关信息时,明确说明未找到」(允许说不知道)
  4. 给反例(幻觉回答 vs 正确拒答)
  5. 结构化输出:先列证据再给结论

面试要点

  • Prompt 工程不等于「会写几段话」,而是可评估、可回归的工程:每次改 prompt 要能跑评测集对比。
  • 输出格式约束「prompt 写一遍 + 代码校验一遍」的双层设计,是区分「调包」和「工程化」的关键。
  • 少谈「魔法 prompt」,多谈「约束、边界、终止条件、失败策略」这些可控的东西。