给大模型装上“手脚”:LangChain Tools 与 Agent 深度解析

简介: 本文剖析LangChain中Tools与Agent的核心价值:Tools为大模型装上“手脚”(执行能力),Agent赋予其“决策大脑”(动态调用逻辑)。通过招聘筛选、自动化测试等真实案例,揭示其在多源集成、快速上线与可维护性上的不可替代性——框架之“重”,源于解决复杂问题的必要抽象,而非冗余。

去年一个做AI招聘平台的团队发了一篇公开复盘:他们把生产环境里的 LangChain 卸掉了,改成了直接调用 Anthropic 原生 SDK。效果立竿见影——p50 延迟从 2.1 秒降到 1.4 秒,p95 延迟从 4.8 秒降到 3.2 秒。

这个案例被很多人转发,评论区清一色“LangChain 就是过度封装”、“直接调 API 不香吗”。

但很少有人追问一句:他们卸掉 LangChain 之前,用 LangChain 做了什么?

答案是:他们用 LangChain 的 Tools + Agent 搭了一套招聘筛选系统,对接了 7 个不同的数据源和 4 个第三方 API。在没有 LangChain 的情况下,这套系统根本不可能在两周内上线。

工具本身有成本,但工具解决的问题,是你自己手写代码时更大的成本。

目录

一、大模型什么都懂,但什么都做不了
二、本质是让 LLM 从“大脑”变成“大脑+手脚”
三、Tools 机制拆解:怎么给大模型装“手脚”
四、Agent 机制拆解:怎么让大模型自己“决定用哪只手”
五、一个测试场景的完整案例
六、对你意味着什么
七、最后问你一个问题
一、大模型什么都懂,但什么都做不了
ChatGPT 刚出来的时候,很多人觉得“以后不用写代码了,跟 AI 说一声就行”。

现实很快打脸。

你跟 GPT-4 说“帮我查一下明天北京的天气,然后对比一下后天,发邮件告诉我结果”。它能告诉你思路,但查不了天气、发不了邮件。它知道怎么查、怎么发,但它做不到。

大模型的知识边界在参数里,行动边界在物理世界和数字系统的接口上。

这就是 LangChain Tools 和 Agent 要解决的问题。

Tools 给大模型装上了“手”——能查数据库、能调 API、能执行代码。Agent 给大模型装上了“大脑的决策层”——能自己判断什么时候用什么工具、按什么顺序用。

很多人一上来就纠结“LangChain 重不重”、“要不要直接调 API”。但他们忽略了一个更基本的问题:你需要的是一套可扩展的“工具调用体系”,还是一个一次性脚本?

如果是后者,直接调 API 确实更快。但如果是前者——你需要让大模型动态地、组合地调用多个工具——没有 LangChain 这类框架,你自己要写的胶水代码比你想象的多得多。

大模型的短板从来不是“不知道”,而是“做不到”。Tools 解决的是“做到”的问题。

二、本质是让 LLM 从“大脑”变成“大脑+手脚”
先搞清楚一个概念。

LangChain 官方对 Agent 的定义很直接:用户给 Agent 一个输入消息,Agent 进入循环——调用工具、把工具返回结果和 AI 消息加入状态、继续调用,直到它决定不再调用任何工具并最终结束。

这个循环看似简单,但背后解决了一个核心问题:大模型本身没有“行动能力”,它只会生成文本。Tools 把“行动”封装成可被大模型调用的函数,Agent 把“什么时候调用什么工具”的决策权交给了大模型自己。

本质上,这是在 LLM 外面包了一层“执行器”。LLM 负责推理和决策,执行器负责干活。

LangChain Agent 框架通过模块化设计把智能 Agent 拆解为三个核心部分:工具链(Tools)、推理引擎(Reasoning Engine)和执行控制器(Execution Controller)。

工具链是“手脚”——能做什么。推理引擎是“小脑”——怎么做决策。执行控制器是“神经系统”——怎么协调。

这三层缺一不可。

很多人觉得 LangChain “重”,是因为他们把这三层全用了。但如果你只需要“手脚”(Tools),你可以只用 Tools 层,不用 Agent。如果你只需要“小脑”(推理),你也可以单独用 Prompt 模板。

框架重不重,取决于你怎么用。

Tools 解决“能做什么”,Agent 解决“什么时候做”。两个加在一起,大模型才有了真正的行动能力。

三、Tools 机制拆解:怎么给大模型装“手脚”
3.1 Tool 的本质是什么
在 LangChain 里,一个 Tool 本质上就是一个带描述的函数。

大模型不直接执行代码。它通过“函数调用”(Function Calling)协议告诉系统:“我想调用这个函数,参数是这些”。系统收到指令后,在本地执行这个函数,把结果返回给大模型。

