MCP 和 Function Calling:概念

随着人工智能的快速发展,大型语言模型(LLMs)逐渐深入到我们生活与工作的各个方面。然而,尽管模型强大,但其能力仍存在局限性,比如在实时信息获取和复杂任务执行方面仍有不足。

RAG(检索增强生成)现在在企业的 AI 应用中使用很广泛,就是为了解决模型的信息不够实时,且没有垂直领域知识的问题。

RAG 虽然厉害,但主要还是应用在智能知识问答领域,大模型想要有更强的能力,就需要有效、安全地与外界进行互动,这就诞生了 Function Calling 和 MCP 。

Function Calling 依赖大模型的能力,MCP 是一种通用协议。

本文从概念层面谈谈 Function Calling 和 MCP ,下一篇写几个代码例子。

Function Calling(函数调用)介绍

概念

Function Calling 是特定大模型(如 OpenAI 的 GPT-4、Qwen2 等)提供的一种机制,使模型能够主动生成结构化输出,以调用外部系统中预定义的函数或 API。

执行流程

通常我们说大模型调用 API,但这种说法并不完全准确,执行过程如下图:

图片

0、Agent 程序是我们开发的 AI 程序,在程序中会预先向大模型注册外部函数接口(建议不超过 20 个)。

1、用户通过自然语言发起请求,Agent 接收到请求。

2、Agent 程序将用户请求提交给大模型,模型首先解析语义并评估是否需要调用外部工具。

3、模型如果判断需要调用函数,将生成包含工具 ID 和输入参数的调用指令,并返回给 Agent 程序。

4、Agent 程序接收到模型返回的调用指令后,执行对工具函数的调用。

5、工具函数执行后将结果返回给 Agent 程序。

6、Agent 程序将函数返回的结果和自定义提示词一起反馈给大模型。

7、大模型融合工具返回的数据与原始上下文,生成最终结果,并返回给 Agent 。

8、Agent 程序将结果输出呈现给终端用户。

特点

1、主动调用:模型能够识别用户的自然语言意图,决定是否调用工具,并生成调用指令。

2、实时反馈:模型生成的函数调用指令,由 Agent 程序执行后,再次反馈给模型,使模型生成实时和精准的回应。

3、具体实现灵活:没有严格的标准通信协议要求,通信格式取决于具体模型厂商。这是个特点,也是个弊端。

MCP(Model Context Protocol)介绍

概念

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 公司在 2024 年 11 月推出的一种标准协议。它的目的是给 AI 模型(如大语言模型)和外部数据源或工具之间建立起统一的通信接口。

可以简单类比为 AI 的 USB 接口,无论是 AI 模型还是外部工具,只要符合 MCP 标准,就可以实现快速“即插即用”的连接,不需要为每个工具单独编写接口程序。也没有变成语言的限制,就像前后端分离后,基于 WebAPI 的规范就可以,什么语言都能写接口。

现在 OpenAI 也支持了 MCP 。

图片

特点

