赋能大模型:用 LangChain Tools 打通 AI 与外部世界

37 阅读4分钟

大语言模型(LLM)虽能流畅对话、生成代码,但其能力始终局限于训练数据所覆盖的知识范围。它无法实时获取天气、查询数据库、执行计算或调用企业内部 API——除非我们赋予它“手脚”。LangChain 的 Tools 模块正是为此而生:通过声明式地注册外部函数,让 LLM 在推理过程中自主决定是否调用、调用哪个工具,并解析所需参数,从而将 AI 从“聊天机器人”升级为具备真实行动力的智能代理。

工具即能力:扩展 LLM 的边界

在 LangChain 中,一个 Tool 是一个带有元信息(名称、描述、参数 schema)的异步函数。开发者只需关注业务逻辑,框架负责将其转化为 LLM 可理解的接口:

const weatherTool = tool(
  async ({ city }) => {
    const weather = fakeWeatherDB[city];
    return weather 
      ? `城市${city}的天气是${weather.temp},${weather.condition}`
      : `城市${city}的天气信息不存在`;
  },
  {
    name: 'weather',
    description: '获取城市的天气信息',
    schema: z.object({
      city: z.string().describe('要查询天气的城市名称'),
    }),
  }
);

这里使用 zod 定义了输入参数的结构与类型约束。description 和字段的 describe 则作为自然语言提示,帮助 LLM 理解何时及如何使用该工具。这种设计使得工具注册既安全又语义清晰。

模型绑定工具:开启自主决策

注册工具后,需将其“绑定”到模型实例,使其在生成回复前具备工具调用的选项:

const model = new ChatDeepSeek({
  model: 'deepseek-chat',
  temperature: 0
}).bindTools([addTool, weatherTool]);

const res = await model.invoke('北京的天气');

当用户提问涉及实时数据时,模型不再尝试“编造”答案,而是返回一个 tool_calls 字段,明确指示应调用 weather 工具,并附上解析出的参数 { city: "北京" }。这标志着 LLM 从“猜测者”转变为“协调者”。

执行工具调用:连接虚拟与现实

拿到 tool_calls 后,应用需手动执行对应工具并返回结果:

if (res.tool_calls?.length) {
  const call = res.tool_calls[0];
  if (call.name === 'weather') {
    const result = await weatherTool.invoke(call.args);
    console.log(result); // 输出真实天气信息
  }
}

这一过程看似简单,却构成了 AI Agent 的核心循环:感知(用户输入)→ 决策(是否调用工具)→ 行动(执行工具)→ 反馈(将结果告知用户或用于下一步推理)。通过这种方式,LLM 能够动态接入任意外部系统,能力边界仅受限于开发者提供的工具集。

多工具协同:构建复杂任务流

一个应用通常需要多个工具协同工作。例如,同时支持天气查询与数学计算:

const addTool = tool(
  async ({ a, b }) => String(a + b),
  {
    name: 'add',
    description: '计算两个数字的和',
    schema: z.object({
      a: z.number(),
      b: z.number(),
    }),
  }
);

当用户问“北京温度加上5是多少?”,理想情况下,Agent 会先调用 weather 获取温度(如30°C),再调用 add 计算 30 + 5。虽然当前示例需手动处理单次调用,但结合 LangChain 的 Agent 执行器,可自动完成多步工具调用与结果串联,实现真正的端到端自动化。

类型安全与可维护性

使用 zod 定义参数 schema 不仅提升 LLM 的参数解析准确率,还带来强类型保障。在 TypeScript 项目中,工具函数的输入类型可自动推导,减少运行时错误。同时,每个工具自包含逻辑、描述与验证规则,便于团队协作与长期维护。

实际价值:从问答到服务

引入 Tools 后,AI 应用的形态发生质变:

  • 客服系统:调用订单接口查询物流;
  • 数据分析助手:执行 SQL 查询并生成图表;
  • DevOps 机器人:根据日志触发部署或回滚;
  • 个人助理:读取日历、发送邮件、控制智能家居。

这些场景的共同点是:LLM 负责理解意图与规划步骤,工具负责执行具体操作。二者分工明确,各司其职。

结语

LangChain 的 Tools 模块,本质上是在 LLM 与现实世界之间架设了一座桥梁。它不改变模型本身,而是通过标准化的接口,让 AI 能够“动手做事”。随着工具生态的丰富,未来的智能应用将不再是被动响应的问答机,而是能主动感知、决策、执行的数字员工。而这一切,始于一行 tool() 的声明。