Agent循环机制拆解:边想边做与先想后做

Agent 和聊天机器人的分界线在哪?一个词:循环。聊天是一次请求一次响应,Agent 是在循环里反复"推理→调工具→看结果",直到任务完成或触发停止条件。Anthropic 工程团队的说法很到位:Agent 通常就是 LLM 在一个循环里基于环境反馈使用工具。

循环的最小实现

去掉包装,核心就一个 while:

while not done:
    response = call_llm(messages)        # LLM 想一步
    if response.tool_calls:              # 决定调工具
        results = execute_tools(...)     # 执行
        messages.append(results)         # 结果塞回上下文
    else:
        done = True                      # 不调了,输出答案

每轮内部五个阶段:感知(输入进上下文)→ 推理(判断现状与下一步)→ 规划(复杂任务拆子步骤)→ 行动(调工具)→ 观察(结果回填)。推理是大脑,观察是回路——少了观察,循环变成空转。

两种干法的取舍

ReAct:边想边做。 每步先 Thought 再 Action 再 Observation,灵活、能随时纠偏,代价是每轮都调 LLM,token 和延迟双高。适合路径不确定的探索性任务。

Plan-and-Execute:先想好再做。 先生成完整计划,再逐步执行。省 token、延迟低,但计划错了纠偏成本大。适合结构清晰、步骤可预知的任务。

选型的判断标准不是哪个更先进,而是任务的确定性:能预判步骤的选 Plan-and-Execute,不可预知的选 ReAct,混合任务用"计划骨架 + 局部 ReAct"。

一个真实任务的循环轨迹

"找 2026 年引用量最高的 Agent Memory 论文并总结":第一轮推理"先搜论文"→调学术搜索→15 篇结果;第二轮推理"最高那篇要全文"→调文档检索→拿到摘要;第三轮推理"信息够了"→不调工具直接生成→退出。三轮、两次工具调用、一个答案。单轮响应做不了这事——你无法在一次 LLM 调用里完成搜索加检索加总结。

停止条件:生产环境必须补的一课

Demo 里循环靠"模型自己说完成"就够了,生产环境必须显式加三道闸:最大迭代轮数(防死循环烧 token)、token 预算上限(防单任务成本失控)、工具失败熔断(连续失败 N 次终止并告警)。三道闸全部落在代码层而不是提示词层——提示词约束不可靠,模型偶尔会忽略。

验证自己写的循环是否正确

三条检查:日志能看到完整的推理-工具-观察序列(不是黑箱跑完);人为让一个工具返回错误,确认下一轮推理真的消费了这个错误信息;设一个小轮数上限跑一个复杂任务,确认循环按上限停止而不是静默截断。三条过了,这个循环才配叫 Agent,而不是套壳的 while。

0

评论0

请先
显示验证码
没有账号?注册  忘记密码?