夜雨聆风学习资料网

ARTICLE · 1042673

AI 为什么会调用工具?

AI 为什么会调用工具?

AI 为什么会调用工具?

一篇讲清 Tool Calling 与 MCP

如果你问 AI:“上海现在会下雨吗?”它需要的不是一段更聪明的推理,而是实时天气数据。

这时,应用可以把天气查询能力作为工具提供给模型。模型判断该用哪个工具,并生成调用参数;真正发起查询的是应用或 Agent 运行时。结果返回后,模型再把数据整理成自然语言。

我们看到的是一句完整回答,背后其实完成了一次“模型提请求、程序去执行、结果再回来”的闭环。

一次工具调用的完整闭环:用户提问、模型生成调用、应用执行、结果返回、模型回答

一、模型“调用工具”时,实际发生了什么

先看一条完整路径:

  1. 1. 用户提出问题;
  2. 2. 应用把当前可用的工具定义交给模型;
  3. 3. 模型选择工具,生成工具名称和参数;
  4. 4. 应用或 Agent 运行时接收调用请求,检查后执行真实工具;
  5. 5. 工具把结果返回给应用,应用再把结果交回模型;
  6. 6. 模型根据结果继续回答,必要时也可以再次请求工具。

可以把它压缩成一条流程:

用户提问 → 模型生成调用请求 → 应用检查并执行 → 工具返回结果 → 模型组织回答

这里最容易误解的是第 3 步。

模型输出的不是天气、订单状态或文件内容,而是一份结构化请求,意思接近:“请调用 get_weather,参数是 city=上海。”

后面的连接、鉴权、执行和异常处理,仍由应用、Agent 运行时或它们托管的工具系统完成。一次 Tool Call 只是“请求执行”,不等于动作已经成功。

二、为什么工具调用要用结构化数据

如果只让模型说一句“请帮我查上海天气”,程序还要从自然语言里猜工具名、城市和参数格式,很容易产生歧义。

因此,应用会先把工具定义提供给模型。一份基础定义通常包含:

  • • 名称:程序应该调用哪一个工具;
  • • 描述:这个工具负责什么,适合在什么情况下使用;
  • • 参数结构:需要哪些输入、每个输入是什么类型、哪些字段必填。

下面是一份简化后的天气工具定义,重点是看结构,不对应某个平台的完整请求格式:

{"name":"get_weather","description":"查询指定城市的实时天气","parameters":{"type":"object","properties":{"city":{"type":"string","description":"需要查询的城市名称"}},"required":["city"]}}
工具定义拆解:名称帮助定位工具,描述帮助判断用途,参数结构约束输入

用户询问上海天气时,模型可能生成这样的调用请求:

{"name":"get_weather","arguments":{"city":"上海"}}

应用读到这份请求后,才会运行对应代码或访问天气服务。

结构化格式让程序知道该调用谁、传入什么,也方便执行前做校验。不过,它约束的是输出形状,不会自动保证模型选对工具、参数含义正确或用户有权执行。应用仍然要检查。

三、应用才是工具执行的中间人

把模型、应用和工具分开看,很多问题就容易理解了。

模型擅长理解意图、选择工具、填写参数,再根据结果组织回答。应用负责维护工具清单、控制权限、验证参数、执行调用,并把结果送回模型。真正的业务代码或外部服务负责完成查询、计算、写入等动作。

例如,用户说:“帮我查一下订单 20260918 的配送状态。”

  • • 模型可能选择 get_order_status,生成订单号参数;
  • • 应用检查当前用户是否有查询权限,再调用订单系统;
  • • 订单系统返回状态;
  • • 模型把系统结果解释成便于阅读的回复。

如果用户要求“取消订单”,应用还可以在执行前弹出确认。是否允许自动执行,由产品规则、权限和用户授权共同决定,不能只交给模型判断。

四、Tool Calling 和 MCP 有什么关系

Tool Calling 描述的是模型参与工具使用的交互方式:模型从可用工具中做选择,并按约定格式生成调用请求;运行时执行工具,再把结果交回模型。

但工具从哪里来、怎样发现、如何传递调用和结果,是另一层问题。

没有 MCP,也可以使用 Tool Calling。开发者可以把本地函数、公司 API 或第三方服务逐个封装成工具。只是工具一多,不同系统的连接、鉴权和数据格式就会带来大量适配工作。

MCP(Model Context Protocol)提供了一套标准协议,让 AI 应用可以连接 MCP Server,发现 Server 暴露的能力,并按统一方式交换请求和结果。

Tool Calling 与 MCP 的关系:前者负责生成调用请求,后者规范应用与外部能力的连接

二者关注的层面不同:

  • • Tool Calling 关注一次调用怎样发生:选哪个工具、参数是什么、结果怎样回到模型;
  • • MCP 关注外部能力怎样接进来:Host 和 Server 如何发现能力、建立会话并交换消息。

