)
AI Agent 入门手把手实现 ReAct 模式思考→行动→观察循环2026 年最热的技术方向就是 AI Agent。而所有 Agent 的基石是一个叫 ReAct 的循环模式。这篇文章用最小 Python 代码带你从零实现一个能思考、调用工具、观察结果的 Agent。一、背景Agent 为什么聪明你有没有发现直接问大模型帮我查一下北京的天气并订机票它做不到——因为大模型本身不能执行动作只能生成文字。ReActReasoning Acting2022 年提出解决的就是这个问题让大模型在思考和行动之间交替通过调用外部工具API、数据库、代码来真正完成任务。二、核心原理Thought→Action→ObservationReAct 循环的三个阶段Thought思考模型分析当前状态决定下一步做什么Action行动模型输出一个工具调用如 search(“北京天气”)Observation观察系统执行工具把结果返回给模型如此循环直到模型认为任务完成输出最终答案。Thought: 用户想查北京天气我需要调用天气查询工具 Action: search_weather(北京) Observation: 北京今天 28°C晴 Thought: 天气已获取可以回答用户了 Answer: 北京今天 28°C天气晴朗 ☀️三、代码实战最小 ReAct 引擎classReActAgent:def__init__(self,tools):self.toolstools# 工具注册表self.max_steps5# 最大循环步数防死循环defthink(self,query,history):# 真实场景这里调用 LLM此处用规则模拟思考forname,fninself.tools.items():ifnameinquery:returnfACTION:{name}({query.split(name)[1].strip()})returnANSWER: 我无法处理这个请求defrun(self,query):history[]for_inrange(self.max_steps):stepself.think(query,history)print(fThought →{step})ifstep.startswith(ACTION:):actionstep[7:].strip()tool,argaction.split((,1)argarg.rstrip())obsself.tools[tool](arg)# 执行工具print(fObservation →{obs})history.append(obs)elifstep.startswith(ANSWER:):returnstep[7:].strip()return达到最大步数任务未完成# 定义工具tools{search_weather:lambdacity:f{city}今天 28°C晴}agentReActAgent(tools)print(最终回答:,agent.run(帮我查一下 search_weather 北京))防死循环max_steps 限制循环次数是工程必备——真实 Agent 中模型可能反复调用同一个工具必须有兜底。四、关键经验避坑工具描述要清晰模型靠描述决定调哪个工具描述写得好调用才准参数要校验工具收到的参数必须做类型和范围校验防注入循环必须有上限无限制的 Agent 会烧光你的 Token观察结果要结构化返回给模型的观察结果格式要统一便于它理解可观测性记录每一步的 Thought/Action/Observation出问题才能回溯五、完整系列推荐本文选自《AI Agent 工程实战从 LLM API 到生产级智能体》100 期系统教程覆盖 ReAct、工具调用、RAG、MCP、多智能体、生产部署每期配可运行 Python 仿真。该系列及65 技术知识库已在ima 知识号发布搜索「Kruptos」即可订阅。8 款 AI 技能含 self-evolving-agent 自进化 Agent、humanize-writing 去 AI 味写作已上线ima 技能广场搜索即装。作者Kruptos西电毕业13 年无线通信/DSP/嵌入式科研现深耕 AI 与云原生原创内容转载注明出处。