1、开放性:MCP 是开放标准,任何开发者或服务商均可基于此协议开发 API,避免重复造轮子,推动生态共建,目前已有大量 MCP 集合站(如:https://mcp.so)。

2、标准化:采用 JSON-RPC 2.0 标准通信,确保交互统一、高效。

3、AI 增强:MCP 可将 AI 应用从简单问答升级为可执行复杂任务的工具,如管理代码、处理文件、连接外部系统。例如,Claude 通过 MCP 接入 GitHub 后,可完成项目创建、提交代码请求等复杂操作。

4、安全性:MCP 数据交互基于标准协议,便于控制数据流、防止泄露。服务器内置安全机制,可保护 API 密钥不泄露给大模型提供商,主机可授权客户端连接,确保连接安全可控。

5、兼容性:MCP 支持文件内容、数据库记录、API 响应、实时数据、截图图像、日志文件等几乎所有数据格式,适用于多样的数据交互场景。

6、扩展性:MCP 提供提示词模板(Prompts)、工具(Tools)、采样(Sampling)等功能,可灵活扩展 AI 应用与数据源交互能力。开发者可根据需求定制提示模板或使用工具扩展数据处理功能。

核心架构

MCP 采用客户端-服务器(Client-Server)架构,包括以下组件:

1、MCP Host:发起请求的 AI 应用程序或工具,如 Claude Desktop、Cursor、Windsurf 等。

2、MCP Client:位于 Host 内部,保持与 MCP Server 的一对一连接,负责消息路由、能力管理和协议协商。

3、MCP Server:提供上下文数据、工具和提示词模板的服务端组件,负责响应客户端请求,提供外部资源访问。

4、资源与工具:包括本地或远程的数据资源(如文件、数据库)及可被模型调用的功能(工具),支持 AI 模型实时获取外部信息并执行任务。

图片

调用步骤

1、宿主程序(客户端)中配置相关的 MCP Server ,并建立与 MCP Server 的连接。

2、用户使用自然语言进行提问,宿主程序将提示词(整合了用户问题)和 MCP Server 提供的工具,一起给大模型。

3、大模型理解后产生调用指令,宿主程序将调用指令通过 Client 发送给 MCP Server 。

4、MCP Server 收到请求后,解析请求内容,执行相应操作(如搜索网络信息、记录笔记等),然后将处理结果封装成响应消息,发送回客户端。

图片

MCP 与 Function Calling 的关系和区别

关系

大模型就像是一个大脑,MCP 与 Function Calling 都是为了让大模型能开口说话,动手做事。Function Calling 可视为 MCP 生态下的一种具体功能实现形式,尤其是在工具调用(Tools)这一概念上,两者高度相似。

区别

1、交互模式

  • MCP:支持交互式、持续性的上下文管理,AI 可以与外部资源多轮互动。

  • Function Calling:简单的请求-响应模式,单次调用执行特定任务,无交互延续性。

2、定位:

  • MCP:一种开放的标准协议,定义通用通信架构和数据格式(类似于 USB 标准)。

  • Function Calling:特定模型厂商提供的扩展能力。

3、通信协议标准化:

  • MCP:严格遵守 JSON-RPC 2.0,具备高度标准化和互操作性。

  • Function Calling:无统一标准,协议依赖具体模型厂商实现。

4、生态开放程度:

  • MCP:生态开放,社区共建为主,任意开发者或服务商可自由接入。

  • Function Calling:生态相对封闭,依赖特定模型厂商支持。

 

 如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。


1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

### MCP Evolution Process with Function Calling MCP (Model Coordination Protocol) 的演进过程中,function calling 是一个重要组成部分。Function calling 提供了一种具体的方式用于调用外部接口,而 MCP 则作为一个更加通用底层的标准协议来封装这些功能[^1]。 #### Function Calling in the Context of MCP Function calling 主要被设计为大模型中的一个特性或实现方式,它允许模型通过预定义的函数结构与外部环境交互。这种机制更适合于特定场景下的单一数据源操作,并且其主要目标是提供一种快速有效的解决方案以满足某些定制化需求。 然而,在 MCP 中引入 function calling 可以为开发者带来更多的灵活性。例如,当需要执行复杂的任务链或者跨多个服务的操作时,可以通过 MCP 将不同的 function calls 组合起来形成完整的业务逻辑流。这种方式不仅保持了原有 function calling 的高效性针对性,还借助 MCP 实现了更高层次上的抽象支持多数据源的能力[^2]。 #### Implementation Details 在技术层面来看,将 function calling 集成到 MCP 当中涉及以下几个方面: - **标准化 API 定义**: 对每种可能使用的 external functions 进行统一描述,使得它们能够轻松嵌入基于 MCP 架构的应用程序之中。 - **动态适配器模式**: 创建一组中间件组件作为桥梁连接各种异构系统服务端点,从而确保即使面对不断变化的技术栈也能维持良好的兼容性。 以下是简单的伪代码展示如何在一个假想框架下利用 Python 来模拟这一过程: ```python class MCPAdapter: def __init__(self, func_caller): self.func_caller = func_caller def execute(self, params): result = self.func_caller.call(params) return {"status": "success", "data": result} def sample_function(param): # Simulate an actual function call here. return f"Processed {param}" func_caller_instance = FuncCaller(sample_function) # Assume this class exists and works accordingly. adapter = MCPAdapter(func_caller_instance) response = adapter.execute({"input_value": "test"}) print(response) ``` 此示例展示了如何创建一个 MCP Adapter 来包裹现有的 function caller 并返回符合预期的结果集给客户端应用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值