大语言模型中的ReAct框架

1.简介 请注意,这里的ReAct并非指前端开发框架react,而是由reasoning(推理)和acting(行动)两个英文单词组合而成的术语。ReAct是一种创新的通用框架, 它将语言模型中的推理与行动相结合,旨在高效解决各类复杂的语言推理及决策任务。 2. ReAct实际过程 while 未达成目标 { // 1. 调用LLM进行推理 reasoning(); // 2. 调用外部工具采取行动,并将行动结果,放入与LLM交互的上下文中,作为LLM推理的素材 acting(); } 其本质是执行多轮 reasoning + acting,把acting的结果放入与LLM交互的上下文中,作为LLM下一轮推理的素材 ReAct克服了链式思考推理中普遍存在的幻觉和错误传播问题,生成了更具可解释性的类似人类思考过程的任务解决轨迹, 并能够提高大型语言模型在多种任务上的准确性。 3. 示例 3.1 迷宫说明 为了说明ReAct框架,萌叔构建了一个迷宫 🧱🧱🧱🧱🧱🧱🧱 🧱😎🛣️🧱🧱🧱🧱 🧱🧱🛣️🛣️🛣️🧱🧱 🧱🧱🧱🧱🛣️🧱🧱 🧱🧱🛣️🛣️🛣🧱🧱 🧱🧱🧱🧱🛣️🏁🧱 🧱🧱🧱🧱🧱🧱🧱 player当前的位置是(1,1), 终点的位置为(5,5) 每次可以移动一步,只能是下面4种动作之一 (1, 0) (0, 1) (-1, 0) (0, -1) 限制 player的视野是有限的,仅能观察到其周围的局部区域。 形如 🧱🧱🧱🏿🏿🏿🏿 🧱😎🛣️🏿🏿🏿🏿 🧱🧱🛣️🏿🏿🏿🏿 🏿🏿🏿🏿🏿🏿🏿 🏿🏿🏿🏿🏿🏿🏿 🏿🏿🏿🏿🏿🏿🏿 🏿🏿🏿🏿🏿🏿🏿 正因视野受限,player在迷宫中的行进过程只能是探索式的: 每走一步,便观察一下周围环境,再据此尝试下一步的行动,如此反复,直至抵达终点。 3.2 代码片段 完整代码 example # 初始化 Kimi 模型 llm = ChatOpenAI( model_name="gpt-3.5-turbo", # 或其他 Kimi 模型名 # openai_api_base=kimi_api_base, temperature=0.1 ) agent = initialize_agent( tools=[move_tool, observe_tool], # 工具列表 llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, # 指定智能体类型 max_iterations = 200, verbose=True # verbose=True 可以打印出详细的推理过程 ) # 3. 运行智能体 - 使用新的invoke方法 question = """ 你作为player当前处于一个 7*7的 二维矩阵中,'X'是你的位置,'#' 都是墙体,只有 '0' 是通道, '-' 表示未知 初始坐标为(1,1),你需要设法到达(5,5) 注意: 只能沿着通道移动 你每次可以移动一步,只能是下面4种动作之一 (1, 0), (0, 1), (-1, 0), (0, -1) 请你给出一个完整的移动轨迹,如果可以尝试推测一下矩阵的情况 """ response = agent.invoke({"input": question}) print(response) 注意: 复杂的任务可能需要修改 max_iterations ...

October 10, 2025 · 6 min