对于AI的基本理解

Prompt

在chatGPT诞生的时候,对于AI的理解就是一个聊天框。当输入一条语句给AI的时候,它就会返回一条答案或者回复给我们。而在这里,我们发送的消息就叫做Prompt(User Prompt)。

但是,这样的回复不能满足用户,因为这样的AI只是很单一的,它没有一个人设,不像平常的聊天,不同的人对于同一个问题可能有不同的回复。因此,我们需要给他一个人设,就可以在聊天框中给它绑定一个人设,那么下次回答他就可以根据它的人设背景进行回答了。

这里就有出现了一个问题,我们每次和它聊天都需要进行人设的绑定,这样显得很麻烦。所以,就有了另外的Prompt————System Prompt,我们可以将它的人设存放在这里,我们给它发送消息时,就不用给它重新绑定人设了,因为AI得到的消息是User Prompt + System Prompt。

AI Agent

Agent就是能自主感知环境、做出决策并执行行动的智能体,它和普通的AI模型是有一定的区别的。

  • AI模型是被动响应(chatGPT等)
  • AI Agent是主动执行任务的,比如自动订机票、找资料、完成代码调试等

具体是如何实现的?

假设我们有一个场景:帮我查找10篇关于AI的最新论文

首先,我们需要有一些工具Agent Tools(可以理解为工具类函数:想要的内容以及返回的格式),比如说:寻找某个关键字的论文的工具(getPapersByKey)、浏览网页的工具(browseWeb)。然后,当用户提出User Prompt的时候,AI Agent就会去调用Agent Tools,将这些工具转换为System Prompt,将User Prompt + System Prompt发送给AI模型。接着AI模型通过这些内容就会得到一个答案,将这个答案返回给AI Agent。如果答案的格式或者内容不正确,那么AI Agent就会重新让AI模型生成答案,得到想要的答案后,就会返回给用户。

但是,这样就会出现另外的一种情况,这样反复重新让他生成答案不是很优雅,会持续浪费用户的时间以及Token,造成这个的原因是:Agent Tools中的工具是一种描述,并不是很规范,于是Function Calling出现了。

Function Calling

就是对Agent Tools的调用的规范,可以将这个规范改为一个JSON字符串,这里还可以对规范AI的返回结果的格式。

1
2
3
4
5
6
7
{
"function": "getPapersByKey",
"arguments": {
"key": "AI"
}
}

Function Calling会替换System Prompt,从而增加AI的回答标准。

当AI还是生成了错误的答案时,AI也会根据返回的格式要求进行重新生成。

目前,System Prompt和Function Calling还是共存的形式。

这些就是AI Agent和AI模型是如何进行联系的,接下来就是AI Agent和Agent Tools是如何进行通信的了————MCP

MCP

在之前的服务中,一个AI Agent调用一个Agent Tools,当遇到有通用的Agent Tools时候,这样会显得不是很优雅。于是MCP协议诞生了,会将Agent Tools封装成一个服务(MCP Server),其他的AI Agent(MCP Client)可以在这里面找需要的工具,就大大增加了工具的复用性了。

其中,MCP Server会暴露出通用的接口(查询有哪些Agent Tools,需要的参数,格式等),还会暴露出数据(类似文件读写)、prompts提示词。