AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Multi Agent — 概览
发布日期:2024-07-02 08:17:38 浏览次数: 2763 来源:Afunby的 AI Lab


LLM 开发中目前最热门的可以说是非 Agent 莫属。因此六月份的写作重点将聚焦在 Agent 上,准备写一个 Multi-Agent 系列,从三个角度进行:

1-使用 AutoGen 搭建多智能体,从代码的角度实现 Multi-Agent Conversations;

2-使用支持本地化部署的大模型开发软件 ,以零代码的方式搭建多智能体;

3-使用字节的 Coze,搭建一个基于 Agent 微信公众号小助手。

第一种基于  AutoGen 的多智能体协同,可能是未来大模型应用构建的新范式,更多的是面向开发者;第二种是前一种的零代码实现,面向开发者和非技术的业务人员;第三种最为普适,面向无编程和技术背景的小伙伴,旨帮助大家在日常中应用 Agent。

希望借助本系列文章,能帮助大家掌握最新的多智能体协同的机制。


一、AI Agent

在 AI 领域,Agent 通常被定义为一种具有感知能力的实体,它能够通过对其所处环境的观察来做出相应的决策和反应,比如我们在《图解强化学习》中提到的 Agent。

Agent 既可以是软件形式的程序,例如对话机器人,也可以具备物理形态,如机器人。在 LLM 领域,AI Agent 是指应用了LLM 能力的 Agent。

Agent 的核心架构由 Planning(规划)、Tools(工具)、Memory(记忆)三个模块组成:

Planning-规划

Planning 制定计划,可以根据过去的行为与目标动态规划下一步的行动。实现 Planning 模块的功能又分为以下几种技术:

  1. Reflexion-反思:Agent 思考他们从任务中获得的反馈,然后存储其任务回合中的记忆,以帮助他们在下一步做出更好决定。这是 Agent 内部的一种自我完善机制,使其能够从过去的行动中吸取教训,对结果进行反思,并在未来的任务中做出更好的决策。


这与我们在强化学习中介绍过的 Agent 行为相似, Model-free  算法正是基于这样的方式找到最优决策。

二者的区别在于,强化学习中的策略更新通常有明确的数学定义和优化目标, 主要基于数值优化和策略更新算法;而 Reflexion 更依赖于经验和启发式方法,且具体实现上更灵活,包含逻辑推理在内的多个方面。

  1. Chain of Thought-思维链:可以利用提示技术,要求大语言模型建立与人类推理相似的思维,从而得到答案。论文《Tree of Thoughts》,就提出了采用树或图的数据结构进行上下文管理,从而减少所需的提示次数。


  1. Decompose-分解: Agent 将复杂的问题分解成更小、更容易解决的模块;然后再利用不同的工具来处理模块化问题。


  2. ReAct:使用 ReAct 将 Reflexion 和 Action 结合起来,使 Agent 能够反复思考、行动和观察,动态地解决复杂的任务。LangChain 和 LlamaIndex 已在其代理框架中实现了这一概念。


Tools-工具

有了解决问题的计划之后,Agent 就可以利用一些工具按计划解决问题。

  1. RAG:RAG 通过整合外部数据、存储在向量数据库中的外部信息,或任何大型语料库,来增强 Agent 的响应问题的能力。关于 RAG 的详细技术说明可参考这篇文章。


  1. Search ToolsAgent 可以使用各种实用工具来浏览和检索信息,帮助他们做出决策,如 Google、Bing、维基百科等。


  2. Code interpreter:帮助 Agent 更好地理解和执行代码的外部工具。


  3. Custom tools在定制工具中利用任何外部功能或外部 API 端点,这极大增强了 Agent 的能力。

记忆

Agent 的记忆分为短期记忆和长期记忆两种。

  1. Short-term Memory-短期记忆: 短期记忆是 Agent 在当前任务或对话会话中存储和使用的信息。它通常包含近期对话的上下文、当前任务的状态和临时数据。


    短期记忆是临时的,只在当前任务或会话中有效,主要用于保持对话的连贯性和上下文。例如,在对话过程中,短期记忆可以帮助模型记住之前的对话内容,从而在回答问题时提供相关信息。一旦任务完成或会话结束,这些信息通常会被清除或不再被使用。

    ChatGPT 的一轮对话中,会记忆你这这一轮对话中的所有上下文信息,并在每次对话中都可能使用这些信息。


  2. Long-term Memory-长期记忆: 长期记忆是指 Agent 在多个任务或会话中存储和使用的信息。它包含了更稳定和持久的数据,如用户偏好、历史记录、知识库和经验教训。

    长期记忆是持久的,信息在不同任务和会话之间被保留。即使会话结束或系统重启,这些信息仍然存在。

    长期记忆可以将不同任务和会话中的信息关联起来,形成更全面的知识网络。现在的 ChatGPT 中“Memory”的设置了实际上就是长期记忆。


