把一个Agent任务拆成真正发生的几轮
同一句用户任务,为什么可能调用模型不止一次?
配套正文:F22基础课
把一个Agent任务拆成真正发生的几轮
同一句用户任务,为什么可能调用模型不止一次?
LLM生成下一步提议,宿主执行获准的动作,把结果再交给LLM。这是外层任务循环;每次模型调用内部还要经历逐Token生成。外层的一轮工具行动不等于内部生成一个Token,两种“循环”不能混用。
输入与适用条件:构造的只读教学任务:文件config.txt含timeout=30。泳道展示职责边界,不声称调用了真实商业API;数据和动作顺序固定。
1 / 8 · 1. 用户任务:读config.txt中的timeout
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
模型尚未看到磁盘文件。先区分用户给的任务与环境真实内容。
未读取默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
逐步说明与计算记录
以下解释全部展开,与播放器使用同一份数据;不是另换输入的第二个算例。
1.1. 用户任务:读config.txt中的timeout
模型尚未看到磁盘文件。先区分用户给的任务与环境真实内容。
未读取2.2. 模型请求:任务+read_file工具定义
工具定义告诉模型可以提议什么,不授予无限访问权限。
提供工具3.3. 模型输出:call_id=c1,path=config.txt
这只是请求,尚不能宣称文件已读取。调用标识把后续结果与此请求对应。
请求待执行4.4. 宿主校验后读取文件
路径、权限和参数检查通过后,由程序执行读文件;不是模型直接打开磁盘。
正在读取5.5. 工具结果:timeout=30
本例预设文件确实含timeout=30。返回结果可用于回答,但读取成功不意味着文件被修改。
读取成功6.6. 下一轮输入:原任务+调用+结果
同一个用户任务发生了第二次模型调用。新增的是实际证据,不需要重新假装猜测。
证据入上下文7.7. 模型回答:配置的timeout为30
这份回答有本例工具结果作依据,不只是依据模型参数里的常识。
回答完成8.8. 宿主显示回答;任务结束
最终消息结束此演示任务;输出完成与其他带副作用任务是否成功要分别判断。
结束为什么需要
模型可以借助工具获得新证据,而不把一切都塞入参数。
怎样实现
按请求、校验、执行、结果回填、继续决策组织循环。
可能的代价与误解
忘记回填工具结果会让模型重复请求;把输出文本当执行证明会误报完成。
如何判断是否做对
对照每轮模型输入和工具日志,确认结果与call_id匹配。