接入 MCP 后,模型仍然是在生成调用意图和参数。Host、Client、Server 负责协议通信和实际执行。MCP 没有让模型绕过应用,也没有替应用做权限判断。

五、Host、Client、Server 怎么配合

MCP 采用 Host—Client—Server 架构。入门时可以这样理解:

Host:用户正在使用的 AI 应用

Host 是承载对话、模型和用户交互的应用,例如桌面助手或集成 AI 的开发工具。它负责管理连接、权限、用户授权和上下文,也会创建并管理 MCP Client。

Client:Host 里的协议连接组件

Client 负责和某一个 MCP Server 建立会话、协商双方支持的能力,并在 Host 与 Server 之间双向传递消息。一个 Client 与一个 Server 保持独立连接,避免不同 Server 直接共享整段对话或彼此的数据。

Server:对外提供能力的一端

Server 可以是本地进程,也可以是远程服务。它向 Client 暴露自己支持的工具、资源和提示模板,并在收到合规请求后返回结果。

MCP 架构:Host 管理多个 Client,每个 Client 与一个 Server 建立独立连接

用户主要和 Host 交互,Client 处理协议通信,Server 提供具体能力。Host 仍然掌握连接、上下文与授权边界。

六、MCP Server 可以提供什么

MCP Server 常见的三类基础能力是 toolsresources 和 prompts。它们不只是内容不同,通常由谁触发也不同。

Tools:让模型选择的可执行能力

Tools 用来查询信息或产生动作,例如查询数据库、创建工单、读取天气、写入文件。模型可以根据任务选择某个 Tool,但客户端仍应在敏感操作前让用户确认,并由 Server 校验输入、权限和执行条件。

Resources:由应用管理的上下文资料

Resources 是 Server 提供的数据或内容,例如文件、项目文档、数据库结构或应用信息。它们通常由 Host 决定怎样展示、读取或放入模型上下文,也可以让用户显式选择。

Prompts:由用户选择的任务模板

Prompts 是 Server 提供的提示模板,可以带参数。它们通常作为命令或任务入口展示给用户,由用户选择后再交给模型,而不是模型在后台自动执行。

MCP 三类基础能力:Tools 执行动作,Resources 提供上下文,Prompts 提供任务模板

这三类能力可以由同一个 Server 提供,也可以只实现其中一部分。连接初始化时,Client 和 Server 会声明各自支持的能力;没有声明的能力,不能默认存在。

七、Tool Calling、MCP、Agent Skill 怎样区分

这三个词常常同时出现。把它们放进一个具体任务里,分工会更直观。

假设我们要“查询线上错误记录,并生成一份故障分析”:

  • • Tool Calling:模型生成查询错误记录所需的工具名称和参数;
  • • MCP:AI 应用通过统一协议连接提供错误记录的 Server;
  • • Agent Skill:保存故障分析的步骤、参考资料、输出格式和检查要求。
Tool Calling、MCP 与 Agent Skill 分工:调用表达、连接协议、任务方法

一句话概括:

Tool Calling 管一次调用怎样发起,MCP 管外部能力怎样接入,Agent Skill 管一类任务怎样反复做好。

Agent Skill 可以要求 Agent 在某一步调用工具,也可以附带脚本和参考资料;但仅仅安装一个 Skill,并不会自动获得某个外部系统的访问权。真正的连接、凭证、权限和执行能力,仍要由运行环境或 MCP 等工具接入方式提供。

三者可以配合,但不能互相替代。

八、授权确认与安全边界

工具接入后,调用和回答仍然可能出错,而且错误会出现在不同环节:

  • • 模型选错工具,或生成了不合适的参数;
  • • 当前用户没有相应权限;
  • • 网络超时,或服务暂时不可用;
  • • 工具返回过期、缺失或格式异常的数据;
  • • 外部系统本身给出了错误结果;
  • • 工具返回的文本里包含误导模型的恶意指令。

因此,应用至少要做好几件事:

  • • 只开放当前任务需要的工具和最小权限;
  • • 执行前校验工具名称、参数类型和必要字段;
  • • 删除、付款、发送、发布、修改账号等高影响操作要求用户确认;
  • • 给调用设置超时、重试上限和清楚的失败提示;
  • • 把工具结果当作外部输入,检查来源、格式和合理性;
  • • 保留必要的调用记录,方便发现问题后追查。

工具返回的数据也不能天然视为事实。模型组织回答时,应忠实反映工具结果;结果不完整或互相冲突时,应该明确说明,而不是自行补齐。

九、从一次查询看懂整个过程

下次看到 AI 查询天气、搜索文件或创建任务时,可以把界面背后的流程拆开:

模型先根据工具定义生成结构化调用,应用检查并执行,工具返回数据,模型再继续回答。MCP 可以帮助应用用统一协议连接不同 Server,Agent Skill 则可以规定整项任务应该按什么步骤完成。

先分清谁在选择、谁在执行、谁在连接、谁在提供方法,工具调用就不再像一个藏在对话框里的魔法动作。

相关学习资料