LangChain 1.0 工具系统:从内置工具到自定义工具开发
玄同 765大语言模型 (LLM) 开发工程师 | 中国传媒大学 · 数字媒体技术智能交互与游戏设计CSDN · 个人主页 | GitHub · Follow关于作者深耕领域大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈Python | RAG (LangChain / Dify Milvus) | FastAPI Docker工程能力专注模型工程化部署、知识库构建与优化擅长全流程解决方案「让 AI 交互更智能让技术落地更高效」欢迎技术探讨与项目合作解锁大模型与智能交互的无限可能一、工具系统概述1.1 工具系统核心概念工具系统提供统一 Tool 抽象支持所有主流模型的 Tool Calling深度集成 LangGraph构建可执行 agent 环境的关键能力层。工具系统是智能体与外部世界交互的桥梁使模型能够执行各种操作扩展其能力边界。核心组件内置工具搜索、计算、代码执行等100工具自定义工具tool装饰器 / BaseTool / ToolNode工具包Toolkit如GitHub、Slack集成1.2 工具调用流程是否用户输入模型分析需要工具?选择工具执行工具获取结果模型总结返回答案1.3 工具系统架构层级组件功能实现方式抽象层BaseTool工具基类继承实现实现层具体工具工具逻辑tool装饰器、自定义类集成层Toolkit工具集合组合多个工具执行层ToolNode工具执行LangGraph节点1.4 工具调用的优势优势具体体现应用场景扩展能力调用外部API和服务集成第三方系统实时数据联网搜索获取最新信息新闻、天气、股价复杂计算执行代码和数学运算数据分析、科学计算系统交互操作文件和数据库数据处理、持久化任务自动化多步骤任务执行工作流自动化二、内置工具使用2.1 常用内置工具LangChain 提供了丰富的内置工具涵盖多种常见场景工具类型功能描述示例搜索工具联网搜索信息GoogleSearchTool计算工具执行数学计算CalculatorTool代码执行执行Python代码PythonREPLTool文件操作读写文件FileSystemTool数据库操作数据库SQLDatabaseTool2.2 内置工具使用示例fromlangchain.toolsimportPythonREPLToolfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAI# 1. 初始化工具python_replPythonREPLTool()# 2. 初始化模型modelChatOpenAI(modelgpt-4o-mini)# 3. 创建包含工具信息的promptpromptChatPromptTemplate.from_template(你是一个助手可以使用Python执行计算。\n用户问题: {question}\n如果需要计算请使用Python工具。)# 4. 创建链chainprompt|model# 5. 执行resultchain.invoke({question:计算123...100的和})print(result.content)三、自定义工具开发3.1 使用 tool 装饰器tool装饰器是创建自定义工具的最简单方式fromlangchain_core.toolsimporttooltooldefmultiply(a:int,b:int)-int:Multiplies a and b.returna*btooldefdivide(a:int,b:int)-float:Divides a by b.ifb0:raiseValueError(除数不能为零)returna/b# 调用工具resultmultiply.invoke({a:2,b:3})print(result)# 输出: 6# 批处理resultsmultiply.batch([{a:2,b:3},{a:4,b:5}])print(results)# 输出: [6, 20]3.2 继承 BaseTool 类对于更复杂的工具可以继承BaseTool类fromlangchain_core.toolsimportBaseToolfromtypingimportOptional,Type,TypeVar,Any TTypeVar(T)classCustomTool(BaseTool):name:strcustom_tooldescription:str执行自定义操作def_run(self,input_text:str,**kwargs:Any)-str:执行工具的核心逻辑# 实现工具逻辑returnf处理结果:{input_text.upper()}# 使用自定义工具toolCustomTool()resulttool.invoke({input_text:hello world})print(result)# 输出: 处理结果: HELLO WORLD3.3 使用 ToolNode对于需要集成到 LangGraph 中的工具可以使用ToolNodefromlanggraph.prebuiltimportToolNode# 1. 创建工具列表tools[multiply,divide]# 2. 创建工具节点tool_nodeToolNode(tools)# 3. 在 LangGraph 中使用# (将在后续博客中详细介绍)四、工具包集成4.1 工具包概述工具包Toolkit是一组相关工具的集合方便开发者快速集成特定领域的功能GitHubToolkitGitHub 操作SlackToolkitSlack 消息发送GmailToolkit邮件发送和接收GoogleCalendarToolkit日历管理4.2 工具包使用示例以GitHubToolkit为例fromlangchain_community.agent_toolkits.github.toolkitimportGitHubToolkitfromlangchain_community.agent_toolkits.github.utilitiesimportGitHubAPIWrapper# 1. 初始化 GitHub API 包装器githubGitHubAPIWrapper(github_repositorylangchain-ai/langchain,github_tokenyour-github-token)# 2. 创建工具包toolkitGitHubToolkit.from_github_api_wrapper(github)# 3. 获取工具列表toolstoolkit.get_tools()print([tool.namefortoolintools])# 4. 使用工具issues_toolnext(toolfortoolintoolsiftool.namegithub-search-issues)resultissues_tool.invoke({query:bug})print(result)五、工具调用最佳实践5.1 工具设计原则明确的描述工具描述应该清晰说明工具的功能和参数错误处理工具应该妥善处理异常情况参数验证对输入参数进行验证返回格式返回结构化的结果便于模型理解5.2 工具安全性权限控制限制工具的访问权限输入验证验证用户输入防止恶意代码输出限制限制工具输出的大小和内容审计日志记录工具的使用情况5.3 工具性能优化缓存对频繁调用的结果进行缓存异步使用异步执行提高性能批处理对多个相似请求进行批处理超时设置为工具设置合理的超时时间六、实战案例6.1 构建一个天气查询工具fromlangchain_core.toolsimporttoolimportrequeststooldefget_weather(city:str)-str:获取指定城市的天气信息# 这里使用模拟数据实际应用中可以调用真实的天气APIweather_data{北京:晴15-25°C,上海:多云18-28°C,广州:阴22-30°C}ifcityinweather_data:returnf{city}的天气:{weather_data[city]}else:returnf抱歉暂无法获取{city}的天气信息# 测试工具resultget_weather.invoke({city:北京})print(result)# 输出: 北京的天气: 晴15-25°C6.2 构建一个智能体使用工具fromlangchain.agentsimportcreate_agentfromlangchain_openaiimportChatOpenAI# 1. 初始化模型modelChatOpenAI(modelgpt-4o-mini)# 2. 准备工具tools[get_weather,multiply]# 3. 创建智能体agentcreate_agent(model,tools)# 4. 执行任务resultagent.invoke({messages:[{role:user,content:北京的天气怎么样}]})print(result[messages][-1][content])# 5. 执行需要计算的任务resultagent.invoke({messages:[{role:user,content:345乘以678等于多少}]})print(result[messages][-1][content])七、应用场景分析7.1 适合使用工具的场景信息获取需要实时信息或外部数据计算密集需要复杂计算或数据分析系统交互需要操作文件、数据库或API代码执行需要运行代码或脚本多步骤任务需要多个工具协作完成7.2 工具系统的局限性API依赖依赖外部服务的可用性速率限制可能受到API调用频率限制安全性需要谨慎处理用户输入复杂性工具过多会增加模型的决策难度八、总结LangChain 1.0 的工具系统通过统一的抽象和丰富的内置工具为开发者提供了构建复杂智能体应用的强大能力。通过本文的介绍开发者可以掌握工具的创建和使用方法实现与外部系统的无缝集成构建具备实际业务能力的AI应用。在后续的博客中我们将介绍如何利用这些工具构建完整的智能体应用以及如何通过 LangGraph 实现更复杂的工作流。

相关新闻

红米手机怎么开微信分身?5步搞定双微信,工作生活两不误

红米手机怎么开微信分身?5步搞定双微信,工作生活两不误

很多人需要同时管理两个微信账号,比如一个用于工作、一个用于生活。红米(Redmi)作为小米旗下的高性价比手机品牌,早已内置了“应用双开”功能,无需 root 或安装第三方软件,即可轻松实现微信分身。本文将手把…

2026/7/3 14:09:59 阅读更多 →
LangChain 1.0 Agent开发:从创建到部署的完整指南

LangChain 1.0 Agent开发:从创建到部署的完整指南

玄同 765 大语言模型 (LLM) 开发工程师 | 中国传媒大学 数字媒体技术(智能交互与游戏设计) CSDN 个人主页 | GitHub Follow 关于作者 深耕领域:大语言模型开发 / RAG 知识库 / AI Agent 落地 / 模型微调技术栈:Python | R…

2026/7/3 10:52:08 阅读更多 →
简单理解:CAN

简单理解:CAN

1.标准帧仲裁段由11位ID和1位RTR位组成,RTR用来区分数据帧(显性电平)和遥控帧2.扩展帧仲裁段由29位ID,1位RTR位,1位SRR位和1位IDE位,RTR用来区分数据帧和遥控帧SRR用来代替标准帧中的RTR位,由于SRR是隐形电平,可以区分11位ID相同的标准帧和扩展帧IDE用来区分标准帧和扩展帧,显性…