所以 Tool 的核心不是“怎么实现功能”,而是“怎么让大模型知道有这个功能、知道什么时候用它”。

关键在三个地方:

name:工具的名字,要简洁明确
description:描述这个工具做什么、什么时候该用。大模型靠这个判断要不要调它
args_schema:参数的结构定义,告诉大模型需要传什么参数、什么类型
description 写不好,工具永远不会被调用。arg_schema 定义不清晰,大模型传的参数永远是错的。

3.2 三种定义方式
方式一:@tool 装饰器(最推荐)

from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
"""获取指定城市的当前天气。
参数:
city: 城市名称,例如 '北京', '上海'。
"""

# 实际场景中替换为 API 调用
weather_data = {
    "北京": "晴天,25°C",
    "上海": "多云,28°C",
}
return weather_data.get(city, f"{city} 暂无数据")

函数的 docstring 自动成为工具的 description。这是最简洁的方式,适合 80% 的场景。

方式二:继承 BaseTool(需要复杂逻辑时)

适合需要复杂初始化、状态管理或错误处理的场景。

方式三:Tool 类实例化(快速封装现有函数)

适合快速把已有的函数包装成 Tool,不改动原函数代码。

3.3 Tool 设计的两条铁律
铁律一:单一职责。 一个 Tool 只做一件事。登录就是登录,查库存就是查库存。不要写一个“万能工具”试图覆盖所有场景。

铁律二:输入输出都要结构化。 输入用 Pydantic BaseModel 定义 schema,输出用 JSON 或明确的字典结构。大模型不懂“随意格式”,它只认 Schema。

四、Agent 机制拆解:怎么让大模型自己“决定用哪只手”
有了 Tools,下一个问题是:谁来决定什么时候用哪个 Tool?

这就是 Agent 的事。

4.1 ReAct 循环:推理-行动-观测
Agent 的核心执行模式叫 ReAct——Reasoning + Acting。

具体流程是:

推理(Reasoning) :面对用户的问题,Agent 先思考“我需要做什么、用什么工具”
行动(Acting) :调用对应的 Tool,获取结果
观测(Observation) :分析 Tool 返回的结果,判断任务是否完成
如果没完成,回到步骤 1,继续循环
这个循环一直持续到 Agent 认为任务完成,或者达到最大迭代次数。

69a51bbf-4837-45f0-a041-f5d207ce571b.png

4.2 上下文工程:Agent 可靠性的关键
为什么同样的 Agent,有时候工作得很好,有时候一塌糊涂?

LangChain 团队在一篇官方博客里点出了核心原因:上下文工程(Context Engineering) 。

进入模型的内容决定了模型输出什么。要让 Agent 更可靠,你需要对“进入模型的东西”有完全的控制权。

具体来说,你需要控制:

Agent 的“状态”里包含什么——不只是对话消息,还可以包含连接字符串、用户信息、运行时配置
发给模型的提示词是什么——不是写死的字符串,而是可以动态生成的函数
模型调用前做什么、调用后做什么——比如对话太长时先做摘要再送给模型
这些控制点,就是 LangChain 1.0 引入的 Middleware 机制要解决的问题。

4.3 动态工具选择:不是所有工具都要同时可见
另一个容易被忽略的设计:不是所有工具都要在一开始全部暴露给 Agent。

LangGraph 支持动态工具调用——你可以在运行的不同阶段控制哪些工具可见。

为什么重要?

强制执行工作流:要求先调用认证工具,才能暴露敏感操作
引导推理:开始时只给少量工具,任务推进后再扩展
提升可靠性:减少早期因工具过多导致的错误路径
这就像给一个新手厨师做饭——先给他刀和砧板,等他切完了再把锅和灶给他。一次给太多工具,他反而不知道从哪里下手。

五、一个测试场景的完整案例
说一个我实际做过的案例。

需求:自动化测试一个涉及“登录→查询订单→验证金额”的流程。

传统做法:写一个 Python 脚本,里面硬编码三步的 API 调用、参数构造、断言逻辑。大概 150 行代码。问题是:换一个环境(测试环境→预发布环境),API 地址变了,要改 5 处。换一个用户,token 获取方式变了,要改 3 处。

用 LangChain Tools 的做法:

定义三个 Tool:

@tool
def login(username: str, password: str) -> dict:
"""用户登录,返回 token 和 user_id"""

# 调用登录 API

@tool
def query_orders(token: str, user_id: str) -> list:
"""查询用户的订单列表,需要 token 和 user_id"""

@tool
def verify_amount(order_id: str, expected: float) -> bool:
"""验证订单金额是否等于期望值"""
然后创建一个 Agent,把这三个 Tool 传进去。给 Agent 的指令是:“用 test_user 登录,查询他的订单,验证第一笔订单的金额是否等于 99.9”。

