从单一场景到复杂场景,聊聊LLMs中Function calling到MCP的技术演进

发布于 2025-9-22 07:01
浏览
0收藏

对于使用大模型(LLMs)的人来说,可能更熟悉的是MCP多一些,而对于Function calling其实更偏于技术层面的东西,但是从应用场景上二者还是有些相似之处。

或者简单来说,在没有MCP协议之前,想要通过构建一个AI应用需要依赖的就是Function calling,简单来说它就是函数调用,这个函数可以是你所期望读取信息的任何接口,比如要调用微信公众号的开放接口,就可以定一个Function calling来通过http来调用。

Functioncalling的核心能力,正如OpenAI官网介绍:为模型提供新的功能和数据,使它们能够遵循指令并响应提示,使其能够与外部系统交互并访问训练数据之外的实时数据。这里的核心是外部交互和实时数据

Function Calling 一般的过程如下:

将用户的自然语言输入与已有函数的描述作为输入参数传给 LLM;

  • LLM 结合输入参数,决定调用哪些函数,并指明必要参数(如函数的入参),进行格式化(如 JSON、XML 格式)的输出;
  • 用户端接收到 LLM 格式化的函数调用后,对本地的函数进行调用,得到结果;
  • 将得到的函数结果传给 LLM,使得 LLM 有了所需的上下文信息。

对于大模型来说,它的内容都是经过预训练得到的,所谓预训练就是获取网络数据,然后将数据归纳清楚之后,给到大模型能够识别的数据结构,再结合算法、算力来训练模型的能力,简单来说就是读书、学习、思考的过程。

但是它有一个问题,就是只能知道自己过往学习到的东西,对于即时性的内容,它感知不到的,例如对于chatGPT-5来说,它的训练数据的采集截止日期是:2024年6月。

从单一场景到复杂场景,聊聊LLMs中Function calling到MCP的技术演进-AI.x社区

也就是说,2024年6月之后的数据原则上它都不知道。

但是现在它通过封装了API能力结合网络搜索(爬虫),就可以组合出一个智能实时检索+问答能力,它就可以不再依托于模型本身训练数据,而是具备对外实施扩展数据能力,类似在搜索引擎上面加一个智能体。

Function calling 调用流程

Function calling是通过 OpenAI API 在应用程序和模型之间进行的多步骤对话,调用流程包括五个步骤:

  1. 向模型发起请求,它可能调用的工具
  2. 从模型接收工具调用
  3. 使用工具调用的输入在应用端执行代码
  4. 使用工具输出向模型发起第二次请求
  5. 从模型接收最终响应(或更多工具调用)

从单一场景到复杂场景,聊聊LLMs中Function calling到MCP的技术演进-AI.x社区

Function calling实际上就是结合LLM本身的能力,其实我觉得Function calling是一个复杂的技术工程,从单一的场景到复杂的场景,所要维护的API服务的数量就会非常庞大。

而在说到MCP(Model Context Protocol),MCP相对于function calling来说,可以说是一个一站式的能力,当然它也有一定的问题。

MCP 的核心理念:分而治之!MCP 通过将工具与其使用者(AI)分离来解决这个问题:

MCP Server 是实际接口服务的地址,例如天气预报或邮件管理、内部系统地址链接等等都放在这里,它完全独立于 AI 运行,可以用任何编程语言编写。

MCP 客户端 作为连接器(通常是 AI Agent的一部分)。它负责查找可用的工具,帮助 AI 正确格式化请求,并处理与服务器之间的通信。

从单一场景到复杂场景,聊聊LLMs中Function calling到MCP的技术演进-AI.x社区

MCP 的核心作用

  • MCP补充了人工智能应用中,和内部系统对接的短板。
  • 通过插件式的方式提升了AI应用的内部灵活性,每个插件都可以灵活调用、独立维护。
  • 几乎所有的数据库、开源系统都可以构建一个独立的MCP出来,扩大在AI应用的使用场景。

什么时候应该用 MCP 而不是 Function calling?

  • 如果你只是调用一个简单的 API(比如获取天气或股票价格),函数调用就足够了。
  • 如果你需要 AI 与多个工具交互、跟踪上下文或在不进行持续请求的情况下获取实时更新,MCP 就是一个确定性的解决方案。

例如,想象你正在构建一个 AI 编程助手:

  • 使用函数调用,AI 可以获取函数定义,但如果后来你要调试某些内容,你必须手动调用另一个函数来获取日志、依赖项等。
  • 使用 MCP,当 AI 询问某个函数时,IDE 可以自动发送调试信息,这使得它变得非常智能。

Function calling与 MCP:一种互补关系

虽然Function calling和 MCP 都是将 LLM 与企业系统集成的重要组成部分,但它们解决的是不同的挑战:

• Function calling专注于将提示转换为可操作的指令,它是 LLM 驱动的,并且在不同的服务接口之间存在差异,目前还没有通用的标准。

• MCP 标准化了这些指令的执行,实现了跨数千种工具的可扩展性和互操作性。

二者都共同确保 LLMs 不仅能解释自然语言提示,还能通过利用企业工具提供有正确的结果,而随着 MCP 的不断发展,它将重新定义 LLMs 与企业工具的交互方式,使集成更具可扩展性、灵活性和效率。

从单一场景到复杂场景,聊聊LLMs中Function calling到MCP的技术演进-AI.x社区

所以,MCP 和Function calling本质来说二者并不冲突,它们是同一工作流程的两个方面。

本文转载自DataForAI,作者:王笠

已于2025-9-22 07:01:15修改
收藏
回复
举报
回复
相关推荐