Prompt,Agent,MCP是什么

prompt

分为

  • system prompt
    • 角色、性格、背景知识、语气
  • user prompt

例如:

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

AI Agent

这种负责在模型、工具和最终用户之间传话的程序,叫做AI Agent。而这些提供给AI调用的函数或者服务,就叫做Agent Tool。

不过这种结构可能有一个小问题。虽然在System Prompt里面写清楚了AI应该用什么格式返回,但是AI模型说到底是一个概率模型,还是有可能返回不对的内容。为了处理这些“不听话”的情况,很多AI Agent会在发现返回格式不对时,自动进行重试。

现在市面上很多知名的Agent,比如Cline依然采用这种方式,这种反复的重试,人们总会觉得不太靠谱。于是大模型厂商开始出手了,ChatGPT、Claude、Gemini等等纷纷推出了一个叫Function Calling的新功能,这个功能的核心思想就是“统一格式 规范描述”。

比如我们通过System Prompt告诉AI有哪些工具以及返回的格式,但是这些描述都是用自然语言随意写的,只要AI看的懂就行。Function Calling则对这些描述进行了标准化,比如每个Tool都用一个JSON对象来定义工具名,工具名写在name字段、功能说明写在desc字段,所需要的参数写在params里面等等。

然后JSON对象也被从System Prompt中剥离出来,单独放到一个字段中,最后Function Calling也规定了AI使用工具时应该返回的格式,所以System Prompt中的格式定义也可以删掉了,这样所有的工具描述都放在相同的地方,所有工具描述也都依照相同的格式,AI使用工具时的回复也都依照相同的格式,于是人们就能更加有针对性的训练AI模型。

然而,Function Calling也有自己的问题,每家大厂的API定义都不一样,而且有的还不支持Function Calling,所以开发一个跨模型通用的AI Agent还是挺麻烦的。因此System Prompt和Function Calling这两种方式在市面上是并存的。

MCP

上一节是在讲AI Agent和AI的通信方式,而AI Agent和Agent Tool是如何通信的。

把AI Agent和Agent Tool写在同一个程序里面,直接函数调用(这也是大多数Agent 的做法),但是后来人们发现有些Tool的用法其实是通用的,比如一个浏览器网页的工具,可能多个Agent都需要,在每一个Agent 的都copy相同的代码太麻烦了,也不利于管理,所以就想到把Tool变成服务统一的托管,让所用的Agent都来调用,这就是MCP。

MCP是一个通信协议,专门用来规范Agent和Tool服务之间的交互方式。运行Tool的服务叫做MCP Server,调用Tool的Agent叫做MCP Client。

总结

整个流程如下:

  1. 用户想Agent发送请求,
  2. 然后Agent通过MCP协议从MCP Server里面获取所有的Tool信息,
  3. Agent会把这些Tool的信息转化为System Prompt或者Function Calling的格式,然后和用户请求User Prompt一起打包发送给AI模型,
  4. AI模型发现有一个叫“web_browse”的网页浏览工具,于是通过普通回复或者Function Calling格式产生一个调用Tool的请求,
  5. Agent收到请求之后通过MCP协议去调用MCP Server里面的“web_browse”工具,
  6. “web_browse”访问指定的网站之后,将内容返回给Agent,Agent再转发给AI模型,
  7. 然后AI模型根据网页内容和“头脑风暴”生成最终的结果,
  8. 最后由Agent把结果展示给用户。

例如:

以下这些一起构成了AI自动化协作的完整体系: