Tool Use (工具使用): 赋予 AI “手脚”以操作世界
一个大语言模型(LLM)就像一个博览群书、与世隔绝的“超级大脑”。它知道关于世界的一切,但仅限于它训练截止日期前的信息。它无法回答“今天天气怎么样?”,也无法帮你“订一张机票”。
Tool Use (工具使用),就是为这个强大的“大脑”接上可以感知和操作世界的“五官”和“四肢”的核心能力。它是一套通用的“对话协议”,让 AI 能够安全、可控地利用外部工具(如 API、数据库、代码解释器)来完成任务。
可以说,Tool Use 是区分“聊天机器人 (Chatbot)”和“智能代理 (Intelligent Agent)”的分水岭。
本文核心洞察
- 核心目标:
Tool Use
旨在让 LLM 超越其静态知识库,通过调用外部工具来获取实时信息、操作外部服务或与私有数据交互。 - 核心实现 - Function Calling:
Function Calling
是Tool Use
最核心、最普遍的一种实现方式。它定义了一个“AI 计划 → 你的代码执行 → AI 总结”的安全闭环,是理解工具使用工作原理的最佳入口。 - 普遍性:任何能够进行联网搜索、数据分析、预订服务或使用插件的现代 AI 助手(如 ChatGPT Plus、Copilot),其底层都必然使用了
Tool Use
作为核心逻辑。 - 对开发者的价值:它将 AI 的决策能力与传统编程的可靠执行相结合,为开发者提供了一把“超能力钥匙”,能够构建出真正实用、能解决现实问题的 AI 应用。
工作原理:以 Function Calling 为例的“计划-执行-总结”安全闭环
要理解 Tool Use
的工作原理,最好的方式就是深入其最经典的实现——Function Calling。
第 1 步 (准备):向 AI “亮出你的工具箱”
在与 AI 对话前,开发者首先要在代码中定义好可供 AI 使用的“工具”(即函数),并清晰地描述每个工具的功能和所需参数。
示例:在调用 LLM API 时,你会传入一段类似 这样的 JSON 定义来描述你的工具:
{
"tools": [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "获取一个指定城市的实时天气情况",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称, e.g., 北京"
}
},
"required": ["city"]
}
}
}
]
}
AI 现在“知道”了它有一个可以查天气的工具。
第 2 步 (AI 计划):理解意图,提议调用
用户提问:“今天北京的天气怎么样?”
- LLM 分析问题,发现其内部知识无法回答。
- 它查阅“工具箱”,发现
get_current_weather
函数的功能描述与用户意图完美匹配。 - 它从问题中提取出所需参数
city
的值为“北京”。 - 关键一步:LLM 不会自己执行函数。它会暂停,并向你的应用程序返回一个结构化的“调用请求”:
“我建议调用
get_current_weather
函 数,参数是{'city': '北京'}
。请执行。”
第 3 步 (你的代码执行):与真实世界交互
你的应用程序(Python/JS 等)接收到这个“调用请求”。
- 你的代码解析出函数名和参数。
- 你的代码负责执行真正的操作,比如调用一个真实的天气 API。
- 执行后,你的代码获得了结果,比如:
{'temperature': '15°C', 'condition': '晴'}
。
第 4 步 (AI 总结):整合信息,生成回答
你的应用程序将上一步的执行结果,连同历史对话一起,再次发送给 LLM。
- LLM 现在同时拥有了用户的原始问题和它所需要的实时数据。
- 它将这些信息整合成一句通顺、自然的最终回答,并返回给用户:
“今天北京的天气是晴天,温度为15摄氏度。”