
如何在Python中使用ChatGPT API?
OpenAI 早在2023年06月就推出了 Function Calling,为大模型提供了工具调用功能。Anthropic 在2024年11月推出了 MCP,旨在标准化 AI 大模型与外部工具和数据源的交互。
MCP 是否要取代 Function Calling?下文详细剖析。
Function Calling 是由 OpenAI 等公司推动的一种技术,它允许大语言模型(LLM)通过自然语言指令与外部工具和服务进行交互,从而将自然语言转换为具体的 API 调用。这一技术解决了大语言模型在训练完成后知识更新停滞的问题,使大模型能够获取实时信息,比如:当前的天气、股市收盘点数等。
Function Calling 的工作原理可以通过以下4个步骤来理解:
识别需求:大模型识别出用户的问题需要调用外部 API 来获取实时信息。例如:用户询问“今天北京的天气如何?”大模型会识别出这是一个关于实时天气的问题。
选择函数:大模型从可用的函数库中选择合适的函数。在这个例子中,大模型会选择 get_current_weather 函数。
准备参数:大模型准备调用函数所需的参数。例如:
{
"location": "北京",
"unit": "celsius"
}
调用函数:AI 应用使用这些参数调用实际的天气 API,获取北京的实时天气数据。
整合回答:大模型将获取的数据整合成一个完整的回答,比如:“根据最新数据,北京今天的天气晴朗,当前温度23°C,湿度45%,微风。今天的最高温度预计为26°C,最低温度为18°C。”
对于开发者来说,使用 LLM 的 Function Calling 入门相对容易。
然而,Function Calling 也有一些局限性:
Function Calling 是一种强大的工具,它为大语言模型提供了与外部工具和服务交互的能力,从而解决了大模型知识更新停滞的问题。然而,它的局限性在于缺乏跨模型的一致性和平台依赖性。尽管如此,Function Calling 仍然是一个重要的技术,尤其是在需要快速实现特定功能时。未来,随着技术的不断发展,我们期待看到更多能够克服这些局限性的解决方案。
MCP(Model Context Protocol)是由 Anthropic 公司提出的一种协议,旨在解决不同大语言模型(LLM)与不同外部工具集成的标准化问题。通过 MCP,开发者能够以一种统一的方式将各种数据源和工具连接到 AI 大模型,从而提升大模型的实用性和灵活性。
目前,MCP 生态已经得到了广泛的支持,包括 Anthropic 的 Claude 系列、OpenAI 的 GPT 系列、Meta 的 Llama 系列、DeepSeek、阿里的通义系列以及 Anysphere 的 Cursor 等主流模型均已接入 MCP 生态。
MCP 采用了客户端-服务器架构,主要包括以下几个核心组件:
MCP 主机(Hosts)
MCP 客户端(Clients)
MCP 服务器(Servers)
数据源
MCP 通过其客户端-服务器架构和标准化的协议,为 AI 大模型与外部工具和数据源的集成提供了一个高效、安全且灵活的解决方案。它不仅解决了不同大模型与工具之间的兼容性问题,还为开发者提供了一个丰富的生态系统,使得 AI 应用的开发和部署变得更加简单和高效。
MCP 不是 Function Calling 的替代,而是基于 Function Calling 的工具箱。
很多人误认为,MCP 是对传统 Function Calling 的一种替代。而实际上,两者并非替代关系,而是紧密合作的关系。
因此 MCP 不是要取代 Function Calling,而是在 Function Calling 基础上,联合 Agent 一起去完成复杂任务。
如果把整个工具调用的流程剖析开来,实际是“Function Calling + Agent + MCP 系统”的组合。
用一句话说清楚:
用一个比喻来理解:
在过去没有 MCP 时:
而有了 MCP 后:
但大模型的 Function Calling 没有任何变化。
{tool: “买咖啡”, "type": "美式"}
这个形式。不过在过去,有人会把这一整套 Function Calling + Agent + API 的模式叫做一个 Function Calling,所以会引起混淆。
通过区分 Function Calling 和 MCP,我们可以清晰地看出,MCP 并不负责决定使用哪个工具,也不进行任务规划或理解用户意图。这些是 Agent 层面的工作。MCP 只是提供了一个统一的工具接口,成为了产业内认可的工具调用标准协议。