拓展阅读

怎样构建有效的 Agent

区分固定工作流与动态行动,理解何时需要复杂性。

推荐阅读 04 / 12本地中文导读

对应资料:Building Effective Agents [S003]

沿着对象与状态理解本章

把模型、宿主、工具画成不同泳道后,问“谁真正改变了文件”就有明确答案。跟踪每条返回消息,再判断需要继续调用模型、执行工具还是结束;不要把模型说完成当成环境已经完成。

下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。

动态图解 · F22

把一个Agent任务拆成真正发生的几轮

同一句用户任务,为什么可能调用模型不止一次?

LLM生成下一步提议,宿主执行获准的动作,把结果再交给LLM。这是外层任务循环;每次模型调用内部还要经历逐Token生成。外层的一轮工具行动不等于内部生成一个Token,两种“循环”不能混用。

调用标识把某次工具请求与其结果连接的ID。
工具结果程序实际执行后返回的内容。
上下文本轮明确交给模型的信息,而非整个电脑状态。

输入与适用条件:构造的只读教学任务:文件config.txt含timeout=30。泳道展示职责边界,不声称调用了真实商业API;数据和动作顺序固定。

1 / 8 · 1. 用户任务:读config.txt中的timeout

第1步,共8步

窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。

把一个Agent任务拆成真正发生的几轮:1. 用户任务:读config.txt中的timeout用户宿主LLM文件工具用户任务:读config.txt中的timeout模型请求:任务+read_file工具定义模型输出:call_id=c1,path=config.txt宿主校验后读取文件工具结果:timeout=30下一轮输入:原任务+调用+结果模型回答:配置的timeout为30宿主显示回答;任务结束

模型尚未看到磁盘文件。先区分用户给的任务与环境真实内容。

未读取

默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。

为什么需要

模型可以借助工具获得新证据,而不把一切都塞入参数。

怎样实现

按请求、校验、执行、结果回填、继续决策组织循环。

可能的代价与误解

忘记回填工具结果会让模型重复请求;把输出文本当执行证明会误报完成。

如何判断是否做对

对照每轮模型输入和工具日志,确认结果与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的逐项讲义。所有链接均为本地内容。

运行示例 · G04

读取—发现缺口—再读取:让一次工具结果决定下一步

输入与条件。用户问“为什么超时?”教学仓库中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]。示例输入和场景由本书明确设定。

记录保存在本机浏览器。

输入关键词即可检索。

↑ ↓ 选择 Enter 打开Esc 关闭 · 仅本地搜索

阅读设置

阅读设置仅保存在本机浏览器,不上传任何数据。