Note

ReAct 如何结合推理与行动完成复杂任务?

通过思考、行动、观察的循环介绍 ReAct 框架及其工作流程。

请详细解释 ReAct 框架。它是如何将思维链和行动结合起来,以完成复杂任务的?

ReAct (Reason and Act) 是一个强大且基础的Agent行为框架,它通过一种巧妙的提示(Prompting)策略,让LLM能够协同地生成推理轨迹(reasoning traces)和任务相关的行动(actions)。

核心思想:

ReAct的核心思想是,人类在解决复杂问题时,并不仅仅是“思考”或“行动”,而是将两者紧密地交织在一起。我们会先思考一下,然后采取一个行动,观察结果,再根据结果进行思考,决定下一步行动。ReAct就是模仿人类这种“思考 -> 行动 -> 观察 -> 思考…”的循环模式。

工作流程:

ReAct通过一个精心设计的Prompt来引导LLM生成特定格式的文本。这个循环的每一步如下:

  1. 思考 (Thought):

    • LLM首先分析当前的任务目标和已有的信息(观察)。
    • 然后,它会生成一段内心独白,即“思考”部分。这部分内容是LLM对当前情况的分析、策略的制定或对下一步行动的规划。例如:“我需要查找一下今天新加坡的天气。我应该使用搜索工具。”
    • 思考过程让Agent的行为变得可解释,并且有助于LLM自己进行复杂的规划和错误修正。
  2. 行动 (Action):

    • 在“思考”之后,LLM会决定并生成一个具体的、可执行的“行动”。
    • 这个行动通常被格式化为 Action: [Tool_Name, Tool_Input] 的形式。例如:Action: [Search, "weather in Singapore today"]。
    • Tool_Name 是要调用的工具名称,Tool_Input 是传递给该工具的参数。
  3. 观察 (Observation):

    • Agent的外部执行器(harness)会解析LLM生成的“行动”,并实际调用对应的工具。
    • 工具执行后返回的结果,被格式化为“观察”信息,并反馈给LLM。例如:Observation: "Today in Singapore, the weather is sunny with a high of 32°C."

循环与结合:

这个“观察”结果会作为新的上下文,与原始目标一起,输入到LLM中,开始下一轮的“思考 -> 行动 -> 观察”循环。

如何结合思维链(CoT)和行动?

  • 思维链 (Chain of Thought, CoT) 是一种让LLM通过生成中间推理步骤来解决复杂问题的方法。
  • ReAct中的思考 (Thought)部分,本质上就是一种动态的、交互式的思维链。
  • 传统的CoT是一次性生成所有思考步骤,然后得出答案。而ReAct的“思考”是每一步行动前都会进行的、基于最新观察结果的思维链。
  • 这种结合使得Agent能够:
    • 处理动态环境: 可以根据工具返回的最新信息实时调整策略。
    • 进行错误修正: 如果一个行动失败或返回了无用的信息,Agent可以在下一步的“思考”中分析失败原因,并尝试不同的行动。
    • 完成复杂任务: 通过将大任务分解成一系列“思考-行动”的子步骤,ReAct能够完成需要多步推理和工具交互的复杂任务。