掘金 人工智能 05月23日 17:33
初探 Ai,Prompt、Agent、Function Calling、MCP是什么?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入浅出地介绍了AI领域中的关键概念,包括User Prompt、System Prompt、Agent、Function Calling以及MCP,并探讨了它们在AI系统中的作用和相互关系。文章通过生动的例子和清晰的解释,帮助读者理解这些复杂的技术,并揭示了它们在构建智能应用中的重要性。

💬 **Prompt 的作用与分类**:文章首先阐述了Prompt在AI中的核心作用,将其定义为用户与AI模型交互的桥梁。它详细区分了User Prompt(用户提出的问题或指令)和System Prompt(用于设定AI角色、性格和背景信息),并强调了System Prompt在塑造AI行为中的关键作用,使得AI能够根据不同的情境给出更合适的回答。

🤖 **Agent 的概念与功能**:文章接着介绍了Agent的概念,它作为连接用户、模型和工具的中间件,使得AI能够执行更复杂的任务。文章以AutoGPT为例,解释了Agent如何通过调用工具来完成任务,并指出Agent是实现AI自主行动的关键。Agent通过解析模型返回的信息来调用工具,实现任务的自动化执行。

⚙️ **Function Calling 的优势与挑战**:文章深入探讨了Function Calling,这是一种规范AI模型与工具交互的方式。它通过统一的格式定义,降低了AI模型出错的可能性,提高了系统的稳定性和效率。文章也指出了Function Calling的挑战,如缺乏统一标准,导致不同厂商的实现方式各异,以及对开源模型的支持不足。

🌐 **MCP 的作用与协议**:文章最后介绍了MCP(Message Communication Protocol),它定义了Agent与工具服务之间的通信方式。MCP允许Agent调用各种工具,并提供了查询工具信息、管理资源和提示词模板的功能。MCP与AI模型无关,专注于管理工具,为Agent提供灵活的工具调用和资源管理能力。

初探 Ai,Prompt、Agent、Function Calling、MCP是什么?

有人说 Agent 是智能体,但是智能体又是什么呢?有人说 MCP 是 Ai 时代的 USB 协议,那它是可以接 U 盘吗?

Prompt

User Prompt

2023年 open Ai 刚发布 GPT 的时候,Ai看起来只是一个聊天框。

我们通过聊天框发送一条消息给 Ai 模型,然后 Ai 模型生成一条回复,我们发的消息叫 User Prompt,也就是 用户提示词。一般就是我们提出的问题或者想说的话。

System Prompt

但是现实生活中,当我们和不同人聊天时,即便是完全相同的话,对方也会根据自己的经验给出不同的答案,比如我说:“肚子疼”,我妈可能会说:“病了吧”,我爸可能会说:“吃多了吧”,我女朋友可能会说:“爬开,老娘也疼!”。

使用 Ai 的时候并没有这样的人设,所以它就只能给出一个通用的回答:

于是,就希望给 Ai 加上人设,就是 System Prompt,也叫做 系统提示词。System Prompt 只要用来描述 Ai 的角色、性格、背景信息、语气等等。总之不是用户直接说出来的提示词都可以直接放在 System Prompt 里面。

每次用户发送 User Prompt 的时候,系统会自动把 System Prompt 也一起发给 Ai 模型,这样子整个对话就对味了。

Agent

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

第一个做出尝试的是一个开源项目,叫做 AutoGPT,它是本地运行的一个小程序。

如果想让 AutoGPT 帮我们管理电脑的文件,那得先写好一些文件的管理函数,比如说 list_files 用来列目录,read_files 用来来文件等等。,然后把这些函数以及它们的功能描述、使用方法注册到 Auto GPT 中。

AutoGPT 会根据这些信息生成一个 System Prompt,告诉 Ai 模型用户给了哪些工具,它们都是干什么的,以及 Ai 如果想要使用它们应该返回什么样的的格式,最后把这个 System Prompt 连同用户的请求一起发给 Ai 模型。

如果 Ai 模型足够的聪明的话就会按照要求的格式返回一个调用某个函数的信息,AutoGPT进行解析之后就可以调用对应的函数了,然后再把结果丢回给 Ai,Ai 再根据函数调用的结果决定下一步应该做什么操作,这个过程反复进行,直到任务完成为止。

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

Function Calling

Ai 模型说到底是个概率模型,还是可能返回格式不对的内容。

