何为复合人工智能系统?
最近,伯克利的研究人员写了一篇文章——《从模型到复合人工智能系统的迁移》,文中归纳了大语言模型应用的最新进展,并强调了向构建复杂管道智能系统的演变,而非封闭的单一模型。最终的系统可能使用相同的底层模型(如 GPT4),但将提示和上下文称为不同的组件。
复合人工智能系统的常见部署模式有:
1.RAG(检索和理解是关键)——通过思维生成、推理和上下文数据,系统能自我反思并尝试以更高级的方式理解用户的查询,然后给出答案,理想的设置是智能体辅助系统。它与面向用户模型/系统的对话模型集成到一起,RAG 系统也可以成为对话式人工智能或 CoPilot 系统的一部分。 2.多智能体问题解决者(协作角色扮演是关键)——系统依赖于多智能体输出的协作和自动化构建,智能体输出之间互相输入,每个智能体均有明确的角色和目的。每个智能体都可以访问自己的一套工具,在推理和规划其行动时承担特定的角色。3.对话式人工智能(对话是关键)——正如客户服务智能体类自动化软件,它们在应用程序生态系统内与人类互动,并能根据人类的输入和验证执行可重复任务。最为重要的是对话记忆和对话生成,给人一种与人类进行对话的感觉。对话模型可以访问底层的 RAG 系统,是多智能体问题的解决者。4.CoPilots(界面环中的人类是关键)——通过访问工具、数据、推理和规划能力以及专业配置文件,系统可以在解决闭环问题时独立与人类互动。CoPilot 的关键是理解人类工作的环境。例如 MetaGPT 研究员:搜索网络和编写报告,对 Devin 的看法做出衡量,用 CrewAI 构建一些工具。
注意:基于作者在部署多个 LLMs 系统过程中所获得的经验,我认为这些系统并非万能钥匙。正如其他 AI 系统一样,需要在 LLM 周围进行大量的工作才能让它们做基础的事情,即便这样,它们也不能完全可靠和可扩展,性能难以得到保证。
未来之路:在生态系统中使用 LLM 的最大价值是启用机器学习,即理解产品或体验的弱点,并将数据以一种长期提高性能的方式回馈到系统中,从而取代或减少人工注释员的工作。在测试和评估 LLMs 输出的封闭系统时,它可以做很多事情,令人十分惊讶!虽然这样做的成本依然不小…但是这也为构建更好的 LLM 生成了数据, 这种机器学习所依赖的反馈效应,是 LLM 最大的价值所在。
系统组件以及它们如何相互交互以构建复杂系统
复合人工智能系统的部署通常使用相互连接的“模块”,模块之间通过互联来执行特定任务,可以将它们串联起来实现特定的设计模式。
在这里,模块指的是系统中能执行明确定义任务的不同组件,包含诸如搜索引擎、LLM 等底层系统。常见的模块包括生成器、检索器、排名器、分类器等,传统上称之为 NLP 任务。这些概念抽象专注于特定领域(例如,虽然NLP 模块可能与计算机视觉或推荐系统具有不同的抽象模块,但它们都依赖于相同的底层模型服务或搜索提供商)。
模块的关键组件
其他通用模块
在当前流行的人工智能文化中,人们已经习惯了像“工具”、“智能体”、“组件”这样的术语,这些都可以视为模块。
基于LLM的自主智能体 —— 复合人工智能系统中的关键模块
自主智能体是一种形式的模块,它可以通过LLM的帮助自主地进行推理和规划。自主智能体依赖于一系列子模块来决定如何在与环境交互时推理和规划行动。
来源
自主智能体的主要能力或技能:
推理能力,通过思维链,最终形成动作计划。
1.推理 —— 通过观察、生成假设并基于数据进行验证的逻辑方法来解决问题。2.思考 —— 应用推理生成一致的因果关系。3.思维链 —— 一系列思考,将解决方案分解为一系列逻辑上相互关联的推理。 4.规划 —— 决策能力,形成子目标并构建从当前状态到未来状态的路径,能够访问底层环境以采取动作和学习。在此处了解更多关于LLM规划的信息。5.工具 —— 子模块,智能体根据指令与外部世界互动。6.动作 —— 如其名,是智能体为追求目标而采取的决定性步骤,根据计划调用工具来触发动作,动作是在环境中进行的。7.环境 —— 智能体动作和奖励的外部世界来源,如自定义应用程序(如Microsoft Word、编码环境)、游戏或模拟等。
我们是在和随机鹦鹉协同工作吗?
注:尽管围绕LLM缺乏推理和规划能力有很多理论工作,但很明显LLM能够很好地模仿“解决方案”。如果给出了一个需要解决的问题,以及一些以前是如何解决该问题的例子,LLM便可以很好地复制逻辑思考过程,在这里不用关心它是否泛化,正如Yann Le Cunn所说,自回归模型注定要失败!
在企业环境中,需要的只是可靠地重复任务,并从以前的经验中学习,和鹦鹉学舌一样无需创新。
如何在现实环境中规划鹦鹉?
调查研究表明,LLM能够通过以下方式赋能自主智能体:
1.任务分解 —— 现实生活中的任务通常是复杂和多步骤的,为规划带来了重重困难。为此采用了分而治之的思想,将复杂的任务分解成几个子任务,然后依次为每个子任务制定计划,例如TDAG。 2.多计划选择 —— 该方法侧重于让LLM“思考”更多,为任务生成各种备选计划,然后使用与任务相关的搜索算法来选择一个计划执行。例如ReWoo。3.外部模块辅助规划 —— 也就是计划检索。4.反思和细化 —— 该方法强调通过反思和细化来提高规划能力,它鼓励LLM反思失败,然后细化计划,比如自我批评和细化循环。5.记忆增强规划 —— 该方法通过额外的记忆模块增强规划,在其中存储有价值的信息,如常识知识、过去的经历、特定领域的知识等。在规划时检索这些信息,作为辅助信号。
理解LLM智能体的规划:一项调查
如何为RAG训练这些能力?详见《为RAG企业微调LLM —— 设计视角》。
在脑海中有了这些模块抽象之后,再来看看如何开发不同的设计模式来解决对话式人工智能、RAG和CoPilot系统中的复杂问题。
复合人工智能系统的设计模式
澄清一些定义
鉴于当前AI“流行文化”环境中被误用和误解的术语,迫使我在继续之前澄清一些事实:
1.什么是“智能体”模式?
自主智能体的核心在于它能自主决定采取哪些步骤,如果需要手动定义流程或决策,它只是一个智能工作流。但是,如果无需定义流程,并且通过使用上述工具和动作来启用决策,那么称之为“智能体”模式。例如,智能体RAG是一种模式,其中一个模块被赋予访问搜索工具的权限,它可以自动生成复杂的搜索流程,而无需任何预定义的步骤干预。
2.什么是“工作流”?
简单来说,工作流是预先编码和手动声明的计划,以可预测和可重复的方式解决问题。
3.什么是“多智能体”?
系统中的不同模块,承担不同的角色和责任,相互交互,共同处理彼此的输出并协作解决问题。
在构建智能体时,需要优化以下关键事项:
1.智能体配置文件 —— 智能体的表现是由提示驱动的,高度依赖于“角色”配置文件。2.智能体通信 —— 模块之间的通信模式可以像下图中那样抽象化。3.智能体环境接口 —— 从执行环境中收集反馈以学习、适应和定位生成尤为重要。 4.智能体学习和演变 —— 智能体系统从与环境(特别是对于编码助手)的交互、其他智能体、自我反思、人类反馈、工具反馈等中学习。接下来将探索每种架构在实时解决问题时使用什么策略。
选择模式之前的考量
为了抽象定义设计模式,需要开发RAG、对话式人工智能、CoPilots和复杂问题解决器,为此提出以下问题:
1.模块之间的流程是明确定义的还是自主的?项目流程与智能体系统。2.流程是方向性的还是受“消息传递”启发的?是合作的还是竞争的?智能体模块。3.流程是否可自我学习?自我反思和纠正重要吗?
- 能否具备推理和动作循环?
- 模块之间能否相互反馈?
4.是否可在环境中测试各个模块的输出?5.流程的执行是否随用户输入而变化?
在下文中,我们将介绍复合人工智能系统的三种部署模式。
暂无评论内容