news 2026/9/30 9:52:44

Agent 经典范式构建之 ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent 经典范式构建之 ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整

Agent 经典范式构建之 ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整

@[TOC](Agent 经典范式构建之 ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整)


前言

11月份低,我开始尝试使用cursor帮我写一些苦力的业务的代码, 初始使用感觉AI编程已经基本啥都可以干,再加上企业的推广自家编码工具的流量特别大, 当时网络上一些主播跟着流量,导致整个网络满天飞AI可以取代程序员了,当时还是特别慌的了。当时随着我使用两个月, 我最近拿它做一下从0到1的开发两个技术性的项目最终都是以失败告终, 发现基本只是demo, 不能商业化使用而且发现项目代码基本最后你都能读懂,但是你就是不知道怎么改的情况。

第一次使用时候, 我是拿它写一些业务上的事情、项目上应急的和注释啥的, 感觉都可以胜任。 目前感觉写一些网页的画面可以使用它,其它一些还是自己写比较靠谱。

智能体(Agent)的经典范式之ReAct(思考和行动) 紧密结合的范式,让智能体边想边做的动态调整

最经典的一个智能体范式ReAct (Reason + Act)。ReAct由Shunyu Yao于2022年提出[1],其核心思想是模仿人类解决问题的方式,将推理 (Reasoning) 与行动 (Acting) 显式地结合起来,形成一个“思考-行动-观察”的循环。

一、ReAct 的工作流程

  1. Observation(观察)
  2. Thought / Reasoning(推理)
  3. Action(行动)
  4. Tool / Environment(工具/环境)
  5. Observation(反馈)
  6. 循环,直到 Final Answer

ReAct的巧妙之处在于,它认识到思考与行动是相辅相成的。思考指导行动,而行动的结果又反过来修正思考。为此,ReAct范式通过一种特殊的提示工程来引导模型,使其每一步的输出都遵循一个固定的轨迹:

  • Thought (思考): 这是智能体的“内心独白”。它会分析当前情况、分解任务、制定下一步计划,或者反思上一步的结果。
  • Action (行动): 这是智能体决定采取的具体动作,通常是调用一个外部工具,例如 Search[‘华为最新款手机’]。
  • Observation (观察): 这是执行Action后从外部工具返回的结果,例如搜索结果的摘要或API的返回值。

智能体将不断重复这个 Thought -> Action -> Observation 的循环,将新的观察结果追加到历史记录中,形成一个不断增长的上下文,直到它在Thought中认为已经找到了最终答案,然后输出结果。这个过程形成了一个强大的协同效应:推理使得行动更具目的性,而行动则为推理提供了事实依据。

  • 需要外部知识的任务:如查询实时信息(天气、新闻、股价)、搜索专业领域的知识等。
  • 需要精确计算的任务:将数学问题交给计算器工具,避免LLM的计算错误。
  • 需要与API交互的任务:如操作数据库、调用某个服务的API来完成特定功能。

因此我们将构建一个具备使用外部工具能力的ReAct智能体,来回答一个大语言模型仅凭自身知识库无法直接回答的问题。例如:“华为最新的手机是哪一款?它的主要卖点是什么?” 这个问题需要智能体理解自己需要上网搜索,调用工具搜索结果并总结答案

二、ReAct系统提示词

REACT_PROMPT_TEMPLATE=""" 请注意,你是一个有能力调用外部工具的智能助手。 可用工具如下: {tools} # 输出格式要求: 你的每次回复必须严格遵循以下格式,包含一对Thought和Action: Thought: [你的思考过程和下一步计划] Action: [你要执行的具体行动] Action的格式必须是以下之一: 1. 调用工具:function_name(arg_name="arg_value") 2. 结束任务:Finish[最终答案] # 重要提示: - 每次只输出一对Thought-Action - Action必须在同一行,不要换行 - 当收集到足够信息可以回答用户问题时,必须使用 Action: Finish[最终答案] 格式结束 现在,请开始解决以下问题: Question: {question} History: {history} """

三、ReActAgent代码实现