为了处理这种情况,很多 Ai Agent 会在发现 Ai 返回的格式不对时自动进行重试,一次不行就来第二次,现在市面上很多 Agent 使用的还是这种方式,例如 Cline 。但这种反复重试总归让人觉得不太靠谱。于是大模型厂商开始出手了,例如 ChatGPT、Claude、Gemini等等,纷纷推出了一个叫做 Function Calling 的新功能,这个功能的核心思想就是统一格式规范描述。

回到刚刚的例子,我们告诉 Ai 哪些工具以及返回格式,但是这些描述都是用自然语言随意写的,只要 Ai 看得懂就行。Function Calling则是对这些描述进行标准化,比如每个 Tool 都用一个 JSON 对象来定义,工具名写在 name 字段、功能说明写在 desc 字段,所需要的参数写在 params 字段里面等等。然后这些 JSON 对象也从 System Prompt 中剥离了出来单独放在一个字段里面,最后 function Calling 也规定了 Ai 使用工具时应该返回的格式。这样一来相同的工具描述都放在了相同的地方。

所有工具描述也都依照相同的格式,Ai 使用工具时的回复也都依照相同的格式,于是就能更加针对性的训练 Ai 模型,让它理解这种调用的场景。甚至在这种场景 Ai 依然生成错误的回复,因为回复的格式是固定的,Ai 服务器自己就可以检测到并且进行重试后返回给用户。用户根本感知不到错误的回复,不仅降低了用户端的开发难度,也节省了用户重试带来的 Token 开销。就是因为这些好处,现在很多的 Ai Agent 开始从 System Prompt 转向 Function Calling。

但是 Function Calling 也有着自己的问题:没有统一的标准。每家大厂的 Api 定义都不一样,而且很多开源模型还不支持 Function Calling ,所以 System Prompt 和 Function Calling 这两种方式现在在市面上是并存的。

以上讲的都是 Ai Agent 和 Ai 模型之间的通信方式:

MCP

Ai Agent 是怎么跟 Agent Tool 来进行通信的?

最简单的做法是把 Ai Agent 和 Agent Tool 写在同一个程序里面,直接函数调用,这也是大多数 Agent 的做法。

但是后来发现,有些 Tool 的方法其实是挺通用的,比如一个浏览网页的工具,可能多个 Agent 都需要,总不能在每个 Agent 里面都拷贝一份相同的代码吧,太麻烦也不优雅。

于是,把 Tool 变成服务统一的托管,让所有的 Agent 来调用,这就是 MCP。 MCP 是一个通信协议,专门用来规范 Agent 和 Tool 服务之间是怎么交互的。运行 Tool 的服务叫做 MVP Server,调用它的 Agent 叫做 MCP Client。MCP 规定了 MCP Server 如何和 MCP Client 通信,以及 MCP Server 要提供哪些接口,比如用来查询 MCP Server 中有哪些 Tool:Tool 的功能描述、描述需要的参数、格式等等的的接口。

除了普通的 Tool 这种函数调用的形式,MCP Server 也可以直接提供类似文件读写的服务叫做 Resource,或者被 Agent 提供提示词的模板叫做 Prompt。MCP Server 既可以和 Agent 跑在同一台机器上,通过标准输入输出进行通信,也可以被部署在网络上,通过HTTP进行通信。

注意:虽然 MCP 是为了 Ai 而定制出来的标准,但实际上 MCP 本身却和 Ai 模型没有关系,它并不关心 Agent 用的是哪个模型,MCP只负责帮 Agent 管理工具、资源和提示词。

完成流程

背景:我听说女朋友肚子疼:

    于是问 Ai Agent (或者说 MCP Client):我女朋友肚子疼怎么办?Agent会把问题包装到 User Prompt 中。

    然后 Agent 通过 MCP 协议,从 MCP Server 里面获取所有 Tool 的信息。

    Ai Agent 会把这些所有信息或者转化成 System Prompt 或者转化成 Function Calling 的格式。然后和用户请求 User Prompt 一起打包发送给 Ai 模型。

    Ai 模型发现有一个叫做 web_browse 的网页浏览工具,于是通过普通回复或者 Funciton Calling 格式,产生一个调用这个 Tool 的请求,希望去网上搜索答案。

    Agent收到这个请求之后,通过 MCP 协议,去调用 MCP Server 里的 web_browse 工具。

    web_browse 访问指定的网站之后,将内容返还给 Agent,Agent 再转发给 Ai 模型。

    Ai 模型再根据网页内容和自己的头脑风暴生成最终答案:“多喝热水”。

    最后由 Agent 把结果展示给用户。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI Prompt Agent Function Calling MCP
相关文章