10 分钟搞懂 AI 圈高频词!Prompt/Agent/MCP 通俗拆解,B 站这期小白必看,全程干货不划水~

Contenido del Video OriginalExpandir Video
  • 各种AI名词接踵而至,令我们头疼不已。
  • Agent、MCP、Promint等概念的阐释将帮助我们理解AI如何运作。
  • 扮演人设让AI更加自然,但也引出了一些问题。

这段时间,各种AI名词一拨接一拨的冲击着我的屏幕。Agent、MCP、方形、Cony,他们都是什么东西?有人说Agent是智能体,那智能体又是什么?也有人说MCP是AI时代的USB协议,那么它可以接U盘吗?他们到底都是什么意思?

今天我会用一期视频,用尽量简单的语言把Agent、MCP、Promint以及方形、Cony这几个关键的概念全都串联起来。现在就让我们开始吧!

2023年OpenAI刚刚发布ChatGPT的时候,AI看起来只是一个聊天框。我们通过聊天框发送一条消息给AI模型,然后AI模型生成一个回复。我们发送的消息就叫做userPromint,也就是用户提示词,通常是我们提出的问题或者想说的话。

但是现实生活中,当我们和不同的人聊天时,即便是完全相同的话,对方也会根据自己的经验给出不同的答案。比如,我肚子疼,那我爸可能会让我去厕所,我妈可能会问我要不要去医院,我老婆可能会直接说多喝热水。但是AI并没有这样的人设,所以它就只能给出一个通用、乏味的回答,显得非常的无趣。

于是,我们就希望给AI也加上人设。最直接的办法就是把人设信息和用户要说的话打包成一条用户提示词发过去。比如你扮演我温柔的老婆,我说我肚子疼,这样AI可能就会回复多喝热水,那这样的话就符合她的人设逻辑。

但问题是,“你扮演我温柔的老婆”这一句话并不是我们真正想要说的内容,显得有一点多余。于是我们干脆就把人设信息单独拎出来,放到另一个提示词里面去,这就是SystemPrompt

我们的系统提示词SystemPrompt主要用来描述AI的角色、性格、背景以及语气等等相关的信息。总之,只要不是用户直接说出来的内容,都可以放到SystemPrompt里面。每一次在发送用户提示词的时候,系统会自动把SystemPrompt也一起发给AI模型,这样整个对话就显得更加自然。

在网页端的聊天机器人当中,SystemPrompt往往是系统预设的,用户不能随便更改。但通常来讲,网站会提供一些设置。比如在ChatGPT当中就有一个CastleMind功能,用户可以在里面写下自己的偏好,这些偏好就会自动变成SystemPrompt的一部分。

不过即使人设设定得再完美,说到底AI还是一个聊天机器人。你问一个问题,AI最多告诉你答案或者告诉你怎么去做,但实际动手的还是你自己。那么,能不能让AI自己去完成任务呢?

第一个做出尝试的是一个开源项目叫AutoGPT。它是一个本地运行的小程序。如果你想让AutoGPT帮你去管理电脑当中的文件,那么你得先写好一些文件管理的函数,比如ListFiles用来列目录、ReadFiles用来读文件等等。然后你再把这些函数以及它们的功能描述、使用方法全部注册到AutoGPT当中。

AutoGPT能够根据这样的信息去申请一个SystemPrompt,告诉AI模型用户给了你哪些工具,它们分别是做什么的,以及AI如果想要去使用它们应该反映什么样的格式。最后再把SystemPrompt和用户的请求,比如“帮我去找一下王者荣耀的安装目录”,一起发给模型。

如果AI模型足够聪明,它就能够按照要求的格式去返回一个调用某个函数的消息。那AutoGPT在进行解析之后就可以调用到对应的函数。在AutoGPT把这个返回的结果丢给我们的AI模型后,AI就可以根据调用的结果去决定下一步应该做什么操作。这个过程就会不断地去反复执行,直到任务完成为止。

我们把AutoGPT这种负责在模型、工具和最终用户之间传话的程序称为AIAgent,而这些提供AI调用的函数或者服务就叫做AgentTools。不过这个架构还存在一个小问题,虽然我们在SystemPrompt里面已经写清楚了AI应该用什么格式回复,但是AI模型说到底就是一个概率模型,所以它还是有可能出现格式不对的内容。

为了处理这样的情况,许多AIAgent在发现AI返回的格式不对的时候,会自动进行重试。一次不行,就两次;两次不行,就三次。目前很多市面上知名的Agent,比如Clive,仍然采用这种方式。

