Agentloop
概念
AgentLoop(智能体循环)是AiAgent的核心机制,是思考->行动->观察的循环,直到任务完成或出发终止条件。
步骤:
- 接收输入。Agent拿到用户的请求或者上一轮循环的结果,把信息放到上下文中。
- 推理决策。基于当前的上下文进行思考、判断。
- 执行行动。如果模型决定调用工具,系统就执行对应的工具操作。
- 观察和判断。把工具的结果放到上下文中,然后继续推理。模型看到信息后再次判断下一步干啥。
循环次数的控制
设置太小复杂任务做不完,设置太大如果Agent陷入了错误的循环,会浪费token。
所以一般在提示词里会有让大模型自己判断循环次数:简单任务给少一点循环次数,复杂的给多一点,看看执行进展来决定要不要继续。
AgentLoop上下文控制
AgentLoop上下文太大会导致成本太大
- 结果压缩。每隔几轮就把之间的过程压缩成总结概要
- 活动窗口。只保留最近的几轮的完整信息。
- 分层存储。把工具返回的数据、详细的记忆等外部存储,上下文值放再要和引用。
Agent在循环中自我纠错
如果Agent在自我循环中一直做错误决策怎么办?
- 可以将报错结果直接给大模型,多数大模型会知己调整好。
- 添加一个反思机制,每进行一轮或几轮让大模型进行反思做的对不对。
- 设置专门的监督Agent,发现不对就打断他。
AgentLoop的并发
Open ai 的tool calling 可以做到,Agent可以一块 调用工具然后把所有结果一起放进上下文里。
终止条件的设置
- 自然终止,让Agent自己判断任务完成了,在提示词里告诉他如果觉得任务完成就直接输出答案。
- 设置最大循环阈值,可以是轮数、token、时间等。
- 操作检测,识别并打断异常问题。比如连续几次调用同一个工具切工具返回的结果相同,或者联系几轮报错没进展等。
(当Agent在快要触发硬性上限的时候刚好有了突破性进展,可以给他额外续几轮)
判断Agent是否在有效推理
- 把最近的工具调用和参数作去重,如果就剩下一两个,就肯呢个陷入了循环。
- 对比最近几轮的输出内容,如果内容相似,就说明没进展。