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多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。