AI 为何能查天气、订机票?揭秘大模型背后的“神秘工具箱”
你有没有想过,为什么 AI 能回答“今天上海天气怎么样?”这种实时问题,甚至帮你预订机票?明明它的训练数据截止到去年,怎么会对现在的事情了如指掌?
答案就藏在一个核心技术里——工具调用(Tool Calling)。
简单说,工具调用就是让大模型在遇到自己搞不定的问题时,能像我们一样,打开一个“工具箱”,借用外部工具来完成任务。
这个“工具箱”里什么都有:网页搜索、计算器、API 调用、数据库查询……任何能帮它完成特定任务的,都可以是它的工具。
目前,工具调用技术已经相当成熟,几乎所有主流的 AI 大模型和开发平台都已支持。
AI 真的会“自己”调用工具吗?
一听到“工具调用”,很多人会误以为是 AI 服务器自己去执行了某个工具。
大错特错!
真相是:AI 只负责“提要求”,而真正干活的,是我们自己的应用程序。
整个过程更像是一个分工明确的团队协作。我们以“什么是 MCP?”这个问题为例,看看团队是如何配合的:
- 用户:提出问题:“什么是 MCP?”
- 程序(项目经理):将问题转达给 大模型(技术专家)。
- 大模型(技术专家):分析后发现知识库里没有,判断需要上网搜索,于是向程序提要求:“我需要用「网页抓取工具」查一下,关键词是 MCP”。
- 程序(项目经理):收到请求,立刻安排 网页抓取工具(实习生) 去执行。
- 网页抓取工具(实习生):勤勤恳恳地完成抓取,把数据返回给程序。
- 程序(项目经理):将抓取到的信息整理好,再次交给 大模型(技术专家)。
- 大模型(技术专家):阅读信息,总结提炼,生成一份通俗易懂的回答。
- 程序(项目经理):最后,将这份完美的答案呈现给用户。
participant 用户
participant 应用程序 (项目经理)
participant 大模型 (技术专家)
participant 网页抓取工具 (实习生)
用户->>应用程序 (项目经理): 1. 提问: "什么是MCP?"
应用程序 (项目经理)->>大模型 (技术专家): 2. 传递用户问题
大模型 (技术专家)->>大模型 (技术专家): 3. 分析问题,发现知识盲区
大模型 (技术专家)->>应用程序 (项目经理): 4. 请求调用工具<br/>工具: 网页抓取工具<br/>参数: 搜索 "MCP"
应用程序 (项目经理)->>网页抓取工具 (实习生): 5. 执行网页抓取
网页抓取工具 (实习生)->>应用程序 (项目经理): 6. 返回抓取结果
应用程序 (项目经理)->>大模型 (技术专家): 7. 将结果传回
大模型 (技术专家)->>大模型 (技术专家): 8. 分析信息,生成回答
大模型 (技术专家)->>应用程序 (项目经理): 9. 返回最终答案
应用程序 (项目经理)->>用户: 10. 呈现答案
Note over 用户,网页抓取工具: 核心:AI 不直接执行工具,由应用程序协调
Note over 大模型 (技术专家): AI 只负责思考和决策
Note over 网页抓取工具 (实习生): 工具在安全可控的环境中执行
看明白了吗?AI 只是“大脑”,负责思考和决策,而我们的应用程序才是“手脚”,负责执行和落地。
为什么要设计得这么“麻烦”?
你可能会问:为什么不让 AI 直接调用工具,一步到位?这样来回传递不浪费时间吗?
这背后最重要的考量是——安全!
这种设计确保了 AI 永远无法直接触碰你系统的核心资源。所有操作都必须经过你程序的“批准”,你拥有绝对的控制权,可以决定 AI 能做什么,不能做什么。
举个极端点的例子:假如你开发了一个“房屋爆破”工具。
- 现在的方式:用户对 AI 说“帮我把这栋楼炸了”。AI 分析后,会向你的程序申请:“我需要使用「房屋爆破」工具”。这时,你的程序可以立刻拒绝这个危险请求,从而避免灾难。
- 如果 AI 直接调用:AI 觉得这个需求很合理,直接就执行了。等你反应过来,房子可能已经没了。
把决定权留在我们自己手里,既能利用 AI 的智慧,又能保证系统的安全,还能减轻 AI 服务器的负担,何乐而不为呢?
工具调用 vs 功能调用
如果你在看技术文档时遇到 Function Calling(功能调用) 这个词,别懵,它和 Tool Calling(工具调用) 说的完全是同一件事!只是不同厂商或开发者习惯的叫法不同。
Spring AI 的官方文档开篇就明确了这一点:

我个人更喜欢“工具调用”这个说法,因为它更形象。“Function”一听就像是程序员的黑话,而“工具”则更加通俗易懂,不是吗?

