13|Tool Calling:让模型“执行”而不只是“回答”
本篇目标这是 AI 从“聊天机器人”进化为“贾维斯”的关键一步。学会如何让 AI 操控你的电脑、读写文件、甚至帮你在网上买票。一、AI 的手脚从“嘴炮”到“行动派”在前面的章节里我们认识的 AI 都是“嘴炮王者”问“今天北京天气怎么样”AI“对不起我不知道。我的训练数据只到 2024 年。”因为它没有手脚没法去互联网上查。但是现在的 AI如 GPT-4o, Claude 3.5, DeepSeek-V3都有了一个超能力Tool Calling工具调用也叫Function Calling。核心原理你开发者告诉 AI“我手里有一个工具叫get_weather(city)能查天气。”用户问 AI“今天北京天气咋样”AI思考“用户想查天气 - 我需要用get_weather工具 - 参数是Beijing。”AI输出一个特殊的 JSON{tool: get_weather, args: {city: Beijing}}。你程序拿到这个 JSON真的去运行这个函数拿到结果“25度晴”。你把结果喂回给 AI。AI最终回复用户“今天北京天气不错25度是个大晴天。”注意AI不会自己去运行代码为了安全它只是告诉你要运行什么。真正的执行权在你手里。二、如何定义一个工具给 AI 发说明书要让 AI 用工具你得先给它写一份“说明书”。这份说明书通常是用JSON Schema写的。示例定义一个“计算器”工具{name:calculator,description:用于执行数学计算。当用户询问数学问题时使用。,parameters:{type:object,properties:{expression:{type:string,description:要计算的数学表达式例如 2 2 或 100 * 0.5}},required:[expression]}}关键点name工具的名字AI 靠这个引用。description最重要告诉 AI 什么时候该用这个工具。如果你写得不清不楚AI 就不会用。parameters告诉 AI 需要提取什么参数。三、实战流程一次完整的“工具调用”循环让我们看看在代码里是怎么跑通的以 OpenAI 格式为例第一步用户提问User: “帮我算算 12345 乘以 9876 是多少”第二步AI 决定调用工具AI 收到问题和工具定义后不直接回答而是返回Assistant (Tool Call):name: calculatorarguments: {expression: 12345 * 9876}第三步程序执行工具你的代码捕获到这个 Tool Call在本地运行result12345*9876# 结果是 121919220第四步把结果喂回给 AI你构造一条新消息发给 AITool Message:tool_call_id: call_abc123content: 121919220第五步AI 生成最终回答AI 看到结果后终于可以回复用户了Assistant: “12345 乘以 9876 的结果是 121,919,220。”四、进阶多步调用与 Agent如果任务很复杂AI 可能会连续调用多次工具。场景用户问“把这个文件夹里最大的图片发给我。”AI 的思考链Chain of Thought调用工具 Alist_files(dir.)- 拿到文件列表。调用工具 Bget_file_size(filea.jpg)… 循环查大小。比较大小发现c.png最大。调用工具 Cemail_file(filec.png)。回复用户“发送成功。”这就是Agent智能体的雏形——自主规划、连续执行。五、本篇产出工具定义模板以后你想给 AI 加新能力比如查库存、发邮件套用这个模板tool_definition{type:function,function:{name:[工具英文名如 stock_checker],description:[详细描述这个工具是干嘛的什么情况下应该用它],parameters:{type:object,properties:{[参数1]:{type:string/integer/boolean,description:[参数说明例如 股票代码如 AAPL]},[参数2]:{type:string,description:[可选参数说明],enum:[option1,option2]# 如果只能选固定的值}},required:[[参数1]]# 必填参数列表}}}练习题为什么 AI 不调用我的工具场景你定义了一个工具search_database描述是Search DB。用户问“查一下张三的订单”AI 却直接回“我查不到”。原因分析描述太烂Search DB太简略AI 不知道这个工具能查“订单”。修改建议把描述改成“用于查询用户的历史订单信息。当用户询问买过什么、订单状态时使用此工具。”记住AI 是很聪明的但也是很直男的。你必须把工具的用途说得明明白白。下一步我们已经让 AI 学会了用计算器和查天气。但在真实世界里我们处理最多的其实是文档和图片。下一章卷 1 最终章我们将学习多模态Multimodal——让 AI 长出眼睛看懂你的 PDF 和截图。