classReActAgent:def__init__(self,llm_client:AgentsLLM,tool_executor:ToolExecutor,max_steps:int=5):self.llm_client=llm_client self.tool_executor=tool_executor self.max_steps=max_steps self.history=[]defrun(self,question:str):self.history=[]current_step=0whilecurrent_step<self.max_steps:current_step+=1print(f"\n--- 第{current_step}步 ---")tools_desc=self.tool_executor.getAvailableTools()history_str="\n".join(self.history)prompt=REACT_PROMPT_TEMPLATE.format(tools=tools_desc,question=question,history=history_str)messages=[{"role":"user","content":prompt}]response_text=self.llm_client.think(messages=messages)print(f"完整响应文本:{response_text}");ifnotresponse_text:print("错误:LLM未能返回有效响应。");breakthought,action=self._parse_output(response_text)ifthought:print(f"🤔 思考:{thought}")ifnotaction:print("警告:未能解析出有效的Action,流程终止。");breakifaction.startswith("Finish"):# 如果是Finish指令,提取最终答案并结束final_answer=self._parse_action_input(action)print(f"🎉 最终答案:{final_answer}")returnfinal_answer tool_name,tool_input=self._parse_action(action)ifnottool_nameornottool_input:self.history.append("Observation: 无效的Action格式,请检查。");print("警告:解析到的Action格式无效,跳过此步骤。");continueprint(f"🎬 行动:{tool_name}[{tool_input}]")tool_function=self.tool_executor.getTool(tool_name)observation=tool_function(tool_input)iftool_functionelsef"错误:未找到名为 '{tool_name}' 的工具。"print(f"👀 观察:{observation}")self.history.append(f"Action:{action}")self.history.append(f"Observation:{observation}")print("已达到最大步数,流程终止。")returnNonedef_parse_output(self,text:str):thought_match=re.search(r"Thought: (.*)",text)action_match=re.search(r"Action: (.*)",text)thought=thought_match.group(1).strip()ifthought_matchelseNoneaction=action_match.group(1).strip()ifaction_matchelseNonereturnthought,actiondef_parse_action(self,action_text:str):match=re.match(r"(\w+)\[(.*)\]",action_text)return(match.group(1),match.group(2))ifmatchelse(None,None)def_parse_action_input(self,action_text:str):match=re.match(r"\w+\[(.*)\]",action_text)returnmatch.group(1)ifmatchelse""if__name__=='__main__':llm=AgentsLLM()tool_executor=ToolExecutor()search_desc="一个网页搜索引擎。当你需要回答关于时事、事实以及在你的知识库中找不到的信息时,应使用此工具。"tool_executor.registerTool("Search",search_desc,search)agent=ReActAgent(llm_client=llm,tool_executor=tool_executor,max_steps=10)question="华为最新的手机是哪一款?它的主要卖点是什么?"agent.run(question)

四、工具执行实现

classToolExecutor:""" 一个工具执行器,负责管理和执行工具。 """def__init__(self):self.tools:Dict[str,Dict[str,Any]]={}defregisterTool(self,name:str,description:str,func:callable):""" 向工具箱中注册一个新工具。 """ifnameinself.tools:print(f"警告:工具 '{name}' 已存在,将被覆盖。")self.tools[name]={"description":description,"func":func}print(f"工具 '{name}' 已注册。")defgetTool(self,name:str)->callable:""" 根据名称获取一个工具的执行函数。 """returnself.tools.get(name,{}).get("func")defgetAvailableTools(self)->str:""" 获取所有可用工具的格式化描述字符串。 """return"\n".join([f"-{name}:{info['description']}"forname,infoinself.tools.items()])

运行效果图

总结

Agent:https://github.com/chensongpoixs/agent/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 20:26:30

**AI漫剧生成工具2025推荐,解锁高效创作与视觉叙事新体

AI漫剧生成工具2025推荐&#xff0c;解锁高效创作与视觉叙事新体验在内容创作领域&#xff0c;一场由AI驱动的视觉叙事革命正在加速。据《2025中国数字内容产业白皮书》显示&#xff0c;2025年AI生成视频内容的市场需求同比增长超过300%&#xff0c;其中AI漫剧因其独特的视觉风…

作者头像 李华
网站建设 2026/9/27 7:10:27

Linux下串口波特率配置命令操作指南

以下是对您提供的博文内容进行 深度润色与结构优化后的技术文章 。整体遵循“去AI化、强工程感、重逻辑流、轻模板化”的原则,彻底摒弃引言/总结等程式化段落,以一位嵌入式Linux一线工程师的口吻娓娓道来——既有踩坑后的顿悟,也有调试时的真实节奏;既讲清楚“怎么做”,…

作者头像 李华
网站建设 2026/9/27 20:28:58

Qwen3-4B惊艳效果展示:多语言代码注释自动生成(含中文)

Qwen3-4B惊艳效果展示&#xff1a;多语言代码注释自动生成&#xff08;含中文&#xff09; 1. 开场&#xff1a;一段代码&#xff0c;三秒加注释&#xff0c;中英法德日全搞定 你有没有过这样的时刻&#xff1a;翻出半年前写的Python脚本&#xff0c;第一行就卡住——这函数到…

作者头像 李华
网站建设 2026/9/26 10:50:33

YOLOv9训练太难?这个镜像让你省心又高效

YOLOv9训练太难&#xff1f;这个镜像让你省心又高效 你是不是也经历过这样的深夜&#xff1a;显卡风扇狂转&#xff0c;终端里反复报错CUDA out of memory&#xff1b;改了十遍data.yaml路径&#xff0c;train_dual.py还是提示No images found&#xff1b;好不容易跑通一轮训练…

作者头像 李华
网站建设 2026/9/27 11:13:50

精准破局公众号排名:算法加权+用户价值双向驱动策略

在微信搜一搜生态中&#xff0c;公众号排名直接决定自然流量天花板&#xff0c;数据显示搜索结果前3位账号占据超70%点击量&#xff0c;排名10名后曝光量不足5%。多数运营者陷入“关键词堆砌却排名低迷”的困境&#xff0c;核心是忽视了算法“用户价值优先”的底层逻辑。本文从…

作者头像 李华
网站建设 2026/9/30 4:29:44

VibeVoice一键部署脚本解析:start_vibevoice.sh自动化原理揭秘

VibeVoice一键部署脚本解析&#xff1a;start_vibevoice.sh自动化原理揭秘 1. 为什么需要一个启动脚本&#xff1f; 你有没有试过部署一个AI项目&#xff0c;光是看文档就花了半小时&#xff0c;复制粘贴命令时还漏掉了一个环境变量&#xff1f;最后卡在“ModuleNotFoundErro…

作者头像 李华