免费文章 · 05 理解工具、工作流与 Agent
工具结果怎样让 Agent 继续行动
上一节《让 AI 通过工具获取信息和执行操作》,我们学会了从任务出发设计工具,也理解了模型请求、程序执行与结果回传怎样配合。但任务往往不会停在第一次调用:读到的资料不够,需要补查;保存被拒绝,需要根据原因调整。
如果工具已经返回新信息,AI 却仍照着原来的想法行动,多调用几次也无法解决问题。本节关注的是:Agent 怎样利用反馈,判断当前还缺什么,再选择下一步行动。 理解这条关系,我们才能看出一段多步记录是在推进任务,还是只重复动作。
反馈怎样影响下一步
任务开始时,模型通常还不知道外部资料的当前内容、某个对象是否存在,或一次操作能否成功。工具返回后,这些问题才有了进一步判断的依据。
对于由应用执行的工具,运行环境会将调用结果带入后续上下文,再次请求模型。模型结合当前目标和新信息,决定继续读取、生成内容,还是采取其他行动。这样的过程可以反复进行,形成 Agent 的工作循环。
图中,工具返回的资料进入下一轮输入,模型再据此提出新的行动。反馈让模型有机会调整判断,但不保证它一定会选对下一步。
随着调用增加,上下文也需要整理。除了当前目标,还应保留相关事实、未解决的问题及必要的调用记录。较长的资料可以按需读取或提炼,避免无关内容不断累积,同时保留能够回查的原始依据。
从一次真实接续看 Agent 的行动
本节继续使用《凡人修仙传》的章稿任务。工作区中已经保存了第一章,末段经过调整,形成修订 2;第二章则尚无正文。现在,我们让 Agent 根据当前前文完成第二章,并保存为草稿。
课堂实录中,模型先请求读取作品要求、章节目录,以及第一章和第二章。下面展开第 2 轮:上一轮取得的资料已经进入当前输入,模型接着提出保存请求。
先看第一章。工具返回了修订 2 的完整正文,Agent 随后依据这份前文续写第二章。这里重要的不只是修订号,而是更新后的实际内容进入了下一轮工作。
第二章则返回空结果,说明当前尚无正文。在续写任务下,Agent 据此生成并保存新稿,而不是反复尝试读取不存在的内容。
保存完成后,下一步又发生了变化。由于任务还要求确认保存结果,Agent 再次读取第二章。下面将这次读取与程序独立读回的正文放在一起:
本轮共进行了 4 次模型请求。记录显示,第二章参考了更新后的第一章,保存请求使用了相应修订,模型读回的正文也与数据库中的实际内容一致。
可以看到,新资料改变了续写依据,空结果明确了创建需求,保存回执又引出了结果确认。 这些行动不是简单重复调用,而是在利用不同反馈推进任务。
实录还包含一次由编者主动构造的旧修订保存请求。程序发现当前正文已经更新,拒绝旧版本覆盖:
不同反馈,需要不同处理
工具返回后,Agent 需要重新判断:现在确认了什么,还缺什么,下一步怎样补足?
例如,同样是读取到空章节,续写任务可能需要创建新稿,审阅任务则需要确认待审内容是否存在。反馈提供了事实,具体行动仍取决于当前目标。
已取得的反馈 | 当前还缺什么 | 下一步可以怎样处理 |
|---|---|---|
目录只有标题 | 判断所需的正文 | 补读相关内容 |
读取完成,返回空结果 | 目标对象或内容 | 根据任务判断是否创建,或核对查询范围 |
参数不符合要求 | 有效的调用参数 | 根据错误说明修正请求 |
资料修订已变化 | 基于最新状态的提议 | 重新读取并调整内容 |
保存明确成功 | 实际产物的确认 | 按任务要求核对结果 |
执行结果不确定 | 操作后的真实状态 | 先查询状态,避免重复写入 |
资料已查清,但关键取舍未定 | 人的决定 | 说明问题与选项,请人判断 |
其中,修订冲突尤其值得注意。工具要求“重读后合并”时,不能只把请求里的修订号改大。原提议可能遗漏了最新修改,必须先取得当前内容,再重新决定怎样处理。
同样,写入结果不确定时,也需要先查明实际状态。否则,贸然重试可能造成重复操作。
查看反馈怎样进入后续请求
在第 2 轮展开“实际请求与原始返回”,可以看到第一章正文和第二章的空结果已经作为工具消息进入本轮输入,并通过调用标识对应各自的读取请求。第 3 轮则带入保存回执,再提出读取正文的请求。
其中,chapter: null 表示第二章在第一次读取时尚无草稿。这是一次已经完成的读取结果,并不表示工具仍在执行。核对反馈时,需要结合所读对象和操作状态理解返回内容。
怎样检查 Agent 有没有用上反馈
回看一段多步记录时,可以沿着三个问题检查:
- 工具返回了什么新信息?
- 下一项行动怎样利用了这些信息?
- 执行后的结果是否解决了原来的问题?
例如,本轮取得了更新后的第一章,第二章便以新的前文续写;保存返回后,又通过读回确认结果。如果某一步没有使用新依据,或问题尚未解决就继续执行,就需要回到对应记录查找原因。
AI 正在更新一份客户报告。搜索工具只返回了三份材料的标题和标识;随后,保存提议被拒绝,工具提示:“客户要求已更新,请重新读取。”
但 AI 准备只把保存请求中的修订号改大,再提交同一份正文。
这两条反馈分别说明还缺什么? 下一轮应该取得和保留哪些依据?如果新要求与客户此前确认的结论发生冲突,又该怎样处理?
查看答案与解析
搜索结果只提供了资料线索,还需要读取相关正文。保存被拒绝则说明原提议依据的要求已经发生变化,需要先取得最新要求,判断哪些内容应随之调整。只修改修订号,并没有解决依据过期的问题。
下一轮应保留报告目标、相关资料、当前要求及其变化、已有报告和待解决的问题。如果新要求明确取代旧结论,就据此修订;如果仍有无法确定的取舍,则应交给人判断。
形成新的报告提议后,再根据实际返回核对保存结果。
这样,我们就能判断 Agent 是否真正根据反馈推进了任务,而不只是增加调用次数。
不过,每个下一步都需要交给模型决定吗? 有些操作可以提前安排,有些则必须等待结果才能选择。下一节我们将进一步学习哪些步骤适合固定,哪些判断值得交给模型。
讨论
登录后参与讨论