很多人第一次用大模型,都会写出这样的代码:
arduino
const res = await model.invoke("北京今天天气怎么样?")
然后模型会很"诚恳"地回答:
我无法获取实时天气,但你可以查看相关网站。
这其实暴露了一个核心问题:
你用的不是 AI 应用,而只是一个"会说话的模型"。
一、真正的能力差距,不在 Prompt,而在 Tool
Prompt 再精致,模型本质仍然只能"生成文本"。
而真实世界的应用需要的是:
- 计算
- 查询数据
- 调用接口
- 执行业务逻辑
LangChain 给出的答案是:Tool。
Tool 不是让你"多写点代码",
而是让模型具备"执行能力"。
二、Tool 是什么?一句话说明白
Tool = 一个可被大模型主动调用的函数。
注意这几个关键词:
- 主动调用
- 参数由模型生成
- 是否调用由模型判断
这和你在代码里写 if / else 有本质区别。
三、一个最基础的 Tool:加法函数
先从最简单的开始。
css
const addTool = tool(
async ({ a, b }) => String(a + b),
{
name: "add",
description: "计算两个数字的和",
schema: z.object({
a: z.number(),
b: z.number()
})
}
)
效果图:


这里有三个关键点:
- 函数本身并不重要,重要的是它能被模型调用
schema决定模型如何构造参数description决定模型是否会选择这个 Tool
Tool 的"说明文字",是写给模型看的,不是给人看的。
四、Tool 的核心不是代码,而是语义设计
很多人用不好 Tool,原因不是代码写错,而是语义不清。
如果你的 Tool:
- 名字含糊
- 描述模棱两可
- 参数意义不明确
模型就不会稳定地调用它。
可以理解为:
Tool 是你给模型的一份「能力说明书」。
五、一个更接近真实业务的例子:天气查询
用一个假数据源模拟真实系统:
css
const fakeWeatherDB = {
北京: { temp: "30°C", condition: "晴", wind: "微风" },
上海: { temp: "28°C", condition: "多云", wind: "东风 3 级" },
广州: { temp: "32°C", condition: "阵雨", wind: "南风 2 级" },
}
定义对应的 Tool:
javascript
const weatherTool = tool(
async ({ city }) => {
const weather = fakeWeatherDB[city]
if (!weather) return `暂无${city}的天气信息`
return `当前${city}的天气是${weather.temp}, ${weather.condition}, 风力${weather.wind}`
},
{
name: "get_weather",
description: "查询指定城市的今日天气情况",
schema: z.object({
city: z.string().describe("要查询天气的城市")
})
}
)
这个 Tool 已经非常接近真实业务中的"服务层"。
六、把 Tool 交给模型
arduino
const model = new ChatDeepSeek({
model: "deepseek-chat",
temperature: 0
}).bindTools([addTool, weatherTool])
这一行代码,本质是在告诉模型:
你不需要什么都会,
你只需要学会什么时候该用哪个工具。
七、模型是如何决定调用 Tool 的?
arduino
const res = await model.invoke("北京今天天气怎么样")
如果模型认为需要工具,会返回:
res.tool_calls
你只需要按调用结果执行即可:
vbnet
if (res.tool_calls?.length) {
const call = res.tool_calls[0]
if (call.name === "get_weather") {
const result = await weatherTool.invoke(call.args)
console.log("最终结果:", result)
}
}
此时模型只负责"决策",
代码只负责"执行"。
效果图:

八、Tool 在架构中的真实定位
如果放到工程视角来看:
- Model:意图理解 + 决策
- Tool:真实能力(计算、查询、操作)
- 你的代码:调度与安全边界
可以把 Tool 理解为:
AI 系统里的 Service 层。
九、为什么说 Tool 是 AI 应用的分水岭
没有 Tool:
- AI 只能生成文本
- 无法落地真实业务
有 Tool:
- AI 可以参与业务流程
- 可以接数据库、接口、文件系统
- 可以作为"智能调度器"存在
这是从"玩模型"到"做系统"的转折点。
十、总结
Prompt 决定模型说什么,
Tool 决定模型能做什么。
如果你愿意,下一步可以继续深入:
- Tool + 多模型协作
- Tool + Agent 自动决策
- 用 Tool 设计一个完整 AI 后端架构
这才是 LangChain 真正值得花时间研究的地方。