Agent 自动完成:

调用 login,拿到 token 和 user_id
把 token 和 user_id 传给 query_orders,拿到订单列表
取第一笔订单的 ID,调用 verify_amount
对比:

维度
传统脚本
LangChain Tools + Agent
代码量
150 行
3 个 Tool(约 60 行)+ 1 句自然语言
换环境
改 5 处硬编码
改 1 个环境变量
新增场景
重写脚本
复用 Tool,改自然语言指令
可维护性
低(逻辑耦合)
高(Tool 独立)
关键不是省了多少行代码。关键是:当业务逻辑变化时,你改的是 Tool 的实现,还是整个流程的编排?

前者是“修一个零件”,后者是“重造一台机器”。

Tool 是积木,Agent 是搭积木的人。你只需要定义好积木,搭积木的事交给 Agent。

六、对你意味着什么
对在校生

你现在学的测试理论里,大概率还没有“AI Agent”这个章节。但等你毕业的时候,这会是测试工程师的标配能力。不是让你现在就去精通 LangChain,而是让你看懂一个趋势:测试执行正在从“写脚本”变成“定义工具+描述意图” 。看得懂这个变化,你就比同龄人领先一步。

对初级工程师

你可能已经会用 Postman 调接口、用 Pytest 写用例了。下一步的能力升级点是:把“调接口”封装成 Tool,把“写用例”变成“给 Agent 下指令” 。核心不是学 LangChain 的 API,是学会“工具化思维”——把一切可重复的操作变成可被大模型调用的标准接口。

对中级工程师

你现在面临的问题是团队效率的天花板。当测试场景越来越复杂、回归范围越来越大时,靠堆人写脚本是不可持续的。Tools + Agent 提供了一条路:把测试能力拆解成可组合的 Tool,让 Agent 根据需求动态组装 。这不是“更快的脚本”,这是“不用写脚本的测试”。方法论层面的升级,才是你该关注的点。

七、最后问你一个问题
你现在的测试代码里,有多少是“可被大模型调用的工具”,有多少是“一次性写死的流程”?

如果你的答案是“大部分是流程”,那问自己第二个问题:当业务变更时,你是改代码,还是重新描述意图?

这两个问题的答案,决定了你的测试资产是在持续积累,还是在持续贬值。

相关文章
|
5天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1603 2
|
2天前
|
人工智能 定位技术 SEO
我学 GEO 第 15 天:终于知道AI GEO该如何做?
我是暴走的莉莉酱,边旅行边研究AI GEO的数字游民。专注普通人如何提升“AI可见度”——让AI在回答用户问题时准确识别、理解并推荐你。不讲玄学,只做可测、可调、可持续的GEO实践。
363 124
|
5天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
625 4
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
2天前
|
缓存 人工智能 运维
阿里云618百炼大模型Qwen3.7-Max功能、免费试用、订阅计费、配置接入详解
Qwen3.7-MAX是阿里云百炼平台推出的通义千问3.7系列旗舰大语言模型,专为智能体时代复杂任务打造,依托阿里云全域算力与自研技术,在逻辑推理、长文本处理、代码工程、长周期自主执行等领域达到行业顶尖水平。2026年618期间,该模型推出多重免费试用权益、按量计费5折、订阅套餐优惠等专属福利,覆盖个人开发者、团队与企业全场景需求,以下从核心功能、免费试用、订阅计费、配置接入四方面展开详细解析。
363 123
|
15天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
2天前
|
存储 人工智能 数据可视化
别再手动复制 Skill 了:多 Agent 时代的 Skill 管理方案
多 Agent 场景下 Skill 的统一管理与同步。
184 121
|
9天前
|
缓存 人工智能 运维
GLM 5.2自托管全流程实战:硬件选型、vLLM/SGLang部署与成本盈亏测算
2026年智谱发布GLM 5.2超大混合专家模型,区别于以往仅开放API的闭源大模型,该模型权重以MIT开源协议对外发布,企业与开发者可完整下载、本地审计、私有化部署,实现数据不出环境、自定义微调、自主调度推理资源。GLM 5.2拥有753B总参数,原生支持百万级上下文窗口,在代码生成、长文档推理、数学逻辑等多项基准测试中对标国际顶尖商用模型,是首款可完整自托管的前沿代码向大模型。
730 0
|
2天前
|
SQL 存储 运维
日志能不能改?SLS LogStore 原生支持更新和删除了
随着日志承载的业务语义越来越多,数据订正、回填、清理等需求变得越来越常见。SLS 现已为 LogStore 提供原生 update/delete 能力——支持按 RowID 精确修改,按查询条件批量操作,类似计费调账、标签刷新、反馈回填等场景都可以直接在 LogStore 内完成闭环。
169 123
|
16天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
935 12
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图