10分钟讲清楚 Prompt, Agent, MCP 是什么_哔哩哔哩_bilibili

详细笔记: Prompt、Agent、MCP是什么 image.png

image.png

image.png

完整流程如下:

1、用户向AI Agent(MCP Client)提出请求

2、Agent将请求包装在User Prompt中,并通过MCP协议访问MCPserver,获取tool的信息

3、Agent 把 tool 信息转化成system prompt 或Function calling的格式,并与user prompt 一起打包发给 AI 大模型

4、AI模型根据Prompt,决定是否调用tool,AI大模型发现有一个网页浏览工具,向 agent 发送调用工具的请求

5.1、Agent 收到大模型的调用请求,通过 MCP 协议调用MCP Server中的网页浏览工具

5.2、Tool访问网站后,将结果返回给Agent

6、Agent将结果转发给AI模型

7、AI模型根据Tool返回的结果及自己的头脑风暴,生成最终的答案

8、agent 把最终的结果展示给用户

纠正一个小错误,大模型的原生函数调用之所以能够严格按规定的格式输出,并不是因为服务器端自动重试。而是把大模型输出的每一个token的概率分布的所有选项放到规定的格式的自动机上去匹配,把匹配不了的选项删掉,然后在剩下的选项中按概率随机选择。这样可以保证输出格式根本不会出错,而不是等出错之后再重试

人 → Agent:巴拉巴拉巴拉怎么办? Agent → MCP Server:你有啥工具可以用,发给我 MCP Server → Agent:我有这些,使用方法是这样的,需要时尽管说话 Agent → 大模型:现在有个人问“巴拉巴拉巴拉怎么办”,你帮回答一下,另外,还有这些关键信息(提示词),还有一些工具供你使用,你思考过程中如果需要什么资料,直接问我(按格式调我给你的工具)。好了,干活去吧。 大模型:我思考,我继续思考,诶!我需要一些关于“巴拉巴拉”的信息,这个可以在某网通过某关键词查到,我去问一下Agent,它说过有需要可以问他,于是: 大模型 → Agent:我要这个网上基于这个关键词的查询结果 Agent → MCP Server:诶!别睡了,查下这个 MCP Server → Agent:查到了,给 Agent → 大模型:喏,你要的东西大模型:有了这些资料就好办了,我继续思考,诶!我还需要我们公司的客户信息,我再去要 …… Agent → 大模型:喏,你要的客户信息 大模型:哇哈,有了这些资料就好办了,我继续思考……OK! 思考完了,这个问题我已经完整答出,现在把答案交出去 大模型 → Agent:我基于你给的提示词和资料,并运用我大脑里的知识储备,思考、总结出了这个答案,现在交给你 Agent → 人:亲,关于您的问题,我们的回答是这样的 人:哇,回答真详细,真好用! Agent:还不是多亏了我忙前忙后像个交际花似的多方沟通得来的 MCP Server:拉倒吧,没有我提供的工具和数据,你就是个睁眼瞎 大模型:我是最强大脑,Agent你不就是动动嘴嘛,用户有问题了问问我,需要啥工具和数据了问问MCP Server,一天啥也不干就坐着打打电话,有啥难的;还有MCP Server,你不就是从不同的数据源查些数据资料吗,跟个图书管理员似的,有啥难度,你们干的活门槛低,最关键的还不是靠我聪明的大脑瓜。 Agent、MCP Server:得了吧,你就是个四体不勤五谷不分的书呆子,你确实聪明,但是没有我们给你提供支持,你啥也做不了。 大模型:我看呀,我们几个也别抢功了,有道是,单丝不成线,独木不成林,我们就彼此和谐,精诚合作,一起为用户提供更好的产品体验吧! Agent、MCP Server:这话说的不赖,走吧,整两盅去

不太理解“用了 function calling后,ai服务器端可以自己检测到格式问题并且重试” ,有大佬能解释下吗? 你就想 function calling 是大模型研发商推出一种功能。这个功能的作用效果就是,你可以把 “工具的功能描述,调用规则,输出格式” 等内容从提示词中分离出来,不用像过往一股脑全塞提示词里大量消耗你的 token 的同时还有降低模型理解力的风险。而且大模型可以极好地遵循你的指令,输出你所要求的格式化输出。但具体人家研发商是怎么做出这个功能的,那就不是很清楚了。毕竟大语言模型终归还是个通过上下文计算概率并依据概率去生成文本的程序,如何保证格式化的输出是个技术难点。这里 up 的猜测是云端那边对不符合格式要求的输出自动做了重试直至格式符合要求。但注意这仅仅只是 up 的猜测而已。

functioncalling的定义是一种标准的json,有什么字段都是AI厂商事先定义好的。所以当然可以识别,只需要程序检查一下AI输出的内容是否符合格式,有没有必须字段。如果这一关过了,基本上也就证明AI没发癫