摘要:随着人工智能的快速发展,大型语言模型(LLMs)逐渐深入到我们生活与工作的各个方面。然而,尽管模型强大,但其能力仍存在局限性,比如在实时信息获取和复杂任务执行方面仍有不足。
随着人工智能的快速发展,大型语言模型(LLMs)逐渐深入到我们生活与工作的各个方面。然而,尽管模型强大,但其能力仍存在局限性,比如在实时信息获取和复杂任务执行方面仍有不足。
RAG(检索增强生成)现在在企业的 AI 应用中使用很广泛,就是为了解决模型的信息不够实时,且没有垂直领域知识的问题。
RAG 虽然厉害,但主要还是应用在智能知识问答领域,大模型想要有更强的能力,就需要有效、安全地与外界进行互动,这就诞生了 Function Calling 和 MCP 。
Function Calling 依赖大模型的能力,MCP 是一种通用协议。
本文从概念层面谈谈 Function Calling 和 MCP ,下一篇写几个代码例子。
概念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,模型上下文协议)是 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 都是为了让大模型能开口说话,动手做事。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:生态相对封闭,依赖特定模型厂商支持。
希望本文对您有所帮助!
来源:opendotnet