怎样构建有效的 Agent
区分固定工作流与动态行动,理解何时需要复杂性。
对应资料:Building Effective Agents [S003]
沿着对象与状态理解本章
把模型、宿主、工具画成不同泳道后,问“谁真正改变了文件”就有明确答案。跟踪每条返回消息,再判断需要继续调用模型、执行工具还是结束;不要把模型说完成当成环境已经完成。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
把一个Agent任务拆成真正发生的几轮
同一句用户任务,为什么可能调用模型不止一次?
LLM生成下一步提议,宿主执行获准的动作,把结果再交给LLM。这是外层任务循环;每次模型调用内部还要经历逐Token生成。外层的一轮工具行动不等于内部生成一个Token,两种“循环”不能混用。
输入与适用条件:构造的只读教学任务:文件config.txt含timeout=30。泳道展示职责边界,不声称调用了真实商业API;数据和动作顺序固定。
1 / 8 · 1. 用户任务:读config.txt中的timeout
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
模型尚未看到磁盘文件。先区分用户给的任务与环境真实内容。
未读取默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
模型可以借助工具获得新证据,而不把一切都塞入参数。
怎样实现
按请求、校验、执行、结果回填、继续决策组织循环。
可能的代价与误解
忘记回填工具结果会让模型重复请求;把输出文本当执行证明会误报完成。
如何判断是否做对
对照每轮模型输入和工具日志,确认结果与call_id匹配。
Agent不是“加了很多角色的Prompt”
本篇对应Building Effective Agents。判断是否需要Agent,关键是下一步能否在看到环境反馈前确定。步骤稳定时,工作流更直接;需要依据新证据选择行动时,动态Agent更有价值。两者可以组合。[S003]
原创案例:给定明确文件清单和过滤规则,普通程序即可计算结果;调查为什么真实构建没有排除文件,则需要搜索、读取和测试。不要为了使用Agent而重新实现已有确定性逻辑。
五种组织方式怎样选择
链式处理适合阶段输出明确的任务;路由适合不同类别需要不同能力;并行适合相互独立的工作;协调者—工作者适合动态拆分;评价反馈适合结果可以被有效判断并改进的任务。[S003][S125]
每种都有代价。链会传播前一步错误;路由可能分错;并行需要整合;协调会重复派工;评价器若不可靠,会把正确答案改坏。因此模式选择需要反例,而不是只看成功演示。
把概率判断与确定性执行分开
模型可以建议下一步读哪个文件;程序应检查路径是否授权。模型可以提出补丁;工具应报告是否实际应用。模型可以判断任务看似完成;测试与业务状态提供最终证据。[S047][S058]
一个最小循环不需要十种框架部件:组装输入、获得动作、验证、执行、记录观察、判断结束。随着真实问题出现,再增加检查点、并发和恢复。
怎样知道该停止
成功停止需要满足验收;非成功停止可能因为证据不足、权限受限、环境故障或预算用尽。允许明确报告未完成,比强迫所有运行都产生“成功总结”更可靠。
原创例子:测试环境缺依赖,Agent可以完成补丁和静态检查,但应说尚未完成运行验证。它不应为了让任务显得结束而编造通过日志。
一个最小对照实验
为同一组假想任务比较固定工作流、单Agent和多Agent。分别记录功能正确性、重要遗漏、调用轮次、时间与人工接管。不要只比较输出长度。
当复杂方案没有减少真实失败,就应考虑删除。反过来,如果独立调查能发现单Agent反复遗漏的边界,则有保留理由。这是工程判断,不是“简单永远最好”的教条。[S128][S143]
完成本篇后,应该能解释每个新增环节解决的具体错误,以及去掉它会怎样。
继续深入:第5章 · Agent基础 或阅读拓展阅读目录0.3的逐项讲义。所有链接均为本地内容。
读取—发现缺口—再读取:让一次工具结果决定下一步
输入与条件。用户问“为什么超时?”教学仓库中config写 timeout=3,日志写 request elapsed=5,单位均在文件头声明为秒。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1第1轮模型输入 | 任务+read_file工具说明 | 提议读取config。 |
| 2第1个工具结果 | 拿到timeout=3秒 | 只能确认配置,还不能知道真实请求是否超时。 |
| 3第2轮模型输入 | 追加config结果 | 提议读取日志,而不是直接猜网络坏了。 |
| 4第2个工具结果 | 日志耗时5秒 | 有了配置与运行记录两个证据。 |
| 5第3轮回答 | 对齐同一请求和同一版本 | 5大于3,可说明本次请求超过配置时限;仍不能仅据此确定为何耗时5秒。 |
把过程连起来。Agent循环的价值是根据已取得证据确定缺什么,而不是机械地多问模型几次。
边界与反例。动作序列是教学构造,不是实测模型自动选择;这里证据只支持“超过时限”,不支持猜测更深根因。
依据与适用范围:[TOOLS]。示例输入和场景由本书明确设定。