一个需要查询订单状态的 agent 必须从持有该订单的系统中获取信息。工具定义描述了它可以请求的查询操作。
这两个名称的含义不同吗?
部分提供商将这两个名称互换使用。提供商的工具定义决定了你需要实现的接口。
OpenAI 的 function-calling 指南将 function calling 和 tool calling 用于同一过程。在其工具类型中,function 使用 JSON schema 来描述输入。其自定义工具则接受自由格式文本。
Google 的 function-calling 指南也将该过程称为 tool use。模型返回请求的函数及其参数,由应用程序执行。
谁来执行请求的操作?
你的应用程序在收到模型的请求后,执行应用程序中定义的函数。
在 OpenAI 的 tool-calling 流程中,应用程序提供工具定义并接收调用。它运行对应的代码,将结果返回给模型。模型随后可以进行回复或请求另一个工具。
一个假设的订单查询遵循以下交互流程:
Model: request lookup_order with an order ID
-> Application: authorize and run the lookup
-> Order service: return the recorded status
-> Application: supply the tool result to the model
-> Model: answer using that result
Google 的指南同样描述了应用程序将返回的函数名映射到可执行代码的过程。仅包含参数的模型响应本身并未执行查询。
MCP 在其中扮演什么角色?
MCP 为客户端提供了一种协议,用于发现和调用服务器暴露的工具。
MCP 架构指南将客户端-服务器交互与宿主应用程序的模型交互分开。宿主可以将发现的服务器工具提供给模型,然后通过其 MCP 客户端路由请求的调用。
你可以在不使用 MCP 的情况下实现模型的函数处理程序。你也可以通过调用 MCP 服务器来实现该处理程序。这些选择涉及的是操作背后的连接方式。
使用 Bird 发送时,如何检查结果?
你可以使用 Bird 的 MCP 工具来发送消息并检索其记录的状态。
对于邮件,email_send 提交发送请求。保留返回的消息标识符,并使用 email_get 查看其汇总投递状态。收件人详情包含各个收件人的结果。
格式正确的工具请求并不意味着投递成功。已接受与已投递的解答说明了后续状态所确认的内容。