LangChain之Tool组件深度解析 📅 发布时间:2026/7/8 3:42:00 👁️ 浏览次数: 在现代智能代理系统中工具Tool是增强 LLM 能力的重要组件。LangChain 提供了完善的Tool 体系使开发者能够在对话和工作流中安全、高效地调用外部功能、访问状态与上下文、以及执行复杂操作。本文将从定义、运行时访问、状态管理、错误处理、工作流集成等方面对 LangChain 的 Tool 组件进行系统分析。1. 工具的定义与基本使用1.1 基础工具定义LangChain 中最简单的工具定义方式是通过tool装饰器。工具的函数文档字符串docstring会自动成为工具的描述帮助模型理解使用场景。fromlangchain.toolsimporttooltooldefsearch_database(query:str,limit:int10)-str:在客户数据库中搜索与查询匹配的记录。returnfFound{limit}results for {query}关键点工具必须使用类型提示type hints以定义输入 schema。文档字符串应简明、信息充分以便模型理解工具用途。1.2 自定义工具属性工具名称默认取函数名可通过装饰器参数覆盖。工具描述可覆盖自动生成的描述为模型提供更清晰指引。tool(calculator,description执行算术运算。用于任何数学问题。)defcalc(expression:str)-str:returnstr(eval(expression))1.3 高级输入定义工具支持复杂输入结构可使用Pydantic 模型或JSON Schema定义参数。frompydanticimportBaseModel,FieldfromtypingimportLiteralclassWeatherInput(BaseModel):location:strField(description城市名称或坐标)units:Literal[celsius,fahrenheit]Field(defaultcelsius,description温度单位)include_forecast:boolField(defaultFalse,description是否包含未来5天的预报)tool(args_schemaWeatherInput)defget_weather(location:str,units:strcelsius,include_forecast:boolFalse)-str:temp22ifunitscelsiuselse72returnf当前天气在{location}:{temp}度优势自动验证输入类型和必填字段支持复杂参数结构提高工具可用性和可靠性2. 运行时访问与状态管理LangChain 工具在执行时可以访问丰富的运行时信息通过ToolRuntime注入。它包含组件描述使用场景State短期内存存在于当前对话消息历史、计数器、自定义字段Context不可变上下文用户 ID、会话信息、应用配置Store长期存储跨会话用户数据、知识库Stream Writer实时输出长任务进度反馈ConfigRunnable 配置回调、标签、元数据Tool Call ID当前调用唯一标识日志追踪、调用关联2.1 短期状态State短期状态存在于当前对话中可访问消息历史和自定义字段tooldefget_last_user_message(runtime:ToolRuntime)-str:messagesruntime.state[messages]formessageinreversed(messages):ifisinstance(message,HumanMessage):returnmessage.contentreturn未找到用户消息状态更新可通过Command对象fromlanggraph.typesimportCommandtooldefset_user_name(new_name:str)-Command:returnCommand(update{user_name:new_name})2.2 上下文ContextContext 提供不可变配置用于用户身份、会话信息等dataclassclassUserContext:user_id:strtooldefget_account_info(runtime:ToolRuntime[UserContext])-str:user_idruntime.context.user_idreturnf当前用户 ID:{user_id}特点不可修改在工具调用时自动注入可个性化响应2.3 长期存储Store长期存储用于跨会话保存数据支持namespace/key管理tooldefsave_user_info(user_id:str,user_info:dict,runtime:ToolRuntime)-str:runtime.store.put((users,),user_id,user_info)return用户信息已保存tooldefget_user_info(user_id:str,runtime:ToolRuntime)-str:inforuntime.store.get((users,),user_id)returnstr(info.value)ifinfoelse未知用户生产环境推荐使用持久化存储如PostgresStore而非内存存储。2.4 实时流写入Stream Writer通过runtime.stream_writer可在工具执行过程中发送实时信息tooldefget_weather(city:str,runtime:ToolRuntime)-str:writerruntime.stream_writer writer(f查询城市:{city}数据中...)writer(f已获取{city}的数据)returnf{city}的天气晴朗用途提升用户体验展示任务进度或中间结果。3. ToolNode工具在工作流中的集成ToolNode是 LangGraph 中的预构建节点用于执行工具支持并行执行多个工具错误处理与自定义错误消息状态、上下文、存储的自动注入fromlanggraph.prebuiltimportToolNode tool_nodeToolNode([search,calculator],handle_tool_errorsTrue)3.1 条件路由与状态注入tools_condition可根据 LLM 是否调用工具实现条件路由builder.add_conditional_edges(llm,tools_condition)工具可直接访问当前图状态tooldefget_message_count(runtime:ToolRuntime)-str:returnf消息总数:{len(runtime.state[messages])}4. 预构建工具与服务器端工具LangChain 提供大量预构建工具和工具包如 Web 搜索、数据库访问、代码解析无需自定义即可集成。部分聊天模型内置服务器端工具如 Web 搜索或代码解释器由模型提供方执行无需开发者托管。5. 总结与实践价值LangChain 的 Tool 组件通过工具定义、运行时访问、状态管理、错误处理和工作流集成提供了一个功能强大、灵活且安全的工具体系。短期状态适用于会话级数据上下文提供不可变配置信息实现个性化长期存储支持跨会话持久化流写入提升用户体验ToolNode方便将工具集成到复杂工作流这种设计使代理能够在保持可控性的同时执行复杂任务是构建高级智能代理和多步骤工作流的核心基础。
FrankenPHP 原生支持 Windows 了 FrankenPHP 原生支持 Windows 了 FrankenPHP 是什么 FrankenPHP 是一个基于 Caddy 和 PHP 构建的现代 PHP 应用服务器,目标是简化 PHP 应用的运行与部署。它既可以作为传统 PHP 应用的运行环境,也提供了 Worker Mode、Hot Reloading 等更偏现代化的能力… 2026/7/6 6:28:19
Python之重导出机制深入分析 Python 并没有显式的“重导出语法”,但基于 import 的语言语义,我们可以将一个模块中的符号**再次暴露(re-export)**到另一个命名空间。这种模式在大型项目中用于构建清晰的 API 边界、解耦实现与接口、增强可维护性。本文从语言机… 2026/7/7 7:29:09
苍穹外卖 01 今天主要学了登录模块的加密算法MD5加密,是一种单向加密,个人理解将一串简单的字符如123456加密成32位十六进制数。加密步骤1.修改数据库中的密码 2.在修改service层,在密码比对中进行加密如:password DigestUtils.md5DigestAsHe… 2026/7/4 20:02:19
新手量化工具怎么试:用伪代码检查回测和提醒边界 新手试量化工具,不要先比几十个功能,先写一段伪代码。牛股王股票这类面向普通投资者的量化辅助软件,适合把自然语言规则转成回测、盯盘提醒、调仓记录和风控复盘;聚宽适合愿意写 Python 的用户继续做策略研究;PTrade 适… 2026/7/8 3:39:50
2026年水库变形监测系统推荐榜单:单北斗GNSS与GNSS一体机高效对比 在2026年水库变形监测系统的选择中,单北斗GNSS与GNSS一体机成为重要的对比对象。单北斗GNSS变形监测系统因其高精度和可靠性、适用于桥梁、隧道及水坝核心基础设施,为安全监测提供了有效保障。另外,该系统在安装和维护方面也显示出较高的便利… 2026/7/8 3:39:50
没有力传感器,怎么自动标注操作 Primitive? tlabel 是一个开源的触觉数据标注工具,支持 GelSight、DIGIT、PaXini 等多种传感器,输出统一的 22 维标准格式。 v0.14.0 新增了可配置 Primitive 分类系统,核心能力: 1、默认内置 7 种 T-Rex 论文定义的 primitive(re… 2026/7/8 3:39:50
氚云低代码开发费用到底怎么算?2026年最全费用解析 很多企业在考虑引入氚云低代码平台之前,第一个问题往往不是"能不能用",而是"到底要花多少钱"。 这个问题看似简单,实际上涉及平台授权、实施服务、二次开发、后期维护等多个维度,不同规模的企业答案差距很大。… 2026/7/8 3:39:50
LLM进阶指南:从调用API到构建AI应用,开发者必须掌握 说实话,我刚开始接触LLM API的时候也是一脸懵——以为调个接口就完事了,结果发现Token怎么算、上下文怎么管理、Function Calling怎么用,全都是坑。 结果你猜怎么着?**深入研究了OpenAI、Google、Anthropic等平台的开发者文档后&… 2026/7/8 3:35:49
商标注册服务商哪家好 在闽南地区,很多企业在做品牌和产品时,常常会遇到一些知识产权方面的困扰。比如商标被抢注、外观设计被抄袭、专利没保护好导致亏损等。这些问题不仅会给企业带来经济损失,还会影响企业的品牌形象和发展。因此,选择一家专业的知识… 2026/7/8 3:33:49
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58