2026/7/3 14:10:03 阅读更多 →

最新新闻

Obsidian-zola与Netlify集成:自动化部署的最佳实践

Obsidian-zola与Netlify集成:自动化部署的最佳实践

Obsidian-zola与Netlify集成:自动化部署的最佳实践 【免费下载链接】obsidian-zola A no-brainer solution to turning your Obsidian PKM into a Zola site. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-zola Obsidian-zola是一个将Obsidian个人…

2026/7/4 8:07:14 阅读更多 →
5分钟掌握CSS变体管理神器:CVA终极指南

5分钟掌握CSS变体管理神器:CVA终极指南

5分钟掌握CSS变体管理神器:CVA终极指南 【免费下载链接】cva Class Variance Authority 项目地址: https://gitcode.com/gh_mirrors/cv/cva 你是否曾为UI组件的CSS类名管理而头疼?😫 面对不同尺寸、颜色、状态的按钮变体,手…

2026/7/4 8:05:14 阅读更多 →
wiliwili:专为手柄用户打造的跨平台B站客户端完全指南

wiliwili:专为手柄用户打造的跨平台B站客户端完全指南

wiliwili:专为手柄用户打造的跨平台B站客户端完全指南 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili 你是否厌倦了在…

2026/7/4 8:05:14 阅读更多 →
豆包与元宝深度对比:AI工具背后的生态能力拆解

豆包与元宝深度对比:AI工具背后的生态能力拆解

1. 这不是“选APP”,而是一场生态级能力的现场拆解你刷到这条内容时,大概率正躺在沙发上,左手握着手机,右手刚点开豆包准备扒拉一段抖音口播文案;或者刚在视频号看完一篇深度长文,顺手把链接甩进元宝&#…

2026/7/4 8:05:14 阅读更多 →
Optimus钩子(Hooks)机制详解:实现数据转换后处理的完整教程

Optimus钩子(Hooks)机制详解:实现数据转换后处理的完整教程

Optimus钩子(Hooks)机制详解:实现数据转换后处理的完整教程 【免费下载链接】optimus Optimus is an easy-to-use, reliable, and performant workflow orchestrator for data transformation, data modeling, pipelines, and data quality m…

2026/7/4 8:01:13 阅读更多 →
CANN/ge LLM集群连接API

CANN/ge LLM集群连接API

# link_clusters 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorc…

2026/7/4 8:01:13 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