前言
自从发布MCP相关文章以来,收到很多小伙伴的私信,我发现大部分人都在问MCP和LLM的Function Call(下文统称为函数调用)到底有什么区别? 前文如下:
这是一个好问题,至少说明小伙伴们在认真阅读,并深度思考问题, 这个状态很好。另外另外也算是对笔者的鼓励,写东西有人看了ฅʕ•̫͡•ʔฅ 下面笔者尽量用通俗的语言来讲解两者的区别,尽可能全方位展开论述。如有理解不到位的地方欢迎并感谢指正。 开整( •︠ˍ•︡ )

什么是LLM函数调用?
LLM函数调用是指大型语言模型(LLM)根据用户提示生成结构化输出(通常是JSON格式),用于调用外部函数或工具。 比如,当你问“纽约的天气如何?”时,LLM可能会生成一个JSON,告诉应用去调用“获取天气”函数。

什么是MCP?
MCP(模型上下文协议)是一个开放标准,让AI模型与外部工具和服务交互。 它像一个桥梁,AI通过它请求工具执行任务,比如获取天气数据,标准化了交互方式。 其它详细内容这里不赘述,可以看这里: 这里介绍只是为了整体结构的完整性•ɷ•

小结
- LLM函数调用: AI生成调用外部函数的指令,但需要为每个AI和工具单独设置,扩展性有限。
- MCP: 提供统一接口,AI通过MCP服务器访问工具,减少重复设置,更适合大规模使用。
MCP在可扩展性和效率上优于LLM函数调用,当然在世界上没有一个大一统(这也是爱因斯坦毕生的愿望)的东西存在,MCP的发展还需要时间来进化、跃迁。另外在MCP社区还有一个讨论比较热的点即:MCP与现有系统的兼容性如何发展。
其实从上面LLM函数调用与MCP简介中的“获取天气数据”例子,应该能找到大概感觉了。
详细说明
LLM函数调用
LLM函数调用是指LLM生成结构化输出(通常是JSON格式)的能力,这些输出可用于调用外部函数或工具。例如,当用户询问“纽约的天气如何?”时,LLM可能会生成如下JSON:
{
"function": "get_weather",
"parameters": {
"location": "北京"
}
}
应用然后会解析此输出并执行get_weather函数,返回天气数据。其目的是使LLM能够执行需要外部数据或功能的任务,如检索实时信息或与业务系统交互。
从搜索结果来看,LLM函数调用是许多AI模型(如OpenAI的GPT模型)的常见功能,特别是在构建聊天机器人或代理时。例如,Function Calling with LLMs (https://www.promptingguide.ai/applications/function_calling)详细说明了如何通过微调LLM来检测何时需要调用函数,并输出包含参数的JSON。
MCP的定义与用途
MCP是由Anthropic在2024年11月引入的开放标准协议,旨在为AI模型提供与外部工具、数据源和服务的标准化交互方式。它通过客户端-服务器架构工作:AI模型(客户端)向MCP服务器发送请求,服务器处理与特定工具或数据源的交互。例如,对于相同的天气查询,LLM可能会生成:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call", // 调用工具
"params": {
"name": "get_weather",
"arguments": {
"location": "北京"
}
}
}}
此请求发送到MCP服务器,服务器执行get_weather函数并以标准化格式返回结果。MCP的目的是解决AI集成的难题,提供通用接口,使开发者无需为每个工具编写自定义代码。例如,Introducing the Model Context Protocol(https://www.anthropic.com/news/model-context-protocol)强调了MCP如何帮助前沿模型产生更相关、更准确的响应。
详细比较
以下表格总结了MCP和LLM函数调用的关键区别:
|
|
|
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为什么MCP被视为LLM函数调用的进步
MCP在LLM函数调用的基础上引入了标准化和模块化,使集成更加高效。例如,What’s MCP all about? Comparing MCP with LLM function calling (https://neon.tech/blog/mcp-vs-llm-function-calling)指出,MCP服务器充当AI应用与第三方服务之间的桥梁,暴露函数通过标准化协议,任何MCP兼容的LLM都可以访问。这减少了开发工作量,并促进了社区采用,如GitHub、Slack等关键数据存储已开始支持MCP。
此外,MCP的客户端-服务器架构使开发者可以创建或使用现有的MCP服务器,增强了可扩展性和可重用性。例如,A Deep Dive Into MCP and the Future of AI Tooling(https://a16z.com/a-deep-dive-into-mcp-and-the-future-of-ai-tooling/)讨论了MCP如何改变AI与工具的交互方式,使开发者能够构建更强大的AI代理。
当前争议与未来展望
尽管MCP被视为进步,但其作为较新标准的采用和与现有框架(如LangChain)的兼容性仍存在争议。例如,Function-Calling vs. Model Context Protocol (MCP): Choosing the Right Approach for LLM Integration (https://www.runloop.ai/blog/function-calling-vs-model-context-protocol-mcp)指出,MCP的广泛采用可能需要时间,特别是对于依赖传统函数调用的现有系统。
自2025年起,MCP正迅速获得关注,特别是在AI社区中,但其长期影响仍需观察。研究表明,结合使用LLM函数调用和MCP可以创建更高效、可扩展的AI驱动软件自动化系统。
最后
总之,MCP和LLM函数调用的区别在于它们的角色:LLM函数调用使模型能够请求外部操作,而MCP提供标准化框架来高效、可扩展地履行这些请求。通过使用MCP,开发者可以构建更集成的AI应用,无需为每个工具编写自定义代码,这在AI工具领域是一个重大进步。 在MCP和LLM函数调用使用上的选择,笔者觉得MCP具有跟高的扩展项,能让项目的可能性更大。 希望这样的总结,能帮助到您理解他们之间的差异,欢迎评论区留言交流~~~ 🚀🚀
(文:PyTorch研习社)