10分钟讲清楚 Prompt, Agent, MCP 是什么
类别
🤖
科技文字稿
00:00这段时间,各种AI名词一波接一波地冲击着我的屏幕
00:04Agent, MCP, Function Code,它们都是什么东西?
00:09有人说Agent是智能体,那智能体又是什么呢?
00:14有人说MCP是AI时代的USB协议,那么它可以接U盘吗?
00:20它们到底都是什么意思?
00:22今天我会用一期视频,用尽量简单的语言
00:26把Agent, MCP, Prompt,以及Function Coding这几个关键概念全都串联起来
00:33现在就让我们开始吧
00:342023年OpenAI刚刚发布GPT的时候
00:38AI看起来只是一个聊天框
00:41我们通过聊天框发送一条消息给AI模型
00:45然后AI模型生成一个回复
00:48我们发的消息就叫User Prompt,也就是用户提示词
00:52一般就是我们提出的问题或者想说的话
00:56但是现实生活中,当我们和不同人聊天时
01:00即便是完全相同的话,对方也会根据自己的经验给出不同的答案
01:06比如我说我肚子疼,我妈可能会问我要不要去医院
01:10我爸可能会让我去厕所
01:12我女朋友可能直接就来一句滚一边去老娘也疼
01:17但是AI并没有这样的人设,所以他就只能给出一个通用的四平八稳的回答
01:23显得非常无趣
01:25于是我们就希望给AI也加上人设
01:28最直接的方法就是把人设信息和用户要说的话打包成一条User Prompt发过去
01:36比如你扮演我的女朋友,我说我肚子疼
01:39然后AI就可能回复,滚一边去老娘也疼
01:43这样就对味了
01:44但问题是,你扮演我温柔的女朋友
01:48这句话并不是我们真正想说的内容
01:51显得有一点出戏
01:52于是人们干脆把人设信息单独的拎了出来
01:57放到另外一个Prompt里面
01:59这就是System Prompt系统提示词
02:02System Prompt主要用来描述AI的角色、性格、背景信息、语气等等等等
02:10总之只要不是用户直接说出来的内容都可以放进System Prompt里面
02:16每次用户发送User Prompt的时候,系统会自动把System Prompt也一起发给AI模型
02:23这样整个对话就显得更加自然了
02:26在网页端的聊天机器人中,System Prompt往往是系统预设的
02:31用户不能随便更改
02:33但通常来讲,网站会提供一些设置
02:36比如说Chat GPT里面有一个叫做Customize Chat GPT的功能
02:41用户可以在里面写下自己的偏好
02:44这些偏好就会自动变成System Prompt的一部分
02:47不过即使人设设定的再完美
02:50说到底,AI还是个聊天机器人
02:53你问一个问题,它最多给你答案或者告诉你怎么做
02:57但实际动手的还是你自己
03:00那么能不能让AI自己去完成任务呢?
03:04第一个做出尝试的是一个开源项目叫做Auto GPT
03:07它是本地运行的一个小程序
03:10如果你想让Auto GPT帮你管理电脑里的文件
03:14那你得先写好一些文件的管理函数
03:17比如说List Files用来列目录
03:20Read Files用来读文件等等等等
03:23然后你把这些函数以及它们的功能描述
03:26使用方法注册到Auto GPT中
03:29Auto GPT会根据这些信息生成一个System Prompt
03:33告诉AI模型
03:35用户给了你哪些工具,它们都是干什么的
03:38以及AI如果想要使用它们应该返回什么样的格式
03:43最后把这个System Prompt连同用户的请求
03:46比如说帮我找一找原神的安装目录
03:49一起发给AI模型
03:50如果AI模型足够的聪明
03:53就会按照要求的格式返回一个调用某个函数的消息
03:57Auto GPT进行解析之后就可以调用对应的函数了
04:01然后再把结果丢回给AI
04:03AI在根据函数调用的结果决定下一步应该做什么操作
04:08这个过程就这样反复直到任务完成为止
04:11人们把Auto GPT这种负责在模型
04:14工具和最终用户之间传话的程序
04:19就叫做AI Agent
04:20而这些提供给AI调用的函数或者服务
04:25就叫做Agent Tool
04:26不过这个架构有一个小问题
04:28虽然我们在System Prompt里面写清楚了
04:32AI应该用什么格式返回
04:34但AI模型嘛
04:36说到底它是一个概率模型
04:38还是有可能返回格式不对的内容
04:41为了处理这些不听话的情况
04:43很多AI Agent会在发现
04:46AI返回的格式不对时
04:48自动进行重视
04:49一次不行我们就来第二次
04:51现在市面上很多知名的Agent
04:53比如Kline仍然采用的是这种方式
04:56但这种反复的重视
04:58总归让人觉得不太靠谱
05:00于是大模型厂商开始出手了
05:03Chat GPT Cloud
05:04Jimmy Knight等等纷纷推出了一个叫做Function Culling的新功能
05:09这个功能的核心思想就是统一格式
05:13规范描述
05:13回到之前原神的例子
05:16我们通过System Prompt告诉AI有哪些工具
05:19以及返回的格式
05:21但是这些描述是用自然语言随意写的
05:24只要AI看得懂就行
05:26Function Culling则对这些描述进行了标准化
05:29比如每个Tool都用一个JSON对象来定义
05:33工具名写在name字段
05:34功能说明写在description字段
05:37所需要的参数写在parameters里面等等等等
05:41然后这些JSON对象也从System Prompt中被剥离了出来
05:45单独放到了一个字段里面
05:48最后Function Culling也规定了AI使用工具时应该返回的格式
05:53所以System Prompt中的格式定义也可以删掉了
05:57这样一来所有的工具描述都放在相同的地方
06:01所有工具描述也都依照相同的格式
06:04AI使用工具时的回复也都依照相同的格式
06:08于是人们就能更加有针对性的训练AI模型
06:12让他理解这种调用的场景
06:15甚至在这种情况下
06:17如果AI依然生成了错误的回复
06:19因为回复的格式是固定的
06:22AI服务器端自己就可以检测到并且进行重视
06:26用户根本感觉不到
06:28这样一来不仅降低了用户端的开发难度
06:31也节省了用户端重视带来的token开销
06:35正是由于这些好处
06:36现在越来越多的AI agent
06:38开始从System Prompt转向Function Culling
06:41但Function Culling也有自己的问题
06:44就是没有统一的标准
06:46每家大厂的API定义都不一样
06:48而且很多开源模型还不支持Function Culling
06:52所以真的要写一个跨模型通用的AI agent
06:55其实还挺麻烦的
06:57因此System Prompt和Function Culling
07:00这两种方式
07:01现在在市面上是并存的
07:03以上我们讲的都是
07:04AI agent和AI模型之间的通信方式
07:08接下来我们再看另一边
07:10AI agent是怎么跟AI tools来进行通信的
07:14最简单的做法是把AI agent和agent tool
07:17写在同一个程序里面
07:19直接函数调用搞定
07:21这也是现在大多数agent的做法
07:24但是后来人们逐渐发现
07:26有些tool的功能其实挺通用的
07:29比如说一个浏览网页的工具
07:31可能多个agent都需要
07:33但我总不能在每个agent里面
07:36都拷贝一份相同的代码吧
07:38太麻烦了也不优雅
07:40于是大家想到了一个办法
07:42把tool变成服务统一的托管
07:44让所有的agent都来调用
07:47这就是MCP
07:48MCP是一个通信协议
07:50专门用来规范agent和tool服务之间是怎么交互的
07:55运行tool的服务叫做MCP server
07:58调用它的agent叫做MCP client
08:01MCP规定了MCP server如何和MCP client通信
08:06以及MCP server要提供哪些接口
08:09比如说用来查询MCP server中有哪些tool
08:12tool的功能描述
08:14需要的参数格式等等的接口
08:16除了普通的tool这种函数调用的形式
08:19MCP server也可以直接提供数据
08:23提供类似文件读写的服务叫做resource
08:26或者为agent提供提示词的模板叫做prompt
08:30MCP server既可以和agent跑在同一台机器上
08:34通过标准输入输出进行通信
08:36也可以被部署在网络上通过http进行通信
08:40这里需要注意的是
08:41虽然MCP是为了AI而定制出来的标准
08:45但实际上MCP本身却和AI模型没有关系
08:50他并不关心agent用的是哪个模型
08:53MCP只负责帮agent管理工具资源和提示词
08:57最后我们梳理一下整个流程
09:00我听说女朋友肚子疼
09:02于是问AI agent或者说MCP client
09:05我女朋友肚子疼应该怎么办
09:07agent会把问题包装在user prompt中
09:10然后agent通过MCP协议从MCP server里面
09:15获取所有tool的信息
09:17AI agent会把这些tool的信息或者转化成system prompt
09:22或者转化成function calling的格式
09:24然后和用户请求user prompt一起打包发送给AI模型
09:30AI模型发现有一个叫做webbrowse的网页浏览工具
09:34于是通过普通回复或者function calling格式
09:38产生一个调用这个tool的请求
09:40希望去网上搜索答案
09:42agent收到了这个请求之后
09:45通过MCP协议去调用MCP server里的webbrowse工具
09:49webbrowse访问指定的网站之后
09:52将内容返还给agent
09:54agent再转发给AI模型
09:57AI模型在根据网页内容和自己的头脑风暴
10:00生成最终的答案
10:02多喝热水
10:03最后由agent把结果展示给用户
10:06之后我的女朋友是如何夸我贴心的
10:09这里我就不细说了
10:11总之这就是system prompt
10:13user prompt
10:14AI agent
10:15agent tool
10:16function coding
10:18MCP
10:18AI模型之间的联系与区别了
10:21它们不是彼此取代的关系
10:24而是像齿轮一样一起构成了
10:27AI自动化协作的完整体系
10:33中文化协作的完整体系
10:35中文化协作的完整体系
10:36中文化协作的完整体系