什么是 Agent Loop?其典型执行流程是怎样的?
Agent Loop(智能体循环) 是 AI Agent(人工智能体)架构中的核心运行机制。它是 Agent 能够自主解决复杂任务的“心脏”或“运行时环境”。
简单来说,Agent Loop 是一个递归的、迭代的过程。在这个过程中,Agent 不断地进行“思考-行动-观察”的循环,直到完成用户设定的目标或达到停止条件。
如果没有 Loop,LLM(大语言模型)只是一个简单的问答机器(输入->输出);有了 Loop,LLM 就变成了能够使用工具、分步解决问题的 Agent。
典型执行流程 (The Execution Flow)
最经典的 Agent Loop 模式通常基于 ReAct (Reason + Act) 范式。其典型的执行流程如下:
1. 接收任务 (Input)
用户给出一个指令或目标(例如:“帮我查一下今天北京的天气,并根据天气推荐穿搭”)。
2. 思考与规划 (Thought / Reasoning)
Agent(由 LLM 驱动)分析当前的任务和上下文历史。
- LLM 内部独白:“用户想知道北京天气。我现在的上下文里没有天气信息。我需要使用搜索工具或天气 API 来获取这个信息。”
- 决策:LLM 决定下一步该做什么(是直接回答,还是调用工具)。
3. 行动选择 (Action / Tool Call)
如果 LLM 决定需要外部数据,它会生成一个结构化的指令(通常是 JSON 格式),指明要调用的工具名称和参数。
- 例子:
Action: Weather_API, Args: {location: "Beijing"}
4. 执行工具 (Execution)
Agent 的运行时系统(Runtime)拦截到 LLM 的行动指令,并在真实环境中执行该代码或 API 调用。
- 注意:这一步通常不是 LLM 做的,而是包裹 LLM 的 Python/代码环境做的。
5. 观察结果 (Observation)
工具执行完毕后,会返回一个结果(Output)。
- 例子:
Observation: {"temp": "25°C", "condition": "Sunny", "wind": "Level 3"} - 系统将这个“观察结果”追加到对话历史(Context)中,作为新的输入反馈给 LLM。
6. 循环判断 (Loop / Iterate)
系统将包含“用户指令 + 之前的思考 + 采取的行动 + 工具返回的观察结果”的完整历史再次发送给 LLM。
- 回到第 2 步:LLM 再次进行思考。
- LLM 新的思考:“我现在知道北京是 25 度晴天了。用户还想要穿搭建议。基于这个天气,我可以给出建议了,不需要再查其他东西。”
7. 最终响应 (Final Answer)
当 LLM 认为掌握了足够的信息,或者任务已完成,它不再请求调用工具,而是生成最终给用户的回复。
- 输出:“今天北京天气晴朗,气温 25 度。建议您穿着舒适的 T 恤搭配薄外套……”
- 循环终止。
伪代码表示 (Pseudo-code)
为了便于理解,我们可以用一段简单的伪代码来描述这个过程:
def agent_loop(user_goal):
# 初始化对话历史
history = [user_goal]
while True:
# 1. 让 LLM 基于当前历史进行思考
response = llm.predict(history)
# 2. 解析 LLM 的回复
if response.is_final_answer():
return response.content # 循环结束,返回结果
# 3. 如果 LLM 想要调用工具
if response.has_tool_call():
tool_name = response.tool_name
tool_args = response.tool_args
# 4. 执行工具
print(f"Agent 正在执行: {tool_name}...")
observation = execute_tool(tool_name, tool_args)
# 5. 将结果追加到历史中
# 格式通常是:[Thought, Action, Observation]
history.append(response) # 记录刚才的思考和行动
history.append(observation) # 记录工具返回的结果
# 6. 继续下一次循环 (continue)
# 安全机制:防止无限循环
if len(history) > MAX_ITERATIONS:
return "任务太复杂,达到最大步数限制。"
Agent Loop 的关键要素
上下文管理 (Context Management):
Loop 的核心在于“记忆”。每次循环,Agent 必须看到之前做过什么(Action)以及看到了什么(Observation)。如果上下文丢失,Agent 就会陷入死循环。停止条件 (Termination Conditions):
Agent 什么时候停下来?- 自然停止:LLM 输出了特殊的标记(如
FINAL_ANSWER)。 - 强制停止:达到了最大循环次数(Max Iterations,例如 10 次),防止 Agent 因为报错或逻辑死锁而无限消耗 Token。
- 自然停止:LLM 输出了特殊的标记(如
错误处理 (Error Correction):
如果在“执行工具”阶段报错了(例如 API 超时),这个错误信息也会作为Observation喂回给 LLM。- LLM 会看到:“Observation: Error 404”。
- LLM 下一步思考:“API 调用失败了,我应该尝试另一个工具或者检查参数。” -> 这就是 Agent 的自我修正能力。
总结
Agent Loop 是将静态的 LLM 转化为动态解决问题系统的机制。它通过 Think -> Act -> Observe 的不断迭代,让 AI 能够一步步逼近复杂问题的最终答案。