前言
本文都是基于我自己的理解,和在实践中的心得。
如有雷同,那是英雄所见略同,求点赞关注。
如果你有不同的意见,可以评论探讨,否则你的都对。
未来大模型的发展方向,一般认为有四个,AIGC(内容生成)、Copilot(智能助手)、Insight(知识洞察)、Agent(数字代理)。
本文重点说 agent 和 copilot,在应用这块,这俩货几乎都是必不可少。
copilot&agent
关于copilot和agent并没有严格意义上的定义。
我的理解是,agent是大模型和外部交互的代理人,是一般意义上的智能体。它是一个集散中心,决定了模型是如何被应用起来的,外部条件是如何被构建的。处在语义逻辑处理和具体应用的中间层。
而copilot是agent的超集。copilot不光是个智能体,能够管理更多agent来完成更复杂的工作。
区别:
- 自主性不同:Copilot需要依赖清晰明确的prompt才能很好地发挥作用,而Agent只需要说出想做什么,就可以自己规划并执行任务。
- 功能不同:Copilot主要被设计为根据用户提供的具体信息或问题来生成相应的回答或结果,而Agent被设计为能够自主地根据用户的目标或任务来规划和执行行动。
我建议不要纠结这些定义,当前都处在初级阶段,那个好用用那个,灵活多变才是硬道理。
说的再好,不如画个图:
第一眼看到这个图,是不是就想吐槽,为啥要搞一个中间层出来?
我们通常意义上的大模型,提供的是 推理,模拟,规划 的能力。而实际工程上,我们要告诉他,如何进行思考? 可以进行哪些行动?有哪些记忆?
agent
先看一个通用的结构定义,懒得写了,沾。
Lilian, OpenAI AI 安全团队 leader
在他的博客中,认为 Agent = 大模型(LLM)+ 工具使用 + 规划 + 行动 + 记忆
在由LLM驱动的自主代理系统中,LLM作为代理的大脑,辅以几个关键组件:
- 规划
- 子目标和分解:代理将大型任务分解为较小、可管理的子目标,从而实现对复杂任务的高效处理。
- 反思和完善:代理可以对过去的行动进行自我批评和自我反思,从错误中学习并为未来的步骤做出改进,从而提高最终结果的质量。
- 记忆
- 短期记忆:我认为所有上下文学习(请参见提示工程)都利用了模型的短期记忆来学习。
- 长期记忆:这为代理提供了在较长时间内保留和检索(无限)信息的能力,通常通过利用外部向量存储和快速检索来实现。
- 工具使用
- 代理学习调用外部API以获取缺失于模型权重中的额外信息(通常在预训练后难以更改),包括当前信息、代码执行能力、访问专有信息源等。
copilot
copilot并不是一个固定的结构,下面是我画的,仅供参考。
按照当前对copilot的定义,copilot = agent + 调度 + pe + 处理(process)
-
process : 我起的名字,有别于tools,他应该提供更多的外部工具,比如可以运行语言脚本,调api,甚至是操作数据库。
-
schedule : copilot的核心
- 和planning类似,但schedule决定了一系列流程节点的调度。它可以以任意的方式将
process
和agent
组合起来使用,以便完成一系列复杂的操作。 - 这是一个非常重要的环节,后面会将每个子项单独讲。
- 和planning类似,但schedule决定了一系列流程节点的调度。它可以以任意的方式将
-
pe : Prompt Engneering
- prompt决定了模型是如何认识自己的,如何思考未来的。
- pe的重要无需多言,甚至出现了一个新的职位pe工程师,后面我也会单独开一篇说prompt。
流程图模式
最简单的agent编排模式,就是提前画好路程图,按照固定的流程运行。
agent tools process 都作为流程中的节点。
适合用来解决封闭域问题。
multi-agent
MetaGPT 提出的一种,多智能体元编程框架。
简单概括:将若干 专精某个任务的agent 按照sop组合起来,进行工作。
举个例子:你是公司的老板,它就是这个公司,你说一句话,剩下的它来完成。
如下图,MetaGPT与人类团队之间软件开发SOP的比较
感兴趣可以看一下它的论文
多智能体
清华大学在AgentVerse开源框架中提的一种解决方案。如图:
论文中,提供了如上图所示的流程图,它的设计流程模拟了人类的决策过程,包含了四个阶段,分别是:专家招聘、协作决策、行动执行和评估。
- 专家招聘阶段根据当前问题解决的进展来确定智能体的专家成员都有哪些。
- 协作决策阶段,各个智能体参与讨论和制定策略,并达成共识,这里会有多轮执行
- 行动执行阶段,各个智能体根据决策进行执行
- 评估阶段,提供关于当前状态的进行与目标的对比,如果没有达到预期就根据奖励反馈重新回到专家招聘阶段进行新的一轮交互。
详细请看论文
其他
还有很多有意思的方案,比如Generative Agents,还有 ChatDev 感兴趣可以看看论文。
方案有很多,我们还是要吸收精华,取百家之长,最终融合贯通,形成自己的方案。
我的实践
不多bb,上图
是不是一眼就理解了,整个架构以schedule
为中心,其他模块提供能力,最终组成一个AI。
一句话:AI = 工具 + llm(模型) + 记忆 + pe(设定) + planning(规划)
- process/tools:提供工具能力,可以是函数,api,脚本,流程节点 等等
- memory: 长期记忆+短期记忆+人物画像
- pe: 提供设定,不同的pe代表着不同的角色,当然和人不同,pe是可以动态组装的。
- planning:调度规划,我认为这是一个开放的能力,因为没有银弹,或者说目前大多数的策略都不咋地。那不如做成开放式的。
尾语
我知道你很想吐槽:
- "偷懒式设计"
- "看起来设计的很好,但工程实现上会很复杂"
- "看了个寂寞"
我的答案:
-
大模型应用本身就是个很复杂的事情,首先就是要划分好职责和模块,并且明确模块之间的关系,然后才能开始写代码,做应用,才能长久维护。 我们之前试了很多框架,抄了很多论文,但都是各种问题,最终重构成了这种模样。
-
长期看我博文的朋友肯定了解我,有设计,必有代码,虽然实现很复杂,但我一定会单开一篇讲代码。
-
有朋友留言,想让我推荐一些相关的东西,以便了解大模型最新现状,我这里推荐一下掘金的大模型子站