AI AgentPromptSystem Prompt鲁棒性Lost in the middle
Prompt 工程
Agent 专属的 System Prompt 设计、工具使用规范、输出格式约束、失效模式与鲁棒性提升。
Prompt 工程(Agent 专属)
普通 Chat 的 Prompt 负责「怎么回答」,Agent 的 Prompt 还要负责「怎么决策、怎么调工具、什么时候停」。这是两者的本质差异。
Agent 的 System Prompt 与普通 Chat 的区别
Agent System Prompt 承担工具使用规范 + 决策逻辑 + 输出格式三重角色:
- 角色定义(2-3 句)
- 能力边界(能用什么/不能用什么)
- 决策准则(什么情况调什么工具/什么情况转人工)
- 输出格式约束(JSON Schema/标记)
- 安全规则
- 错误处理策略(工具失败怎么办)
与 Chat 三大差异:
| 差异 | 说明 |
|---|---|
| 要有「工具使用说明书」 | 写成 if-then:当用户给订单号 → 调 A;只给日期 → 调 B |
| 输出格式精确约束 | JSON schema,程序侧还要再校验一遍 |
| 必须有终止条件 | 「完成所有步骤后直接给最终回复,不要在结尾问还有什么可以帮你」 |
Prompt 为什么会「失效」
LLM 是概率模型,Prompt 失效是必然不是偶然。失效模式:
- 指令冲突:多条规则互相矛盾
- 长 prompt 中间指令被忽略(Lost in the middle——关键信息放中间时遵循率显著低于首尾)
- 场景漂移:用户落到未覆盖的长尾
提高鲁棒性的对策
- 关键规则放首尾
- 用反例(不只说做什么,更说不做什么)
- 输出双层约束:prompt 写一遍 + 代码 schema 校验一遍
- 监控漂移:LLM-as-judge 自动检测 + 人工抽检
- Few-shot ≤ 5 个示例(多了浪费 token 且过拟合)
- CoT 用在复杂多步决策,但限定思考步数防「想太多跑偏」
防幻觉的 Prompt 边界(RAG 场景)
- 「仅基于以下参考内容回答,不要使用参考内容之外的知识」
- 「每个结论标注对应参考片段编号」
- 「参考内容没有相关信息时,明确说明未找到」(允许说不知道)
- 给反例(幻觉回答 vs 正确拒答)
- 结构化输出:先列证据再给结论
面试要点
- Prompt 工程不等于「会写几段话」,而是可评估、可回归的工程:每次改 prompt 要能跑评测集对比。
- 输出格式约束「prompt 写一遍 + 代码校验一遍」的双层设计,是区分「调包」和「工程化」的关键。
- 少谈「魔法 prompt」,多谈「约束、边界、终止条件、失败策略」这些可控的东西。