
从零手写一个支持ReAct模式的轻量级智能体框架其核心在于构建一个能够驱动大型语言模型LLM进行“思考-行动-观察”循环迭代的系统。这个过程涉及多个紧密协作的模块。以下是构建该框架必须掌握的五大核心模块及其技术要点1. 核心逻辑层智能体的“决策大脑”这是框架的顶层设计负责驱动整个ReAct循环的逻辑。其核心是提示工程模块旨在激活LLM的推理与规划能力而无需对其进行微调。模块功能描述比喻技术要点与实现推理引擎基于任务目标和历史上下文生成逻辑连贯的推理轨迹Thought明确下一步行动的依据。侦探的案情分析板根据现有线索推理出下一步侦查方向。1.提示词模板设计构建强约束的提示词强制LLM按“Thought: ... Action: ... ”格式输出。2.系统指令注入在提示词开头明确智能体的角色、可用工具列表及输出格式规范。行动规划器将推理结果Thought转化为标准化的、可执行的行动指令Action包括工具名称和输入参数。任务派发单将分析结论转化为具体的、可操作的指令。1.结构化输出解析要求LLM输出严格的JSON或特定分隔符格式以便程序自动解析出action和action_input。2.工具描述集成在提示词中清晰描述每个工具的功能和输入格式帮助LLM做出正确选择。核心代码结构示例# 提示词模板示例 REACT_PROMPT_TEMPLATE 你是一个智能助理。请使用以下工具完成任务 {tools_descriptions} 任务{user_input} 你必须严格按照以下格式回应 Thought: 分析当前情况和下一步该做什么 Action: 要使用的工具名称 Action Input: 工具的输入参数 开始 历史记录 {history} 当前情况{observation} 2. 执行循环层智能体的“中枢调度”此模块是ReActReasoning Action循环的物理实现负责串联“推理→行动→观察→再推理”的完整流程。模块功能描述比喻技术要点与实现循环控制器管理ReAct循环的启动、执行和终止。交通环岛的控制中心确保车辆任务状态按规则循环并在到达目的地时驶出。1.最大迭代次数设置循环上限防止智能体陷入无限循环。2.终止条件判断在每次循环后检查LLM的输出是否包含最终答案如“Final Answer:”或任务已完成的信号。上下文管理器存储、管理和裁剪历史交互记录TAO轨迹确保LLM始终在有效的上下文窗口内工作。智能录音笔只保留最近和最相关的对话片段避免内存爆满。1.状态维护维护一个包含用户输入、历史TAO序列、当前观察等信息的“状态”对象。2.上下文裁剪策略当历史记录过长时采用“近期完整保留早期关键信息摘要”的策略进行压缩。核心代码结构示例class ReActAgent: def __init__(self, llm, tools, max_iterations10): self.llm llm self.tools {tool.name: tool for tool in tools} self.max_iterations max_iterations self.history [] # 存储历史 (Thought, Action, Observation) def run(self, user_input): state {input: user_input, observation: , answer: None} for i in range(self.max_iterations): # 1. 生成Thought和Action prompt self._build_prompt(state) llm_response self.llm.invoke(prompt) thought, action, action_input self._parse_response(llm_response) # 检查是否已得出最终答案 if Final Answer: in thought: state[answer] thought.split(Final Answer:)[-1].strip() break # 2. 执行Action工具调用 if action in self.tools: observation self.tools[action].run(action_input) else: observation fError: Unknown action {action}. # 3. 更新状态和历史 self.history.append((thought, action, observation)) state[observation] observation # 4. 构建新的提示词进入下一轮循环 return state[answer]3. 工具集成层智能体的“手脚”智能体通过调用工具与外部世界交互扩展其能力边界。此层负责工具的抽象、注册和调用。模块功能描述比喻技术要点与实现工具抽象定义统一的工具接口任何函数或API只要遵循此接口就能被智能体调用。电源插座标准所有电器工具只要插头匹配接口一致就能通电被调用。1.标准化工具类每个工具应有name、description、parameters和一个run方法。2.工具描述生成自动或手动生成清晰、简洁的工具功能描述用于提示词。工具执行器根据LLM解析出的行动指令动态查找并执行对应的工具捕获执行结果或错误。万能遥控器接收到“打开空调”的指令后自动找到空调遥控器并按下开关。1.工具路由根据action名称在工具注册表中查找对应工具。2.安全执行在沙箱或受控环境中执行工具特别是执行代码类工具时。3.错误处理捕获工具执行异常并将友好的错误信息作为“观察”返回给LLM。核心代码结构示例from typing import Any, Dict import requests class BaseTool: 工具基类 name: str description: str def run(self, input_str: str) - str: 执行工具的主要逻辑返回字符串格式的观察结果 raise NotImplementedError class SearchTool(BaseTool): name search_web description 在互联网上搜索信息。输入是一个搜索查询词。 def run(self, query: str) - str: try: # 模拟搜索实际应调用搜索引擎API results f关于{query}的搜索结果... return results except Exception as e: return f搜索工具执行出错{str(e)} class CalculatorTool(BaseTool): name calculator description 执行数学计算。输入是一个数学表达式如 2 3 * 4。 def run(self, expression: str) - str: try: result eval(expression) # 注意生产环境应使用更安全的评估方法 return f计算结果{result} except Exception as e: return f计算错误{str(e)}4. 记忆与状态管理层智能体的“工作记忆”为了使智能体能在多轮交互中保持连贯性必须有能力记住过去的交互。模块功能描述比喻技术要点与实现短期记忆存储当前会话或任务循环中的完整TAO序列直接作为上下文提供给LLM。白板记录当前会议的所有讨论要点。1.序列存储使用列表或队列存储每一步的 (Thought, Action, Observation) 三元组。2.上下文构建在生成下一轮提示时将短期记忆中的序列格式化后插入历史记录部分。状态对象封装智能体运行过程中的所有动态数据是循环各模块间传递信息的载体。快递包裹面单上面写着收件人、货物信息、当前到达哪个中转站。1.结构化定义使用字典或Pydantic模型定义状态包含input、history、observation、intermediate_steps等字段。2.不可变性或版本管理每次循环产生新状态便于调试和实现更复杂的流程如分支、循环。5. 输出解析与流程控制层智能体的“质检员与交警”此层负责理解LLM的输出并控制流程走向确保系统的鲁棒性。模块功能描述比喻技术要点与实现输出解析器将LLM的自由文本输出解析为程序可理解的、结构化的数据Thought, Action等。文书翻译官将一份自由书写的报告翻译成格式规范的表格。1.正则表达式匹配使用正则从文本中提取关键字段。2.后备解析逻辑当标准格式解析失败时尝试启发式方法或要求LLM重试。3.支持结构化输出直接使用支持JSON等结构化输出的LLM API。流程控制器根据解析结果和当前状态决定下一步是继续循环、调用工具还是返回最终答案。十字路口的智能信号灯根据车流状态决定是放行继续循环还是切换红灯终止。1.终止判定检测LLM输出中是否包含“Final Answer”、“Answer:”等终止关键词。2.异常流程处理处理未知工具、解析失败、工具执行错误等情况决定是重试、报错还是继续。总结与推演手写一个轻量级ReAct智能体框架就是将这五个模块像拼装乐高一样组合起来。工作流始于用户输入核心逻辑层生成推理和行动指令输出解析器将其结构化流程控制器判断是否需要调用工具。若需调用工具集成层执行具体操作并返回结果记忆与状态管理层更新历史然后执行循环层开启下一轮迭代直到流程控制器判定任务完成。掌握这些模块你就掌握了构建自主智能体的核心蓝图。参考来源【2026年版收藏级】ReAct智能体框架详解小白程序员必学大模型实战指南_react框架-CSDN博客从零构建智能对话助手LangGraph ReAct 实现具备记忆功能的 AI 智能体-阿里云开发者社区必收藏ReAct大模型智能体框架详解小白也能看懂程序员直接复用_react框架-CSDN博客