Few-shot 与 Chain-of-Thought 在 Agent 中应该如何使用?¶
- ID:Q017
- 难度:基础 / 进阶
- 标签:Few-shot、Reasoning、Examples、Tool Calling、Prompt
可视化图解¶
flowchart TD
Q[任务] --> E{是否存在稳定的行为范式}
E -->|是| F[Few-shot 展示输入与正确动作]
E -->|否| Z[零样本规则]
F --> P[模型生成可观察的计划或结构化决策]
Z --> P
P --> R[Runtime 执行与验证]
R --> T[保留结果与证据 不依赖隐藏思维链]
核心结论¶
Few-shot 用于展示任务边界和期望行为;推理提示用于帮助模型处理需要分解的问题。二者都不是越多越好。 Agent 的工具、状态和验证应由 Runtime 明确提供,不能依赖模型输出冗长“思维过程”来保证正确。
一、Few-shot 的主要用途¶
1. 边界示例¶
展示什么时候调用工具、什么时候直接回答、什么时候澄清或拒绝。
2. 结构示例¶
展示复杂 JSON、报告、引用和错误处理的正确格式。
3. 难例示例¶
选择容易混淆的 Hard Cases,而不是重复简单例子:
- 同名工具如何区分;
- 参数缺失时先问用户;
- 工具失败时不伪造结果;
- 证据不足时拒答。
4. 领域表达¶
展示组织术语、根因分析结构和 Review 标准。
二、示例选择¶
高质量 Few-shot 应:
- 与当前 Query 相似但不泄漏答案;
- 覆盖决策边界;
- 输出经过验证;
- 简短且信息密度高;
- 标明输入、动作、观察和最终结果;
- 随 Prompt / Tool 版本更新。
不是固定“2~5 个最好”。数量取决于模型、任务、Context Budget 和示例复杂度。
三、动态 Few-shot¶
从案例库检索相关示例:
对应流程使用 Mermaid 图解展示。
必须避免:
- 检索到错误或过期案例;
- 示例中含其他用户数据;
- 多个相似例子挤占 Context;
- 示例让模型机械模仿不适用步骤。
动态示例库需要版本、来源和评测,不是把所有高分回答放向量库。
四、Chain-of-Thought 应怎么理解¶
面试中不要把 CoT 简化为“加一句一步步思考”。对于 Agent,更重要的是让系统得到可执行的中间结构:
- 计划;
- 子目标;
- 缺失信息;
- Tool Call;
- 证据;
- 验证结果;
- 下一步。
Runtime 不需要依赖或暴露模型私有推理文本。可以要求模型给出简洁的计划、结论依据和可验证状态,而不是无限输出长思维过程。
五、什么时候需要显式分解¶
适合:
- 多跳检索;
- 复杂约束;
- 工具依赖;
- 数学、代码和系统设计;
- 需要先规划再执行。
不适合:
- 简单查余额;
- 明确单工具查询;
- 低延迟高频请求;
- 确定性规则可直接完成。
简单任务强制规划会增加延迟、Token 和错误机会。
六、Agent 中更可靠的替代¶
相比要求模型长篇思考,更可靠的是:
- Structured Plan;
- Tool Schema;
- State Machine;
- Planner–Executor;
- External Verifier;
- 测试和规则;
- Evidence Binding;
- 最大步骤和预算。
七、Few-shot 与 Tool Calling¶
示例可以展示:
User:查看 order-api 最近一次 beta 发布日志
Assistant Tool Call:get_latest_release(service="order-api", env="beta")
Tool Result:release_id=...
Assistant Tool Call:get_logs(release_id=...)
但示例不能替代参数 Schema、权限和错误校验。模型模仿正确 JSON 也可能生成不存在的服务或越权环境。
八、评估¶
做消融:
- 无示例;
- 固定示例;
- 动态示例;
- 显式计划;
- 直接 Tool Call。
指标:任务完成、工具准确、步骤、Token、延迟、格式错误和过度规划率。
常见错误回答¶
Few-shot 放 3 个工具调用例子,CoT 用于复杂推理。
需要继续说明示例选择、动态检索、版本、边界和为什么不依赖私有思维过程。
面试口述版¶
Few-shot 的价值是展示行为边界、结构和 Hard Case,而不是堆数量。我会优先放容易混淆的工具选择、缺参数澄清、失败和拒答例子,必要时从经过审核的案例库动态检索,并受 Token 和隐私约束。对于 CoT,我更关注可执行中间结构,例如计划、子目标、工具、证据和验证,不要求系统依赖或展示冗长思维文本。简单单工具任务直接执行,复杂多跳任务才使用结构化分解,并通过状态机、工具结果和外部验证保证可靠性。
结合个人项目¶
故障 Agent 的 Few-shot 应选“日志里有多个异常但根因是最早配置缺失”这样的难例;简单 Job 状态查询不需要 Planner。