news 2026/10/20 18:35:49

工具调用循环:create_react_agent 实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工具调用循环:create_react_agent 实战
个人主页: > for_ever_love__ <(欢迎各位大佬莅临😊)
其他栏目: > 大模型开发从0到1 <
其他栏目: > iOS项目总结大全 <
其他栏目: > 我想学python了 <
其他栏目: > iOS UI <

文章目录

  • 工具调用循环:create_react_agent 实战
    • 一、最简用法
    • 二、它帮我们省了什么
    • 三、加持久化就是多轮 Agent
    • 四、什么时候不该用它

工具调用循环:create_react_agent 实战

如果你只是想要一个「能调工具、会多轮思考」的 Agent,没必要从零搭图。LangGraph 的langgraph.prebuilt里提供了create_react_agent,一行就能组装出一个标准的 ReAct(推理+行动)循环。

一、最简用法

fromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttoolfromlanggraph.prebuiltimportcreate_react_agent@tooldefget_weather(city:str)->str:"""查询某城市的天气"""returnf"{city}今天晴,25℃"model=ChatOpenAI(model="gpt-4o-mini")agent=create_react_agent(model,[get_weather])result=agent.invoke({"messages":[{"role":"user","content":"北京天气怎么样?"}]})print(result["messages"][-1].content)

create_react_agent(model, tools)返回的就是一个编译好的 LangGraph app,可以直接invoke/stream。默认流程是:模型决定调哪个工具 → 执行工具 → 把结果喂回模型 → 模型继续,直到它认为可以给出最终答案。

二、它帮我们省了什么

自己写 ReAct 循环,你要手写:状态定义(messages)、调模型的节点、调工具的节点、判断「是否还要继续」的条件边。而create_react_agent把这些全封装好了,并且:

  • 自动处理ToolMessage的回写;
  • 内置「模型输出 tool_calls 就走工具、否则结束」的条件路由;
  • 返回的依然是标准MessagesState,可以无缝接 Checkpointer、流式、子图。

三、加持久化就是多轮 Agent

fromlanggraph.checkpoint.memoryimportMemorySaver agent=create_react_agent(model,[get_weather],checkpointer=MemorySaver())cfg={"configurable":{"thread_id":"u-1"}}agent.invoke({"messages":[{"role":"user","content":"北京天气?"}]},cfg)agent.invoke({"messages":[{"role":"user","content":"那上海呢?"}]},cfg)

同一thread_id下,模型记得上一轮问过什么——因为底层就是一张带 MessagesState 的图。

四、什么时候不该用它

当你的流程不是标准 ReAct(比如要条件分支、人工审核、子图编排、并行扇出),就该退回手写StateGraph。create_react_agent是「80% 场景的开箱即用」,复杂编排还得自己画图。

一句话:想快就create_react_agent,想完全可控就手写图。两者底层是同一套 LangGraph,随时可以升级。

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

Spring AI Alibaba 四层架构解析:语义对齐、可编程配置与云原生增强

1. 为什么需要“Spring AI Alibaba”这个概念——从一个被反复问爆的问题说起我第一次在某技术交流群看到有人发截图&#xff0c;说“Spring Boot 3.2 Spring AI 0.8.1 跑通了 OpenAI&#xff0c;但换成阿里云百炼 API 就一直报 400 错误&#xff0c;body 里连 model 字段都传…

作者头像 李华
网站建设 2026/10/20 18:35:04

Spring Boot个人记账系统毕设:从技术选型到统计报表的实现指南

1. 为什么选记账系统当毕设&#xff1a;题目价值与需求边界1.1 一个“小而不单薄”的业务闭环这几年陆续接过不少毕设指导的活儿&#xff0c;被问得最多的一个问题是&#xff1a;能不能帮我看下这个题目可不可以做&#xff1f;我的判断标准一直很固定——题目能不能在一两个月内…

作者头像 李华
网站建设 2026/10/20 18:34:23

手搓链上自主决策系统:从EVM解析到百亿token级执行

1. 项目概述&#xff1a;这不是一个“AI投资顾问”&#xff0c;而是一套可解释、可调试、可验证的自主决策系统“百亿token手搓的投资agent”——这个标题里每个词都带着重量。“百亿token”不是虚指&#xff0c;它指向真实规模的链上资产操作能力&#xff1b;“手搓”二字是关…

作者头像 李华
网站建设 2026/10/20 18:34:18

字符串操作进阶:双指针反转与扩容替换的边界实战

先说说我对这三道题的整体感觉。很多朋友刷到字符串专题时&#xff0c;总觉得“反转字符串”这种题太简单&#xff0c;看一眼就会写&#xff0c;但真正上手跑测试用例、丢到面试官面前手写白板时&#xff0c;各种边界问题就全冒出来了。尤其是第541题那种“每2k个反转前k个”的…

作者头像 李华
网站建设 2026/10/20 18:33:16

开发板选型与上手实践:从嵌入式入门到快速原型验证

干了十几年嵌入式开发和硬件调试&#xff0c;经我手上过的开发板少说也有几十块了。从几块钱的入门级单片机开发板&#xff0c;到带屏幕、带网口的Linux开发板&#xff0c;每一块板子都像是入行路上的一个里程碑。今天这篇不打算罗列某款具体板子的引脚定义&#xff0c;而是系统…

作者头像 李华
网站建设 2026/10/20 18:33:01

12GB显存运行1250亿参数大模型:Strata引擎技术解析

1. 项目概述&#xff1a;当“1250亿参数”不再只是数据中心的专属名词你有没有在深夜调试模型时&#xff0c;盯着自己那张显存标称12GB、实际可用不到11.5GB的消费级显卡发过呆&#xff1f;一边是论文里动辄千亿参数的SOTA模型&#xff0c;一边是本地跑个7B模型都要手动切分、反…

作者头像 李华