ReAct 循环就是将 LLM、上下文和工具串联起来的核心机制------让我们看看一个 Agent 是如何一步步思考和行动的。
Agent 执行任务的核心模式叫做 **ReAct**(Reasoning + Acting)。虽然名字只体现了思考(Reasoning)和行动(Acting)两个词,但实际循环包含三个环节:模型先**思考**当前应该做什么,然后调用工具**行动**,再**观察**工具返回的结果并继续思考下一步。这个"想→做→看→想→做→看"的循环不断重复,直到任务完成。
让我们通过一个多币种收入汇总的具体例子来理解 Agent 的**轨迹**(trajectory)。轨迹是 Agent 在执行任务过程中不断积累的消息历史------用户消息、模型回复(包括思考过程和工具调用)、工具执行结果。每一次调用 LLM 时,它接收的完整上下文由**静态前缀**(系统提示词 + 工具定义)和**轨迹**(动态消息历史)两部分组成(图 1-3)。这揭示了一个关键事实:**Agent 的上下文 = 静态前缀 + 轨迹**。具体地说,静态前缀对应前文五个组件中的前两项(系统提示词 + 工具定义),轨迹对应后三项(用户消息 + 模型回复 + 工具执行结果,随交互不断增长)。基于这个完整上下文,LLM 生成下一步的响应,然后这个响应又追加到轨迹中,供下一次调用使用。
Agent 轨迹------多币种汇总任务的 ReAct 循环(images/fig1-3.svg)
让我们通过伪代码来理解 Agent 轨迹的结构:
```
轨迹 = [
{role: "user" , content: "根据公司季度收入:Q1 2.5M 美元,Q2 2.1M 欧元,Q3 1.8M 英镑,Q4 380M 日元,计算公司年度总收入和季度平均收入" },
第一次迭代 - LLM 看到上述轨迹,生成响应
{role: "assistant" ,
reasoning: "需要将所有货币转换为 USD..." ,
content: "" , # 没有直接回复用户
tool_calls: [
{name: "convert_currency" , args: {amount: 2100000, from: "EUR" , to: "USD" }},
{name: "convert_currency" , args: {amount: 1800000, from: "GBP" , to: "USD" }},
{name: "convert_currency" , args: {amount: 380000000, from: "JPY" , to: "USD" }}
]},
Agent 框架执行工具,添加结果到轨迹
{role: "tool" , content: "EUR->USD: 2282608.7" },
{role: "tool" , content: "GBP->USD: 2278481.01" },
{role: "tool" , content: "JPY->USD: 2541806.02" },
第二次迭代 - LLM 看到完整轨迹,包括工具结果
{role: "assistant" ,
reasoning: "已获得转换结果,现在需要汇总计算..." ,
content: "" ,
tool_calls: [
{name: "code_interpreter" , args: {code: "total = 2500000 + 2282608.7 + ..." }}
]},
{role: "tool" , content: "Total: 9,602,895.73, Average: 2,400,723.93..." },
第三次迭代 - LLM 看到完整轨迹,生成最终答案
{role: "assistant" ,
reasoning: "所有计算完成,总结结果..." ,
content: "FINAL ANSWER: 总收入$9,602,895.73..." }
]
```
注意,轨迹中没有显示系统提示词和工具定义------它们作为静态前缀,在每次 LLM 调用时都会被自动拼接在轨迹前面。
在我们的实验中,这个循环展现得淋漓尽致。第一轮,Agent 分析任务后并行调用三个货币转换工具;第二轮,基于转换结果调用代码解释器进行复杂计算;第三轮,确认所有计算完成后生成最终答案。整个过程仅用了 3 次迭代、4 次工具调用就完成了复杂的多步骤任务。
这种设计的精妙之处在于**上下文的累积性**。每次 LLM 调用都能看到完整的轨迹,这让它能够理解当前处于任务的哪个阶段、之前尝试了什么、得到了什么结果。就像人类解决问题时会不断回顾和总结,Agent 通过轨迹保持着对整个任务的全局认知。同时,轨迹的结构化特性也让系统具有高度的可解释性和可调试性:用户消息、模型回复(思考过程 + 工具调用)和工具执行结果都被清晰地区分开来。
轨迹不仅是执行的记录,更是 Agent 能力的体现。通过分析大量的轨迹,我们可以发现 Agent 的行为模式、优化决策路径、改进工具设计。轨迹数据甚至可以总结到知识库中,或者通过强化学习来训练更好的 Agent 模型,实现从经验中学习的闭环优化。