Agent 结果校验:空结果、证据冲突与失败恢复
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一节,咱们给 Agent Loop 加上了 Runtime。
它会限制模型调用次数、工具调用次数和 Token 消耗,也能识别重复 Action 和连续无进展的循环。
工具返回 Observation 以后,recordObservation 还会根据 source 更新 Plan State。
看起来已经挺完整了吧。
但是!这里还隐藏了一个问题。
假设日志工具返回了下面的 Observation:
{
ok: true,
source: 'primary_logs',
evidenceKey: 'primary_logs:payment-service',
data: {
records: [],
summary: '请求成功,但没有查到日志。'
}
}
这次工具调用没有报错,可是 records 是空数组,也就是没有查到对应数据。
如果直接把这份 Observation 写进 Agent Run State,对应的 Plan Step 就可能被标记为 completed。最后,Agent 拿着一份根本没有内容的“证据”结束了任务。
这肯定是不行的。
所以,这一节咱们要在 executeTool 和 recordObservation 之间,加上 结果校验 与 失败恢复,流程类似于下面这样:
大家仔细看上面的 恢复路线 部分,这里面涉及到了 4 个小概念,这四个小概念对应的就是在遇到不同错误场景下的处理方案,大家做个了解就行,不需要专门去记
- Retry(重试):同一个 Action 因为临时故障执行失败时,在预算范围内使用原来的参数再执行一次。
- Fallback(备用路线):原来的工具、模型或数据源无法继续使用时,保持任务目标不变,切换到提前准备好的备用方案。
- Replan(重新规划):当前计划已经无法继续推进任务时,根据已有结果修改 Plan State,取消失效步骤并增加新的执行步骤
- Human Handoff(转交人工):自动恢复无法安全完成任务时,暂停当前 Agent Run,并把失败原因、运行状态和已有证据交给人工处理。
这几个概念相对比较好理解,咱们就不多说了。
这四个概念对应三种不同的场景,咱们直接通过代码来看
实现一个带结果校验的 Agent Runtime
课程源码:
https://github.com/lgd8981289/Agent--Code本小节完整代码位于:
Code/Node/
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