在LLM中,长期记忆可以通过多种方式实现,包括数据库、知识图谱和外部存储系统。长期记忆还可以将不同任务和会话中的信息关联起来,形成更全面的知识网络。 

  1. Semantic or standard cache-语义缓存与标准缓存:作为长期存储器的扩展,可以将指令对和 LLM 答案存储在数据库或向量数据库中。在向 LLM 发送下一个查询之前,代理可以检查缓存,以加快响应时间,降低调用基于 API 的 LLM 的成本。


若将 Agent 类比为人类,则可以将 LLM + Planning + Memory 类比为 Agent 的大脑,而 Tools 则是 Agent的四肢。


二、 Multi-Agent

以上我们讨论的是单一 Agent 的架构。将多个 Agent,按照一定的工作流进行编排,每个 Agent 负责不同的任务,即组成了多智能体架构(Multi-Agent )。这非常类似于我们实际中的工作流程或组织结构:拥有不同能力的人,负责不同的任务,每个工序执行的结果给到下一个工序,最终得到最后的任务成果。

举一个实际的例子。现在我要设计一个智慧城市的数据分析工作流,由于数据来源比较复杂,并且要同时考虑模型的经济和分析地高效,可以设计三个不同的 Agent:

  1. Agent-1 代理负责数据收集,从各种数据源(如气象部门、交通部门、环保部门的数据共享接口),收集原始数据,并进行去重、缺失值填补、格式转换等数据预处理工作。为了经济,使用 GPT-3.5 模型.


  2. Agent-2 拿到 Agent-1 的结果,然后进行数据加载和深度数据分析,使用本地微调过的 Mistral 7B 模型。


  3. Agent-3 则负责最终的数据可视化,将上一步的数据分析结果展示为可视化图表,并提供用户界面,可以选择允许用户与可视化结果进行交互,如筛选、放大、导出等。 


这就是一个 multi agent 的例子,它允许不同角色的 Agent 完成任务,其中某个 Agent 擅长检索数据,余下的 Agent 则擅长数据分析或数据可视化。

相比于 single agent , multi agent 有哪些优势呢?我们可以从接口 (Interface)  和架构 (Architecture)  两个维度分析:

Interface

Interface 是指,从用户的角度来看,是在与单个 Agent 进行交互,还是能明确地看到多个 Agent 在工作,甚至需要与多个  Agent 交互。

单一的交互可以使许多应用程序的用户体验更加简单明了。但某些情况下,这不是最佳方案。比如当应用程序要让多个 Agent 就某个主题进行辩论时,用户需要看到每个 Agent 的发言。这种情况下,让用户实际看到多个 Agent 的行为是更好的。再如社会模拟实验中,用户也希望看到每个 Agent 的行为。

Architecture

Architecture 是指,后台是否有多个 Agent 在运行。

从架构的角度,与 single agent 相比,multi-agent 架构更易于维护扩展。即使是基于 single agent 的接口,使用 multi-agent 的实施架构也可能使系统更加模块化,开发人员更容易添加或删除功能组件。目前的技术条件下,无法构建出一个满足所有功能的 single agent ,但可以将不同的 Agent 和 LLM 进行组合,构建出一个满足使用要求的 multi-agent。


三、AutoGen

multi-agent 开发框架有 AutoGen,CrewAI ,Agent Protocol 等。本系列文章中的代码实践均基于 AutoGen 进行。

AutoGen 是一个框架,可以使用多代理开发 LLM 应用程序。

这些代理可以相互对话以完成任务。AutoGen 的代理可定制、可对话,允许人类无缝参与。它们可以采用 LLMs、人工输入和工具组合的各种模式运行。


四、多代理对话框架(Multi-Agent Conversation Framework

Autogen 通过多代理对话框架(multi-agent conversation)实现 LLM 应用程序的构建,提供可定制、可对话的 Agent,将 LLMs、工具和人类整合在一起。通过自动化多个具有不同能力的 Agent 之间的聊天,可以地让其共同、自主执行任务,或在人类反馈下执行任务。

如上图所示,在多代理框架中, 用户代理 User Proxy Agent  扮演一个中间人的角色,用户使用 shell 与  User Proxy Agent  在环境中交互;助手代理 (Assistant Agent)  配置为一个编写 Python 代码的大模型。User、User Proxy Agent、Assistant Agent 在上述对话中的具体步骤为:

  1. 对话开始,用户通过 User Proxy Agent 提出了请求:“绘制META和TESLA股票价格变化的图表”。这一请求是由用户直接输入的,用户代理作为接口接收用户的指令。

  2. User Proxy Agent 请求 Assistant Agent 绘制 META 和 TESLA 股票价格变化的图表。

  3. Assistant Agent 提供了一段执行代码,但 User Proxy Agent 反馈错误,指出未安装 yfinance 包。

  4. Assistant Agent 建议首先安装yfinance包,然后再执行代码。User Proxy Agent 随后进行安装。

  5. 安装完成后,Assistant Agent 生成了一个图表输出。

  6. User Proxy Agent 请求绘制百分比变化的图表。

  7. Assistant Agent 提供了修正后的代码。

  8. 最终生成了一个显示百分比变化的图表。


总结

本文介绍了 Agent 和基本概念。在后续的文章中,将使用展示多智能体应用的搭建过程,并进一步深入探讨本篇文章中的相关概念。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询