LLMs的函数调用和MCP

在 MCP 成为主流(或像现在这样流行)之前,大多数 AI 工作流都依赖于传统的函数调用。

现在,MCP(模型上下文协议)正在为开发人员构建代理程序构建工具访问和编排的方式发生转变。

这是一个解释函数调用和MCP的视觉效果:

让我们深入了解一下!

什么是函数调用?

函数调用是一种机制,它允许 LLM 根据用户的输入识别它需要什么工具以及何时调用它。

以下是它通常的工作原理:
  • LLM 收到来自用户的提示。
  • LLM 决定它需要的工具。
  • 程序员实现过程以接受来自 LLM 的工具调用请求并准备函数调用。
  • 函数调用(带参数)将传递给将处理实际执行的后端服务。

让我们快速了解一下!

首先,我们定义一个工具函数get_stock_price。它使用yfinancelibrary 获取指定股票代码的最新收盘价:

接下来,我们提示一个 LLM(与 Ollama 一起提供)并传递模型可以访问的外部信息工具(如果需要):

打印response,我们得到:

请注意,message键responseobject 具有tool_calls,其中包括相关详细信息,例如:

  • tool.function.name:要调用的工具的名称。
  • tool.function.arguments:工具所需的参数。

因此,我们可以利用此信息来生成响应,如下所示:

这将生成以下输出:

请注意,整个过程发生在我们的应用程序上下文中。我们负责:

  • 托管和维护工具/API。
  • 实现一个逻辑来确定应该调用哪些工具及其参数是什么。
  • 处理工具执行并在需要时进行缩放。
  • 管理身份验证和错误处理。

简而言之,Function Calling 就是在您自己的堆栈中启用动态工具使用,但它仍然需要您手动连接所有内容。

什么是 MCP?

MCP(即模型上下文协议)试图标准化此过程。

函数调用侧重于模型想要做什么,而 MCP 侧重于如何使工具可被发现和可消费,尤其是在多个代理、模型或平台之间。

MCP 不是在每个应用程序或代理中硬连接工具,而是:

  • 标准化了工具的定义、托管和向 LLM 公开的方式。
  • 使 LLM 能够轻松发现可用工具、了解其架构并使用它们。
  • 在调用工具之前提供审批和审计工作流程。
  • 将工具实施的关注与消费分开。

让我们通过集成来真正快速地了解这一点Firecrawl 的 MCP 服务器利用 Cursor IDE 中的抓取工具。

为此,请转到 MCP → 设置 → 添加新的全局 MCP 服务器。

在 JSON 文件中,添加如下所示👇的内容

完成后,您将找到 Firecrawl 的 MCP 服务器公开的所有工具,您的代理可以使用!

请注意,我们没有编写一行 Python 代码来集成 Firecrawl 的工具。相反,我们只是集成了 MCP 服务器。

  • 它识别了 MCP 工具 (scraper)。
  • 准备 input 参数。
  • 已调用抓取工具。
  • 已使用该工具的输出生成响应。

所以换句话说,将 MCP 视为基础设施。

它创建了一个共享生态系统,其中工具被视为标准化服务,类似于 REST API 或 gRPC 端点在传统软件工程中的工作方式。

结尾

  • MCP 和 Function Calling 并不冲突。它们是同一工作流程的两个方面。
  • Function Calling 则更像是一种让 LLM 具备 "调用外部函数" 能力的机制,将实际的 API 调用和数据处理的责任交给应用程序。这种方式可以更直接地将 LLM 的智能与现有应用程序的功能相结合。
  • MCP 似乎更侧重于构建一个由 LLM 控制的、能够协调多个外部工具的更复杂的系统。它通过引入中间层来解耦 LLM 和具体的 API 交互。

如果对你有帮助, 请关注作者, 了解更多前沿技术。

声明: 此文章为转译文章, 部分内容为作者补充, 以帮助更多人来学习。

本文由mdnice多平台发布


咆哮的机器猫
1 声望0 粉丝