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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文剖析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 根据需求动态组装 。这不是“更快的脚本”,这是“不用写脚本的测试”。方法论层面的升级,才是你该关注的点。

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

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

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

相关文章
|
11天前
|
人工智能 前端开发 Java
AGENTS.md完整落地实践:一份文件翻倍AI编码效率实操指南
在AI编程工具广泛普及的当下,Cursor、Claude Code、Copilot、各类智能体工具各自使用独立规则文件,团队需要维护多套配置,切换工具时重复同步编码规范,AI对项目架构、私有组件、构建流程一无所知,产出代码大量不符合团队标准,反复人工修改大幅拉低开发效率。AGENTS.md作为统一行业标准,完美解决配置碎片化、AI缺少项目上下文的痛点,仅在仓库根目录放置一份Markdown文件,即可让全部AI编码工具统一读取项目规则、架构、构建命令,搭配配套工程脚本,实现「AI读懂项目、写完自动自检、自主验证功能」完整闭环,显著提升AI编码产出质量与整体研发效率。本文结合Spring Boot
206 0
|
11天前
|
Web App开发 人工智能 自然语言处理
我解放啦,网页终于能自己干活了!阿里 2 万 Star 开源 Page Agent,20 次点击变一句话
Page Agent 是阿里开源的页面内 GUI Agent:不用 Python、无头浏览器或强制浏览器插件,前端接入 JavaScript 后,就能让用户用自然语言操作网页。
229 3
我解放啦,网页终于能自己干活了!阿里 2 万 Star 开源 Page Agent,20 次点击变一句话
|
12天前
|
人工智能 安全 前端开发
来不及学 AI 就不用学了?——从 AI 到 Agent,再到 Harness Engineering 与 Loop Engineering :一条被产品化加速的技术演进线
本文是一份AI工程演进图谱,以「概念地图」形式梳理2022–2026年LLM→Agent→Harness→Loop的演进脉络,厘清OpenClaw、MCP、Skills等核心概念的关系,破除术语迷雾,强调Harness Engineering才是当前最值得投入的系统性工程能力。(239字)
167 1
|
11天前
|
人工智能 缓存 运维
AI智能体配套GLM 5.2:vLLM/SGLang部署适配Hermes/OpenClaw实战
GLM 5.2是智谱推出的开源混合专家大模型,拥有7440亿总参数、400亿激活参数,原生支持100万tokens超长上下文,在长文档分析、复杂代码生成、多步骤AI智能体任务上表现突出,MIT开源协议允许企业完全私有化部署,数据无需外流,满足隐私合规需求。但超大模型对GPU硬件要求极高,需要根据业务并发、上下文长度选择BF16、FP8、Q4_K_M、UD-IQ2四类量化权重,并搭配vLLM、SGLang两类主流推理框架搭建服务。本文从量化硬件匹配、两套推理框架完整部署实操、自托管与线上API成本测算、AI智能体后端适配、常见故障排查五大维度完整讲解落地流程,同时结合Hermes、OpenCla
228 0
|
11天前
|
弹性计算 人工智能 运维
保姆级实操:阿里云ECS/轻量服务器完整部署Hermes Agent全流程手册
阿里云服务器部署Hermes Agent可解决本地部署的稳定性问题,实现全天候在线智能体服务。三种部署方案覆盖不同用户需求,一键部署适合新手,手动部署适合自定义配置。通过合理配置模型密钥、端口放行与运维优化,可长期稳定运行Hermes Agent,用于代码开发、自动化任务、数据处理等各类场景。
185 3
|
19天前
|
人工智能 IDE API
OpenCode 是什么?——终端里的开源 AI 编程 Agent 完全解读
2026年,Anthropic封禁第三方调用Claude Code,引爆开发者对“供应商锁定”的焦虑。开源工具OpenCode应运而生——MIT协议、终端原生、支持75+模型,首创Plan/Build双模式,将模型选择权、成本控制权与数据主权彻底交还开发者。
|
28天前
|
存储 自然语言处理 机器人
我如何用Skills-RAG构建企业级测试知识库,新人上手自动化只需1天
本文提出Skills-RAG方法,将散落于人脑、聊天记录中的隐性测试经验结构化为可检索、可执行的“技能单元”,通过语义检索+LLM动态组装,让新人用自然语言提问即可获得带代码、坑点和上下文的解决方案,大幅提升自动化测试上手效率。
|
11天前
|
JavaScript Linux iOS开发
OpenCode 安装全攻略:4 种方式覆盖 Windows、macOS、Linux
本文深度解析2026年热门开源AI编程代理OpenCode,聚焦“安装难”痛点,详解四大跨平台安装方式(一键脚本、npm、包管理器、桌面包),对比适用场景与坑点,并延伸至模型配置、项目初始化等工程落地关键环节,助力开发者高效启用。
|
28天前
|
SQL JSON 关系型数据库
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
阿里云AnalyticDB MySQL版是PB级云原生实时数据仓库,首创多模态统一分析引擎,单SQL原生支持SQL分析、向量检索、全文搜索与JSON分析,替代3–5套独立系统,综合成本降50%+,运维复杂度降80%,适用于AI+数据融合、多源异构统一查询等企业级场景。
211 17
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
|
28天前
|
人工智能 安全 前端开发
面试官问:什么是 Harness 工程?AI Agent 时代,测试人必须补上的新能力
Harness工程是AI Agent时代的“工作台”,聚焦为其构建稳定、可控、可验证的工程环境。它涵盖上下文管理、工具调用、沙箱权限、测试验证、日志观测与反馈回路,解决Agent在真实项目中因缺上下文、缺工具、缺反馈、缺边界导致的失控问题。本质是让Agent“能做事、做得对、出错可修复”。