但是这种反复重试的方法总归让人觉得非常不靠谱。于是大模型厂商出手了,ChainGPT、Holoade、Gimini等等纷纷推出了一个叫翻不新Cony的新功能。这个功能的核心思想就在于统一格式。

以王者荣耀的例子为例,我们通过SystemPrompt告诉AI有哪一些工具及返回的格式,但是这些描述都是通过自然语言随意编写的,只要AI看得懂就可以了。翻不新Cony则是对这些描述进行标准化,比如每一个工具都可以用一个接审对象来定义工具名,我们把它放在Lim阶段当中,功能的说明放在Discrepancy里面,而所需要的参数则写在Prompt当中。

同时,翻不新Cony也规定了AI使用工具时应该返回的格式,因此在SystemPrompt当中的格式定义可以被删除。这样一来,所有的工具描述都放在相同的地方,并且都按照相同的格式。AI使用工具时的回复也依照相同的格式,于是我们就能够更加有针对性地训练AI模型,让它去理解这种调用的场景。

甚至在这种情况下,即便AI依然发生了错误的格式,由于回复的格式是固定的,AI服务器就能够自己进行检测并且进行重试,用户根本就感觉不到。这样一来,不仅降低了用户端的开发难度,同时也节省了用户端重试带来的Token开销。

因此,正是因为这些好处,现在越来越多的AIAgents开始从SystemPrompt转向翻不新Cony。但是翻不新Cony也有自己的问题,就是没有统一的标准。每一家大厂的API定义都是不一样的,而且还有很多开源模型并不支持翻不新Cony,所以真正要写一个跨模型通用的AIAgent还是比较麻烦的。

因此,SystemPrompt和翻不新Cony这两种方式在市面上目前都是并存的。以上我们讲的都是AIAgent和AI模型之间的通信方式。接下来,我们再看另一边,AIAgent怎么跟AITOS进行通信。

最简单的做法就是把AIAgent和AgentTOS写在同一个程序里面,直接通过函数调用就能搞定,这也是现在大多数Agent的做法。但是后来我们会发现有一些TOS的功能其实是非常通用的,比如一个浏览网页的工具可能多个Agent都需要去使用。

但我总不能在每一个Agent里面都去拷贝一份同样的代码,太麻烦了,而且也不优雅。于是我们想到一个办法,就是把TOS变成服务,统一进行调用,让所有的Agent都能够使用,这就是MCP

MCP是一个通信协议,专门用来规范Agent和TOS服务之间如何进行交付。运行TOS的服务称为MCPServer,调用它的Agent称为MCPClient。MCP规定了MCPServer和MCPClient之间如何进行通信,以及MCPServer需要提供哪些接口,比如查询MCPServer中有哪一些TOS的功能描述、需要的参数格式等等。

除此之外,MCP还能够直接提供数据,提供类似于文件读写的服务,比如叫Resource,也可以为Agent提供提示式的模板(Prompt)。MCPServer既可以和Agent跑在同一台机器上,通过标准输入输出进行通信,也可以将其部署在网络当中,通过HTTP进行通信。

需要注意的是,虽然MCP是为AI而定制来的标准,但实际上MCP本身与AI模型之间没有关系,它并不关心Agent使用的是哪一个模型。MCP只负责帮助Agent管理工具资源和提示词。

最后,我们梳理一下整个流程。假设我听说我老婆肚子疼,于是问AIAgent或说MCPConnect,“我老婆肚子疼应该怎么办?”Agent会把这样的问题包装在用户提示词当中,然后Agent会通过MCP协议从MCPServer获取所有的TOS信息。Agent再把这些TOS信息转换成SystemPrompt或者翻不新Cony的格式,与用户的请求用户提示词一起打包发送给AI模型。

AI模型发现有一个叫WireBrosch的网页浏览工具,于是通过普通回复或翻不新Cony的格式产生一个调用工具的请求,希望从网上去搜索答案。Agent在收到这个请求后,就通过MCP协议去调用MCPServer里面的WireBrosch工具,访问到指令的网站,然后将对应的网页内容(HTML)返回给Agent。

Agent再将结果转发给AI模型,AI模型依据网页的内容和自己训练的历史数据,生成最终的答案:“多喝热水。”最终由Agent将结果展示给用户。

总之,这就是SayonePromptUserPrompt以及AIAgentMCP翻不新Cony之间的联系与区别。他们并不是彼此取代的关系,而是像齿轮一样一起构建了AI自动化协作的完整体系。

好了,这就是今天给大家介绍的Prompt、Agent、MCP和翻不新Cony的概念。