ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ReAct架构详解:打造能“边思考、边行动“的AI智能体!

ReAct架构详解:打造能“边思考、边行动“的AI智能体! ReAct(ReasonAct)架构通过思考-行动-观察的循环迭代让AI智能体实现边思考、边行动的能力。文章对比了单次工具调用与ReAct架构后者能将复杂任务分解为多个步骤逐步解决。实验证明ReAct在多跳问答等任务上表现更优但存在延迟和成本较高问题。文章提供了完整代码实现和评估方法帮助开发者构建更强大的AI智能体。什么是ReActReAct的全称是Reason Act推理行动这是一个在2022年由Yao等人提出的开创性架构。它的核心创新在于让智能体在解决问题时不是一次性规划所有步骤而是采用动态迭代的方式——生成思考、执行行动、观察结果然后基于新信息继续思考下一步。ReAct Loop这种think → act → observe的循环模式让智能体从静态的工具调用者转变为自适应的问题解决者。ReAct的工作流程接收目标智能体获得一个复杂任务思考Reason生成内部推理例如要回答这个问题我首先需要找到信息X行动Act基于思考执行动作比如调用搜索工具观察Observe获取工具返回的结果循环迭代将观察结果纳入上下文生成新的思考继续下一轮这个循环会持续进行直到智能体判断任务已完成。适用场景多跳问答需要串联多个信息片段才能回答的问题网络导航与研究搜索初始信息后根据结果决定下一步搜索策略交互式工作流环境动态变化无法预先规划完整路径的任务为什么需要ReAct单次工具调用的局限在正式实现ReAct之前让我们先构建一个基础的单次工具调用智能体看看它在复杂任务上会遇到什么问题。实战构建基础智能体首先安装必要的依赖pip install-q-U langchain-openai langchain langgraph rich python-dotenv tavily-python然后导入所需的库并配置API密钥importosfrom typingimportAnnotated,TypedDict from dotenvimportload_dotenv#LangChain组件from langchain_community.tools.tavily_searchimportTavilySearchResultsfrom langchain_core.messagesimportBaseMessage#LangGraph组件from langgraph.graphimportStateGraph,END from langgraph.graph.messageimportAnyMessage,add_messages from langgraph.prebuiltimportToolNode,tools_condition # 美化输出 from rich.consoleimportConsolefrom rich.markdownimportMarkdown# 加载环境变量load_dotenv()os.environ[LANGCHAIN_TRACING_V2]trueos.environ[LANGCHAIN_PROJECT]Agentic Architecture - ReActconsoleConsole()定义状态和工具# 定义智能体状态classAgentState(TypedDict):messages:Annotated[list[AnyMessage],add_messages]# 配置LLM和搜索工具 llmChatOpenAI(base_urlos.environ.get(base_url),api_keyos.environ.get(api_key),modelos.environ.get(model))search_toolTavilySearchResults(max_results2,nameweb_search)llm_with_toolsllm.bind_tools([search_tool])构建基础智能体图单次工具调用defbasic_agent_node(state:AgentState):console.print(--- 基础智能体思考中... ---)system_prompt你是一个有用的助手。你可以使用网络搜索工具。根据工具结果回答用户问题。你必须在一次工具调用后给出最终答案。messages[(system,system_prompt)]state[messages]responsellm_with_tools.invoke(messages)return{messages:[response]}# 构建线性图 basic_graph_builderStateGraph(AgentState)basic_graph_builder.add_node(agent,basic_agent_node)basic_graph_builder.add_node(tools,ToolNode([search_tool]))basic_graph_builder.set_entry_point(agent)# 关键工具执行后直接结束没有循环 basic_graph_builder.add_conditional_edges(agent,tools_condition,{tools:tools,__end__:__end__})basic_graph_builder.add_edge(tools,END)basic_tool_agent_appbasic_graph_builder.compile()print(基础单次工具调用智能体编译成功)测试多步骤问题挑战现在让我们用一个需要多步推理的问题来测试这个基础智能体multi_step_query制作科幻电影《沙丘》的公司现任CEO是谁该公司最新电影的预算是多少console.print(f[bold yellow]测试基础智能体的多步骤问题[/bold yellow] {multi_step_query}\n)basic_agent_outputbasic_tool_agent_app.invoke({messages:[(user,multi_step_query)]})console.print(\n--- [bold red]基础智能体的最终输出[/bold red] ---)console.print(Markdown(basic_agent_output[messages][-1].content))结果分析基础智能体会失败它只能进行一次搜索而这个问题需要找到制作《沙丘》的公司Legendary Entertainment找到该公司的CEOJoshua Grode找到该公司最新电影及其预算单次搜索返回的结果往往混乱且不完整智能体无法将问题分解为多个步骤。这正是我们需要ReAct架构的原因实现ReAct赋予智能体循环推理能力ReAct的核心差异在于图结构的设计——我们引入一个循环让智能体可以反复思考-行动-观察。构建ReAct智能体图defreact_agent_node(state:AgentState):console.print(--- ReAct智能体思考中... ---)responsellm_with_tools.invoke(state[messages])return{messages:[response]}# 工具节点保持不变 react_tool_nodeToolNode([search_tool])# 路由函数决定是继续调用工具还是结束 defreact_router(state:AgentState):last_messagestate[messages][-1]iflast_message.tool_calls:console.print(--- 路由器决定调用工具 ---)returntoolsconsole.print(--- 路由器决定结束 ---)return__end__# 构建带循环的图 react_graph_builderStateGraph(AgentState)react_graph_builder.add_node(agent,react_agent_node)react_graph_builder.add_node(tools,react_tool_node)react_graph_builder.set_entry_point(agent)react_graph_builder.add_conditional_edges(agent,react_router,{tools:tools,__end__:__end__})# 关键差异从工具节点返回到智能体节点形成循环 react_graph_builder.add_edge(tools,agent)react_agent_appreact_graph_builder.compile()print(ReAct智能体编译成功具备推理循环能力)测试ReAct智能体console.print(f[bold green]测试ReAct智能体的同一个多步骤问题[/bold green] {multi_step_query}\n)final_react_outputNoneforchunk in react_agent_app.stream({messages:[(user,multi_step_query)]},stream_modevalues):final_react_outputchunk console.print(--- [bold purple]当前状态[/bold purple] ---)chunk[messages][-1].pretty_print()console.print(\n)console.print(\n--- [bold green]ReAct智能体的最终输出[/bold green] ---)console.print(Markdown(final_react_output[messages][-1].content))执行过程分析你会看到ReAct智能体展现出完全不同的、更智能的处理过程思考1“我需要先找到《沙丘》的制作公司”行动1搜索Dune movie production company观察1获得结果Legendary Entertainment思考2“现在我知道是Legendary需要找CEO”行动2搜索Legendary Entertainment CEO观察2获得Joshua Grode思考3“还需要找最新电影预算…”综合最终组装所有收集的信息给出完整答案这个迭代循环清晰地展示了ReAct架构在复杂多步骤任务上的优势。定量评估LLM作为裁判为了科学地比较两种方法我们使用LLM-as-a-Judge来评分from pydanticimportBaseModel,FieldclassTaskEvaluation(BaseModel):任务评估模式task_completion_score:intField(description任务完成度评分1-10)reasoning_quality_score:intField(description推理质量评分1-10)justification:strField(description评分理由)judge_llmllm.with_structured_output(TaskEvaluation)defevaluate_agent_output(query:str,agent_output:dict):trace\n.join([f{m.type}: {m.content}form in agent_output[messages]])promptf你是AI智能体的专家评审。请评估以下智能体在给定任务上的表现1-10分。10分表示完美完成1分表示完全失败。**用户任务**{query}**智能体对话轨迹**{trace}returnjudge_llm.invoke(prompt)# 评估基础智能体 console.print(--- 评估基础智能体输出 ---)basic_evalevaluate_agent_output(multi_step_query,basic_agent_output)console.print(basic_eval.model_dump())# 评估ReAct智能体 console.print(\n--- 评估ReAct智能体输出 ---)react_evalevaluate_agent_output(multi_step_query,final_react_output)console.print(react_eval.model_dump())评估结果基础智能体任务完成度2/10推理质量4/10理由提供了部分相关信息但未能直接回答问题缺乏重点ReAct智能体任务完成度6/10推理质量8/10理由正确识别了CEO信息展现了高质量的推理过程但未完全找到预算信息量化评分清晰地证明了ReAct架构的价值相关研究进展ReAct架构自提出以来引发了广泛的研究热潮。让我分享一些相关的前沿工作核心论文ReAct: Synergizing Reasoning and Acting in Language Models发表于3年前是这一领域的奠基性工作展示了推理与行动协同如何增强LLM在复杂任务上的能力。改进与扩展Pre-Act: Multi-Step Planning and Reasoning Improves Acting in LLM Agents7个月前提出在执行前增强多步规划进一步提升ReAct的性能。Agentic Reasoning: A Streamlined Framework for Enhancing LLM Reasoning10个月前引入了一个简化框架通过集成外部工具使用智能体来增强LLM推理能力动态利用网络搜索和代码执行。大规模应用Agent-R1: Training Powerful LLM Agents with End-to-End Reinforcement Learning15天前探索了使用端到端强化学习来训练具有环境交互能力的强大LLM智能体。Scaling Agents via Continual Pre-training3个月前来自阿里展示了通过持续预训练来扩展智能体能力强调了自主工具使用和多步推理。综述类Agentic Large Language Models, a survey8个月前提供了智能体LLM领域的全面综述涵盖了最新的研究进展。The Landscape of Emerging AI Agent Architectures2年前系统地调研了用于推理、规划和工具调用的AI智能体架构。ReAct的优势与挑战优势✅自适应与动态能够根据新信息动态调整计划✅处理复杂性擅长需要链接多个依赖步骤的问题✅透明性推理过程可追溯便于调试挑战⚠️延迟与成本涉及多次顺序LLM调用速度较慢、成本较高⚠️循环风险引导不当可能陷入重复无效的思考-行动循环⚠️停止条件需要设计合理的终止机制总结在这篇文章中我们不仅实现了ReAct架构还通过对比实验清晰地展示了它相对于基础方法的优越性。通过构建一个允许智能体循环执行推理-行动的工作流我们使其能够解决复杂的多步骤问题。观察行动结果并用这些信息指导下一步的能力是智能行为的基本组成部分。ReAct模式为我们的AI智能体提供了一种简单而深刻有效的方式来构建这种能力使它们在现实任务中更强大、更自适应、更有用。最后唠两句为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选很简单这些岗位缺人且高薪智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200% 远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。那0基础普通人如何学习大模型 深耕科技一线十二载亲历技术浪潮变迁。我见证那些率先拥抱AI的同行如何建立起效率与薪资的代际优势。如今我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理分享于此为你扫清学习困惑共赴AI时代新程。我整理出这套 AI 大模型突围资料包【允许白嫖】✅从入门到精通的全套视频教程✅AI大模型学习路线图0基础到项目实战仅需90天✅大模型书籍与技术文档PDF✅各大厂大模型面试题目详解✅640套AI大模型报告合集✅大模型入门实战训练这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】①从入门到精通的全套视频教程包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图0基础到项目实战仅需90天全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤640套AI大模型报告合集⑥大模型入门实战训练如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】
返回列表