好了,今天关于“工具调用”的分享就到这里。
希望这篇文章能帮你彻底搞懂 AI 是如何借助外部力量变聪明的。如果你觉得有收获,不妨点个赞、在看,或者分享给更多朋友。
对于工具调用,你还有什么疑问或有趣的想法?欢迎在评论区留言讨论!
AI 为何能查天气、订机票?揭秘大模型背后的“神秘工具箱”的更多相关文章
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- AI大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- 小故事学设计模式之Observer : (三) 老婆帮忙订机票
(IT的事就是过场多,过场多了就容易忘,所以我们不妨看一个记一个,这也是一个办法,顺便还能跟同行们交流一下) 要和老婆一起回老家了, 成都离我们安徽太远, 两个人飞一下过去就要花掉近三千块, 于是我 ...
- 员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...
- POJ 2985 The k-th Largest Group(树状数组 并查集/查找第k大的数)
传送门 The k-th Largest Group Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8690 Acce ...
- HDU 3726 Graph and Queries 平衡树+前向星+并查集+离线操作+逆向思维 数据结构大综合题
Graph and Queries Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 51Nod - 1640 天气晴朗的魔法 大+小生成树(最大值最小)/二分
天气晴朗的魔法 这样阴沉的天气持续下去,我们不免担心起他的健康. 51nod魔法学校近日开展了主题为“天气晴朗”的魔法交流活动. N名魔法师按阵法站好,之后选取N - 1条魔法链将所有魔法师的 ...
- 阿里AI芯片:12nm工艺、709平方毫米大核心
含光出自<列子·汤问>篇有“上古三剑”一章,寓意含而不露,光而不耀,象征含光 800 无形却强劲的算力. 含光 800 是一款 AI 芯片,偏重推理.据介绍,1 颗含光 800 的算力相当 ...
- 揭秘String类型背后的故事——带你领略汇编语言魅力
字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s=“a1a2···an”(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数 ...
- 这可能是AI、机器学习和大数据领域覆盖最全的一份速查表
https://mp.weixin.qq.com/s?__biz=MjM5ODE1NDYyMA==&mid=2653390110&idx=1&sn=b3e5d6e946b719 ...
随机推荐
- 一文带你深度剖析什么叫Transformer
Transformer概述 Transformer是基于自注意机制(self-attention)的神经网络模型.其经常用于来处理时序数据.我们知道还有另外的常用的两类深度神经网络模型循环神经网络(R ...
- vue路由params传参时出现undefined
1.问题: 使用params方式传参时(参数不显示的方式) 获取参数时,参数undefined 2.解决: push时请使用name,不要使用path(路由的params对象使用,必须通过路由名nam ...
- 反悔贪心&局部调整法学习笔记
一.什么是反悔贪心 反悔贪心就是在普通贪心的过程中"反悔",从而使得一些看似不太好贪心的题变成贪心可做题. 二.反悔贪心普遍流程 就是先使用一个好想的贪心策略,使用优先队列进行维护 ...
- 奶奶都能看懂的 CSS 选择器基础语法&常用属性&优先级
标题都是奶奶都能看懂了,那么我们肯定从最基础的开始讲.之所以这么自信是因为能踩的坑全帮你们踩过了-- 开始之前,先来首诗感受一下,具体啥意思你看完本文就懂了. 点类井号逗为或,类多号单连为且. id ...
- Flask 中用 dbutils 实现数据库连接池
之前用 dbutils 来实现数据库连接池, 这里将其封装为一个自定义类并在 flask 中实际应用一下, 在实际场景中肯定是多页面接口, 这也就涉及到 python 的 import 问题, 就个人 ...
- Python基础 - 微线程
也是多任务系列哦, 进程, 线程, 微线程, 这样一来, 对于多任务这个话题, 应该算是有所涉猎了吧. 我也不怎用其实. 微线程, 就是在 单线程的前提下, 完成多任务, 多任务按照一定顺序交替执行. ...
- Vue知识沉淀
为什么组件my-item的props是listCount,但传入时候用:list-count传入,而 listCount与list-count不一致 <!DOCTYPE html> < ...
- 推荐一个Elasticsearch ES可视化客户端工具:ES-King
ES-King:开源免费,一个现代.实用的ES GUI客户端,支持多平台. 下载地址:https://github.com/Bronya0/ES-King 功能清单 详尽的集群信息:节点信息.堆内存占 ...
- Linux常用命令介绍-文件管理
MV命令 - 移动或改名文件 mv命令来自英文单词move的缩写,中文译为"移动",其功能与英文含义相同,能够对文件进行剪切和重命名操作.这是一个被高频使用的文件管理命令,需要留意 ...
- 简单说说C#中委托的使用-01
简单说说C#中委托的使用-01 前言 距离上次更新文章,已经过去...月了. 没更新文章的主要原因,主要是因为参加工作后,感觉思维没有上学那会活跃,写文章没有思绪.再就是上班的时候把精力用光了,下班后 ...