MCP(Model Context Protocol)是什么?

MCP(Model Context Protocol)这个概念最近特别热。在这里,根据我自己的理解介绍一下 MCP。

随着 AI 的流行,大家对于 AI 助手的使用已经很熟悉了。AI 助手的使用遵循一定的模式。用户提供输入给大模型,大模型给出生成的内容。输入和输出都可以是多模态的。模态包括文本、图片、音频和视频。当然了,每个模型所支持的输入和输出的模态是不同的。文本是最基础的模态。

在很多时候,我们使用大模型生成内容时,利用的是大模型自身的知识。大模型在经过训练之后,自身已经包含了大量的知识。训练时所使用的材料越多,模型的体积越大,其中所包含的知识通常越多。

比如,对大模型提问:地球到月球的距离是多少?大模型可以给出正确的结果。因为这个知识点已经包含在模型内部。

在很多时候,大模型并不具备生成内容所需的知识。因为相关的知识并没有包含在模型的训练材料中。这种情况是无法避免的。至少有两类知识无法被包含在模型中。

第一类是发生在模型训练之后的知识。每个模型都有一个 cutoff 日期,表示该模型只包含该日期之前的数据。以 OpenAI 的 GPT 模型为例,GPT-4.1 的 cutoff 日期是2024年6月1号。GPT-4o 的 cutoff 日期是 2023年10月1号。

第二类是企业和个人的私有数据。普遍使用的模型,都是基于公开数据训练而来,不会包含企业和个人的私有数据。

缺少这两类的知识,大模型无法对某些输入产生正确的结果。

举一个实际的例子,你是一家企业的员工,负责维护公司的公众号。领导给你分配了一个任务,在公众号上写一篇文章,介绍一下公司最近的销售业绩。你打算使用 AI 助手来帮助你。大模型可以帮助生成内容和对内容进行改写。但是这里面缺少了生成内容所需的重要数据,那就是公司的销售业绩。市面上的大模型不会包含公司的销售数据。那怎么解决这个问题?

数据或知识可以有两种方式来提供。一种是把知识内置到模型中,也就是对模型进行微调。另外一种是以外挂的方式,让模型使用知识。

通过模型微调,附加的知识可以作为训练材料添加到模型中。微调模型并不是一件简单的事情。虽然随着技术的发展,微调模型的成本和难度大大降低,但仍然是一件耗时费力的事情。除此之外,有些数据的实时性很强,不适合使用模型微调。

与模型微调相比,外挂知识的实现方式相对快速和简单。外挂知识有两种实现方式,第一种方式把知识包含在发送给大模型的输入中,也就是提示中。这就是我们经常说的检索增强生成,RAG 技术。第二种方式为大模型提供工具,工具可以提供数据或执行动作。应用提供工具的名称、描述、参数格式和具体的实现。大模型根据需要推导出应该调用的工具的名称和实际参数值。应用完成工具的实际调用,并把结果返回给大模型。大模型根据工具的调用结果,进行后续的生成。

回到之前介绍的编写公众号文章的例子。第一种方式是把销售数据作为提示的一部分,直接发送给大模型。销售数据从外部获取,由用户手动添加。第二种方式是开发一个工具,可以获取销售数据,再把这个工具提供给大模型。在生成的过程中,大模型使用工具获取数据。使用工具时,不需要用户主动提供额外的知识,但是工具有附加的开发工作量。


介绍完相关的背景知识,回到 MCP 的话题。MCP 是 Model Context Protocol 的缩写。 Model 指的是 AI 模型。Context 指的是上下文信息,也就是前面提到的外挂知识。Protocol 表示 MCP 是一个协议。所以,MCP 是一个为 AI 模型提供外挂知识的协议。

MCP 最关键的点在于 P,也就是 Protocol,表明这是一个标准的互操作协议。在 MCP 出现之前,为 AI 模型提供外挂知识的方式早就存在,RAG 和工具调用也不是什么新鲜的事情。问题在于,外挂知识的提供和使用并没有标准的方式。以工具为例,工具的提供和使用,与应用所使用的编程语言和框架紧密耦合。使用 Java 编写的应用,没有办法简单地使用 JavaScript 编写的工具。

MCP 的出现解决了这个问题。解决的方式很简单,也并不新奇。就是引入一个标准的协议,把外挂知识的提供和使用划分为服务器和客户端两个角色,服务器和客户端之间使用标准的协议进行交互。MCP 服务器负责提供外挂知识,包括提示模板、资源和工具。MCP 客户端与服务器交互,可以获取这些外挂知识,包括获取具体的提示、获取资源的内容和调用工具。服务器和客户端之间,使用的是基于 JSON-RPC 的协议。通过这种方式,外挂知识的提供者和使用者之间,解除了紧密的耦合。解耦最直接的作用是促进了共享和复用。

对于 AI 应用来说,只需要集成一个 MCP 客户端,可以使用来自不同 MCP 服务器的外挂知识,并不限制 MCP 服务器自身的实现方式。比如,一个 Java 开发的 AI 应用,在集成了 Java MCP 客户端之后,可以使用 JavaScript 或 Python 编写的 MCP 服务器中的外挂知识。

MCP 最大的价值在于,促进了外挂知识的共享。目前已经可以看到大量可复用的 MCP 服务器。由于 MCP 的重要性,现在的 AI 应用开发,离不开对 MCP 的了解。

在 MCP 的开发方面,不同编程语言有各种的 SDK 支持。对 Java 来说,推荐使用 MCP Java SDK 和 Spring AI 进行开发。《MCP Java 开发实战》是本人录制的付费课程,对 MCP 开发进行了详细的介绍,包括 MCP 协议的细节,MCP 服务器和客户端的开发详解,提供了 3 个 MCP 服务器的实战案例,分别是文件系统 MCP 服务器、文本转 SQL MCP 服务器、以及实现了检索增强生成的 MCP 服务器,最后是一个集成了大模型和 MCP 客户端的测试 MCP 服务器的通用工具。通过这个课程的学习,可以掌握 Java MCP 开发的细节。课程的具体内容,请关注我的B站,账号是:成富_Alex。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值