俗称 Agent 执行闭环是所有智能体最核心的骨架。先给出核心定义Agent Loop 一套持续迭代的执行循环大模型不断「思考 → 采取行动 → 接收外部反馈」直到满足退出条件才停止而不是普通Chat 那样单次一问一答直接结束。普通 Chat 流程无循环用户提问 → LLM生成回答 → 流程终止Agent Loop 流程闭环用户目标 → 思考(Thought) → 行动(Action) → 获取观测(Observation) → 再次思考……【循环】→任务完成输出答案退出业界最经典范式ReAct Reason Act思考 行动就是标准 Agent Loop。一、标准 Agent Loop 五大核心阶段1. Thought 思考阶段大脑LLM 负责输入历史对话 用户目标 上一轮工具返回结果 (Observation)LLM 要自主判断三件事当前信息是否足够回答用户如果信息不足需要调用什么工具、入参是什么如果信息足够直接整理最终答案终止循环关键点要不要调用工具由模型自主决策不是开发者硬编码 if 判断。2. Action 行动阶段执行层代码侧当 LLM 输出工具调用指令Tool Call / Function Call程序解析指令去执行外部能力联网搜索HTTP 接口调用执行 Python 代码查询数据库端口探测、文件读写等LLM 只输出调用意图与参数真正执行操作是外部代码模型本身不能触碰外部系统。3. Observation 观测阶段外部世界反馈工具执行完毕拿到返回结果包装成文本 / 结构化数据送回给大模型。示例Action探测服务器 192.168.1.100:8080 端口Observation端口未开放连接超时4. 上下文组装程序把历史 Thought Action Observation 全部追加到上下文送入下一轮 LLM 请求。5. 终止判断 Exit Condition每一轮思考后检查退出条件常见终止条件LLM 判断现有信息足够无需继续调用工具生成最终回答达到最大循环轮次防止无限死循环工程必加比如最多循环 5 次工具连续多次调用失败、无可用工具二、完整实例走一遍 Agent Loop用户指令查询沈阳今天气温如果低于 20 度提醒添加外套假设模型本身没有实时天气数据第 1 轮循环Thought我没有实时天气需要调用天气查询工具参数城市 沈阳日期 今日Action调用天气 APIObservation沈阳今日气温 16℃未满足退出条件 → 进入下一轮第 2 轮循环Thought已获取温度 16℃ 20℃信息充足不需要继续调用工具可以整理最终回复Action无工具调用输出最终自然语言答案触发终止条件Loop 结束最终回复沈阳今日气温 16℃气温偏低建议增添外套。 普通 Chat 模型只能等人主动追加信息Agent 自动完成多轮迭代。三、代码视角极简伪代码理解 Loop# Agent Loop 主循环defagent_loop(user_query,max_round5):context[{role:user,content:user_query}]for_inrange(max_round):# 最大轮次防死循环# 1. Thought调用LLM思考llm_responsellm.chat(context)# 2. 判断输出最终答案 or 需要调用工具ifneed_final_answer(llm_response):returnllm_response.content# 退出循环# 3. Action解析工具调用执行外部函数tool_callparse_tool_call(llm_response)tool_resultexecute_tool(tool_call)# 4. Observation把执行结果塞回上下文context.append({role:assistant,tool_call:tool_call})context.append({role:tool,content:tool_result})# 达到最大轮次强制退出return任务迭代达到上限无法完成查询这就是 LangChain、LangGraph、Spring AI Agent 底层最基础的骨架。四、容易踩坑的工程问题实战重点1. 无限循环问题高频坑场景模型不断重复调用同一个工具得不到有效信息却一直循环。解决方案强制设置最大迭代轮次max_iterations在 prompt 约束重复工具调用多次无果则停止历史上下文增加约束识别无效重复 Action2. 上下文膨胀每一轮 Thought/Action/Observation 都会塞进 prompt轮次越多 token 越大。解决方案摘要记忆、滑动窗口、向量长期记忆对过长的 Observation 做截断3. 模型幻觉产生错误的工具参数模型编造不存在的函数名、错误参数。方案增加工具描述约束、参数校验执行失败后将错误信息作为 Observation 回传给模型让模型自我修正。4. 区分Function Calling ≠ Agent Loop很多新手混淆Function Calling只是单次工具调用能力一轮就结束Agent Loop持续多轮迭代机制可以连续多次调用多个工具单次 Function Call提问 → 调用一次工具 → 回答无法连续二次调用Agent Loop可以连续调用工具 A→拿到结果→调用工具 B→调用工具 C…五、延伸相关概念ReAct最基础 Agent Loop 框架Thought → Action → ObservationPlan-and-Solve / Plan-Execute增强版 Loop先整体规划任务步骤清单再循环执行每一步适合复杂长任务Reflection反思型 AgentLoop 增加反思环节行动结束复盘哪里出错优化下一轮决策LangGraph把 Agent Loop 改造为状态机不再是简单线性循环支持分支、跳转、回退工业级常用六、一句话总结Agent Loop 给大模型搭建一个持续自我迭代的循环跑道允许模型多次 “思考、动手、接收反馈”直到任务完成普通对话没有这条循环跑道只能一问一答。
Agent Loop(智能体循环)完整详解
俗称 Agent 执行闭环是所有智能体最核心的骨架。先给出核心定义Agent Loop 一套持续迭代的执行循环大模型不断「思考 → 采取行动 → 接收外部反馈」直到满足退出条件才停止而不是普通Chat 那样单次一问一答直接结束。普通 Chat 流程无循环用户提问 → LLM生成回答 → 流程终止Agent Loop 流程闭环用户目标 → 思考(Thought) → 行动(Action) → 获取观测(Observation) → 再次思考……【循环】→任务完成输出答案退出业界最经典范式ReAct Reason Act思考 行动就是标准 Agent Loop。一、标准 Agent Loop 五大核心阶段1. Thought 思考阶段大脑LLM 负责输入历史对话 用户目标 上一轮工具返回结果 (Observation)LLM 要自主判断三件事当前信息是否足够回答用户如果信息不足需要调用什么工具、入参是什么如果信息足够直接整理最终答案终止循环关键点要不要调用工具由模型自主决策不是开发者硬编码 if 判断。2. Action 行动阶段执行层代码侧当 LLM 输出工具调用指令Tool Call / Function Call程序解析指令去执行外部能力联网搜索HTTP 接口调用执行 Python 代码查询数据库端口探测、文件读写等LLM 只输出调用意图与参数真正执行操作是外部代码模型本身不能触碰外部系统。3. Observation 观测阶段外部世界反馈工具执行完毕拿到返回结果包装成文本 / 结构化数据送回给大模型。示例Action探测服务器 192.168.1.100:8080 端口Observation端口未开放连接超时4. 上下文组装程序把历史 Thought Action Observation 全部追加到上下文送入下一轮 LLM 请求。5. 终止判断 Exit Condition每一轮思考后检查退出条件常见终止条件LLM 判断现有信息足够无需继续调用工具生成最终回答达到最大循环轮次防止无限死循环工程必加比如最多循环 5 次工具连续多次调用失败、无可用工具二、完整实例走一遍 Agent Loop用户指令查询沈阳今天气温如果低于 20 度提醒添加外套假设模型本身没有实时天气数据第 1 轮循环Thought我没有实时天气需要调用天气查询工具参数城市 沈阳日期 今日Action调用天气 APIObservation沈阳今日气温 16℃未满足退出条件 → 进入下一轮第 2 轮循环Thought已获取温度 16℃ 20℃信息充足不需要继续调用工具可以整理最终回复Action无工具调用输出最终自然语言答案触发终止条件Loop 结束最终回复沈阳今日气温 16℃气温偏低建议增添外套。 普通 Chat 模型只能等人主动追加信息Agent 自动完成多轮迭代。三、代码视角极简伪代码理解 Loop# Agent Loop 主循环defagent_loop(user_query,max_round5):context[{role:user,content:user_query}]for_inrange(max_round):# 最大轮次防死循环# 1. Thought调用LLM思考llm_responsellm.chat(context)# 2. 判断输出最终答案 or 需要调用工具ifneed_final_answer(llm_response):returnllm_response.content# 退出循环# 3. Action解析工具调用执行外部函数tool_callparse_tool_call(llm_response)tool_resultexecute_tool(tool_call)# 4. Observation把执行结果塞回上下文context.append({role:assistant,tool_call:tool_call})context.append({role:tool,content:tool_result})# 达到最大轮次强制退出return任务迭代达到上限无法完成查询这就是 LangChain、LangGraph、Spring AI Agent 底层最基础的骨架。四、容易踩坑的工程问题实战重点1. 无限循环问题高频坑场景模型不断重复调用同一个工具得不到有效信息却一直循环。解决方案强制设置最大迭代轮次max_iterations在 prompt 约束重复工具调用多次无果则停止历史上下文增加约束识别无效重复 Action2. 上下文膨胀每一轮 Thought/Action/Observation 都会塞进 prompt轮次越多 token 越大。解决方案摘要记忆、滑动窗口、向量长期记忆对过长的 Observation 做截断3. 模型幻觉产生错误的工具参数模型编造不存在的函数名、错误参数。方案增加工具描述约束、参数校验执行失败后将错误信息作为 Observation 回传给模型让模型自我修正。4. 区分Function Calling ≠ Agent Loop很多新手混淆Function Calling只是单次工具调用能力一轮就结束Agent Loop持续多轮迭代机制可以连续多次调用多个工具单次 Function Call提问 → 调用一次工具 → 回答无法连续二次调用Agent Loop可以连续调用工具 A→拿到结果→调用工具 B→调用工具 C…五、延伸相关概念ReAct最基础 Agent Loop 框架Thought → Action → ObservationPlan-and-Solve / Plan-Execute增强版 Loop先整体规划任务步骤清单再循环执行每一步适合复杂长任务Reflection反思型 AgentLoop 增加反思环节行动结束复盘哪里出错优化下一轮决策LangGraph把 Agent Loop 改造为状态机不再是简单线性循环支持分支、跳转、回退工业级常用六、一句话总结Agent Loop 给大模型搭建一个持续自我迭代的循环跑道允许模型多次 “思考、动手、接收反馈”直到任务完成普通对话没有这条循环跑道只能一问一答。