React范式:思考与行动的循环
| 范式名称 | 核心思想 | 类比理解 | 核心工作流程 | 典型应用场景 |
|---|---|---|---|---|
| ReAct范式 | **推理(Reasoning)与行动(Action)**交替进行,通过外部反馈(Observation)来指导下一步决策。 | 人类解题:拿到一道数学题,先思考(推理)解题步骤,然后动笔计算(行动),检查结果(观察),再根据结果决定是继续下一步还是修正错误。 | Thought -> Act -> Observe循环 | 需要与外部环境(如数据库、API、工具)交互的复杂任务,例如:数据分析、智能客服、自动运维。 |
| Plan-and-Solve (或 Plan-and-Execute) | 先规划,后执行。一次性制定完整的步骤计划,然后按计划逐步执行,通常缺乏执行中的动态调整。 | 建造房子:建筑师先画出全套设计图纸(规划),施工队再严格按照图纸施工(执行)。如果图纸有误或遇到意外,整个工程可能受阻。 | Plan -> Step1 -> Step2 -> ... -> Result | 目标明确、步骤清晰、环境稳定的任务,例如:按照固定模板生成报告、执行预设的数据处理流水线。 |
| Reflection (或 Self-Reflection) | 行动后反思。在执行完一个或一系列行动后,对结果进行批判性评估,发现问题并生成改进方案,然后重新执行。 | 学生写作文:写完初稿后,通读一遍(观察结果),反思哪里逻辑不通、语句不顺(推理),然后修改文章(新的行动)。 | Act -> Observe -> Critique -> Reflect -> (Re)Act | 对输出质量要求高、需要迭代优化的任务,例如:代码调试、文章润色、方案设计评审。 |
| Multi-Agent | 多角色协作。多个具备不同角色和能力的智能体通过通信协议(如A2A)进行分工合作,共同完成复杂任务。 | 医院会诊:内科、外科、影像科等多位专家(多个Agent)各自检查病人,然后开会讨论(通信),共同制定治疗方案(协作决策)。 | AgentA -> (Communicate) -> AgentB -> (Cooperate) -> Result | 涉及多领域知识、需要分工或辩论的复杂任务,例如:复杂项目评估、辩论赛模拟、集成多源数据的决策系统。 |
核心循环拆解:以ReAct为例
ReAct范式的核心是一个循环迭代的过程,其标准步骤可用以下伪代码表示:
# ReAct 核心循环伪代码 def react_agent(initial_question): # 初始化 context = initial_question max_steps = 10 for step in range(max_steps): # 1. Thought(推理):分析当前情况,决定下一步做什么 thought = llm_reason(context, available_tools) # print(f"Thought {step}: {thought}") # 2. Act(行动):执行决策,通常是调用一个工具或API action, action_input = parse_thought_to_action(thought) # print(f"Act {step}: 调用工具【{action}】,输入:{action_input}") # 假设我们有一个工具调用函数 if action in available_tools: observation = available_tools[action](action_input) # else: observation = "错误:未知工具。" # 3. Observe(观察):获取行动结果,作为下一次推理的输入 print(f"Observe {step}: {observation}") context += f" 行动结果:{observation}" # 检查任务是否完成 if is_task_complete(observation, initial_question): final_answer = llm_generate_final_answer(context) print(f"最终答案:{final_answer}") return final_answer return "任务未能在最大步数内完成。" # 示例:可用工具字典 available_tools = { "search_web": search_function, "calculate": calculator_function, "lookup_database": db_query_function, # }范式间的关系与演进
这四种范式并非互斥,而是常常在高级的**智能体工作流(Agentic Workflows)**中被组合使用,形成更强大的问题解决能力 。
- 基础单元:ReAct是构建智能体最基础的“原子”循环,它赋予了智能体与环境交互和动态决策的能力 。
- 增强与组合:
- Plan-and-Execute + ReAct:可以先制定一个高层计划(Plan),然后在执行每个步骤时使用ReAct循环来处理其中的不确定性 。这就像项目经理制定了季度目标(规划),但每个工程师在完成具体模块时仍需灵活解决技术难题(推理-行动)。
- ReAct + Reflection:在每次或每几次
Act-Observe后,加入一个Reflection步骤,评估当前进展和质量,从而纠正错误或优化后续策略 。这就像学生在解题过程中,每做两步就回头检查一下计算和逻辑。
- 复杂系统:Multi-Agent是更高层次的架构范式,其中的每个智能体(Agent)内部可能采用ReAct、Plan或Reflection等范式。它们通过A2A(Agent-to-Agent)通信协议进行结构化信息交换与协作,共同完成超大型任务 。
通俗示例:如何用这些范式点外卖
假设任务是:“帮我订一份适合感冒患者吃的、清淡的午餐,预算50元以内。”
只用 Plan-and-Solve:
规划:1. 打开外卖APP。2. 搜索“粥”。3. 按价格排序。4. 选择第一个。5. 下单。 执行:严格按上述步骤执行。风险:可能选到一份“皮蛋瘦肉粥”,虽然清淡但皮蛋对感冒未必好,规划时未考虑“食材适应性”。使用 ReAct:
思考:用户感冒了,需要清淡、易消化的食物。粥或清汤面比较合适。先看看附近有什么店。 行动:调用【搜索外卖商家】工具,关键词“粥 面 清淡”。 观察:返回A店的“青菜粥”20元,B店的“鸡汤面”35元,C店的“海鲜粥”45元。 思考:海鲜是发物,感冒时可能不宜食用。鸡汤面听起来不错,有营养。检查一下用户评价。 行动:调用【查看商家评价】工具,商家B。 观察:评价显示鸡汤面较油腻。 思考:评价说油腻,那可能不适合。青菜粥最安全。在预算内。决定下单A店的青菜粥。 行动:调用【下单】工具,商品“青菜粥”。(这个过程展示了ReAct如何根据观察到的信息动态调整决策)。
加入 Reflection:
在ReAct流程下单后,可以增加一个反思步骤:“我刚刚推荐了青菜粥,虽然安全但营养单一。是否应该再建议用户搭配一份蒸蛋?或者询问用户是否有其他口味偏好?” 这可以优化本次建议,或为下次服务积累经验 。使用 Multi-Agent:
- 营养专家Agent:分析感冒饮食需求,推荐“粥类、清汤面、蒸蛋”。
- 美食侦探Agent:负责搜索和筛选符合要求、评价好的外卖商家。
- 预算管家Agent:确保总价在50元以内,并计算优惠。
- 三个Agent通过通信(A2A)交换信息(营养清单、商家列表、价格),共同协商出最优解——比如“青菜粥+蒸蛋”的组合 。
总结来说,ReAct是让AI学会“边想边做”的核心范式;Plan-and-Solve提供了宏观蓝图;Reflection赋予了其“复盘优化”的能力;而Multi-Agent则是构建分工协作的AI团队的架构思想。在实际的AI智能体系统中,这些范式像积木一样被灵活组合,以应对不同复杂度的现实世界任务。
参考来源
- 收藏备用!ReAct范式深度解析+LangGraph落地实战,小白也能学会的大模型Agent构建指南
- 收藏!大模型智能体(Agent)入门:从概念到ReAct范式实操全解析
- 第四章深度解析:智能体经典范式实战指南——从ReAct到Reflection的全流程拆解
- AI Agent核心技术范式深度解析:从ReAct到智能体工作流,小白也能轻松掌握并收藏
- ReAct、Plan-and-Execute、Reflection、Multi-Agent:AI Agent 核心工程范式解析,小白程序员必备收藏
- AI Agent开发实战:基于ReAct范式的智能体构建与优化
