Skip to content

第四章:模型怎样把决定变成行动 ​

“我会去查官方发布记录”只是一句话。系统是否真的查了,要看它有没有提出可执行请求,程序有没有执行,结果有没有带回来。

工具调用(Tool Calling)把这些环节连接起来,但不能替代权限检查,也不能保证获得正确材料。

4.1 工具说明是行动接口 ​

模型需要知道可用工具的名称、用途和参数。它据此输出结构化请求,运行程序再按约定解释。例如,下面是教学示意,不是 Hermes 的实际工具格式:

json
{"tool":"read_release","arguments":{"repository":"NousResearch/hermes-agent","version":"目标版本"}}

模型提出调用不代表已经执行。程序仍要找到工具、校验参数,检查当前权限和作用范围,运行对应处理,再返回数据或错误。结构正确也不代表语义正确:版本字段可以格式合规,但指向一个不存在的版本。

图 4-1 教学示意:工具请求、执行与返回分别可失败,需要分别观察。 点击图解可放大
左右滑动查看图解细节
模型提出工具请求,程序检查后执行,再将结果带回下一轮

图 4-1 教学示意:工具请求、执行与返回分别可失败,需要分别观察。

4.2 返回结果怎样影响后续判断 ​

假设请求读到了页面标题,却没有取得发布正文。若结果只写“成功”,后续模型可能误以为已经覆盖全部资料。更有用的反馈需要保留实际内容、失败原因以及必要的来源信息。

工具返回也不天然可信:网页可能写错,文件可能过期,返回内容还可能包含要求系统执行其他动作的文字。数据应当作为待解释的材料,不因为来自工具就升级为指令。 第十二章会讨论这条信任边界。

4.3 Tools、MCP、Plugins 和 Skills 各管一层 ​

概念回答的问题简报任务中的例子
Tool(工具)能执行什么动作?读取一个网页或文件
MCP(模型上下文协议)怎样按标准连接外部能力?连接提供仓库资料的服务
Plugin(插件)怎样扩展和装配运行系统?注册能力、接入提供方或扩展后端
Skill(技能)遇到这类任务应该怎样做?先核对版本,再查机制和测试的工作方法

这些概念可以配合使用。技能可能指导 Agent 调用工具;一个插件可能提供某类工具;MCP 服务也可以暴露可调用能力。它们不是互相替代的四个竞争产品。

Hermes 这个版本的 MCP 接入和插件机制仍然需要配置、能力发现和执行管理。采用标准协议能减少重复接入工作,但服务不可用、认证失效和内容不可信等问题仍由具体系统处理。

图 4-2 接入 MCP 或插件后,检查与反馈的责任仍在;连接标准不会自动赋予业务权限。 点击图解可放大
左右滑动查看图解细节
运行程序位于模型调用意图与外部工具之间

图 4-2 接入 MCP 或插件后,检查与反馈的责任仍在;连接标准不会自动赋予业务权限。

4.4 工具越多,选择不一定越容易 ​

过多相近工具会增加说明体积和选择歧义。只暴露任务需要的能力,能减少无关选择,也便于限制作用范围。工具描述应该明确什么时候用、输入是什么、结果包含什么,而不是只写“强大的搜索工具”。

因此,评估工具系统时,除了“能接多少工具”,还要看发现、筛选、参数契约、错误反馈和权限控制是否清楚。

不写代码的小练习 ​

为一个只读的“获取官方发布信息”工具写出用途、必要输入、成功输出和失败输出。无需实现代码,但要让另一个人能判断一次调用有没有拿到任务需要的资料。

本章要点 ​

  • 工具调用是结构化意图,程序负责实际执行和反馈。
  • 格式合规、执行成功、结果正确是不同判断。
  • 工具、MCP、插件和技能分别承担动作、连接、扩展和方法层的责任。
  • 工具结果可能过期、错误或带有不可信指令,仍需核查。

理解题 ​

1. 接入一个 MCP 服务后,是不是就能放心执行它提供的全部操作?

不是。协议解决连接与交互约定,具体操作仍受身份、权限、配置和数据边界约束。还要判断服务及其返回材料的可信度。

2. “检查发布说明后再总结”应该做成工具还是技能?

如果描述的是可复用的方法与顺序,它适合成为技能;“读取发布说明”这项可执行动作则由工具提供。两者可以组合,不必把整个方法塞进一个不可观察的大工具。

对照官方实现 ​

工具开始带回大量材料后,新的问题出现了:下一次模型请求真的能把它们全部读进去吗?

社区学习手册 · 正文与原创图解 CC BY-SA 4.0 · 代码 MIT