多代理

本指南旨在介绍Nvmme中的多智能体人工智能系统架构,详细阐述其组成部分、操作限制和工作流程。

概念

与一组领域专家在复杂项目上的协作类似,多智能体系统在人工智能领域也运用了专业分工的原则。

该多智能体系统采用分层、顺序化的工作流程,最大限度地提高了效率和专业化程度。

1. 系统架构

我们可以将多智能体人工智能架构定义为一种可扩展的人工智能系统,该系统能够通过将复杂项目分解为可管理的子任务来处理这些项目。

在Nvmme中,一个多智能体系统由两个主要节点或智能体类型以及一个用户组成,它们在层次图中进行交互以处理请求并提供有针对性的结果:

  1. 用户:用户作为系统的起点,提供初始输入或请求。虽然多智能体系统可以被设计为处理各种请求,但重要的是这些用户请求应与系统的预期目的相一致。任何超出此范围的请求都可能导致结果不准确、意外循环甚至系统错误。因此,用户交互虽然灵活,但应始终与系统的核心功能保持一致,以实现最佳性能。

  2. 监督者AI:监督者作为系统的协调者,负责监督整个工作流程。它分析用户请求,将其分解为一系列子任务,将这些子任务分配给专门的工作智能体,汇总结果,并最终将处理后的输出呈现给用户。

  3. AI工作团队:该团队由专门的AI智能体或工作成员组成,每个成员都通过提示消息接受指令,以处理工作流程中的特定任务。这些工作成员独立运作,从主管那里接收指令和数据,执行其专门的功能,根据需要使用工具,并将结果返回给主管。

2. 运营约束

为了维持秩序和简洁性,这个多智能体系统在两个重要约束下运行:

  • 一次处理一项任务:Supervisor有意设计为一次只专注于一项任务。它会等待当前活动的Worker完成任务并返回结果,然后再分析下一步并委派后续任务。这确保了每一步都在成功完成后才继续进行,从而防止了任务过于复杂。

  • 每个流程一个监督者:虽然理论上可以通过实现一组嵌套的多智能体系统来为高度复杂的工作流程构建更复杂的层次结构,但LangChain所定义的“层次化智能体团队”是由一个顶层监督者和多个中层监督者管理多个工作团队,而Nvmme的多智能体系统目前则采用单个监督者进行操作。

信息提示框 在规划应用程序的工作流时,这两个约束条件非常重要。如果你试图设计一个工作流,其中Supervisor需要同时并行委托多个任务,系统将无法处理,你会遇到错误。

监督者

监督者作为管理整体工作流程的智能体,并负责将任务分配给合适的执行者,需要一组组件才能正常运行:

  • 具备函数调用能力的聊天模型,能够管理任务分解、委托和结果聚合的复杂性。

  • 智能体内存(可选):虽然监督器可以在没有智能体内存的情况下运行,但该节点可以显著增强需要访问过去监督器状态的工作流程。这种状态保存功能可以使监督器从特定点恢复工作,或利用过去的数据来改进决策。

监督者提示

默认情况下,监督者提示的措辞会指示监督者分析用户请求,将其分解为一系列子任务,并将这些子任务分配给专门的工作智能体。

虽然监督提示可以根据特定应用需求进行定制,但它始终需要以下两个关键要素:

  • {team_members}变量:此变量对于主管了解可用劳动力至关重要,因为它为主管提供了工作人员的姓名列表。这使得主管能够根据工作人员的专业能力,将任务分配给最合适的工作人员。

  • **“FINISH”关键字:**此关键字在监督者提示中起到信号作用。它指示监督者何时应认为任务已完成,并向用户展示最终输出。如果没有明确的“FINISH”指令,监督者可能会不必要地继续委派任务,或者无法向用户提供连贯且最终确定的结果。它表明所有必要的子任务都已执行,用户的请求已得到满足。

{% 提示 样式="信息" %}

重要的是要理解,监督者(Supervisor)与工作者(Workers)扮演着截然不同的角色。与可以根据高度具体的指令进行定制的工作者不同,**监督者在一般指令下运作最为有效,这使其能够根据自身判断来规划和委派任务。**如果您是初次接触多智能体系统,我们建议您坚持使用默认的监督者提示

理解Supervisor节点中的递归限制:

此参数限制了我们应用程序中嵌套函数调用的最大深度。在当前上下文中,它限制了监督器在单个工作流执行过程中可以自我触发的次数。这对于防止无限递归和确保资源有效利用至关重要。

监督器的工作原理

在接收到用户查询后,监督者会通过分析请求并识别用户的预期结果来启动工作流程。

然后,主管利用监督者提示中的{team_members}变量(该变量仅提供可用工作者AI名称的列表),推断出每个工作者的专长,并策略性地为工作流程中的每项任务选择最合适的工作者。

{% 提示 样式="信息" %}

由于主管仅通过工作者的姓名来推断他们在工作流程中的职能,因此,这些姓名必须相应地设置。**清晰、简洁且具有描述性的姓名,能够准确反映工作者的角色或专业领域,对于主管在委派任务时做出明智的决策至关重要。**这确保了为合适的工作选择合适的工作者,从而最大限度地提高系统满足用户请求的准确性。


工人

作为被指示在系统内处理特定任务的专门智能体,工作者需要两个基本组件才能正常运行:

  • 监督者:每个工作者都必须与监督者建立连接,以便在需要委派任务时能够联系到监督者。这种连接在多智能体系统中建立了基本的层级关系,确保监督者能够高效地将工作分配给相应的专业工作者。

  • 具备函数调用能力的聊天模型节点:默认情况下,除非直接为其分配了聊天模型节点,否则工作节点会继承主管节点的聊天模型节点。这种函数调用能力使工作节点能够与专为其特定任务设计的工具进行交互。

信息提示框 为每个工作者分配不同的聊天模型的能力为我们的应用程序提供了显著的灵活性和优化机会。通过选择针对特定任务定制的聊天模型,我们可以在处理简单任务时利用更具成本效益的解决方案,而在真正需要时保留专门的、可能更昂贵的模型。

了解Workers中的最大迭代次数参数

LangChain 将“最大迭代次数上限”视为防止智能体系统内出现混乱的重要控制机制。在当前上下文中,它为我们提供了防护措施,防止监督者和工作者之间进行过多甚至可能无限的交互。

与监督者节点的“递归限制”(限制监督者可以调用自身的次数)不同,工作者节点的“最大迭代次数”参数限制了监督者可以迭代或查询特定工作者的次数。

通过设定最大迭代次数或对其进行限制,我们确保即使在系统出现意外行为的情况下,成本也能得到控制。


示例:一个实际用户案例

既然我们已经对Multi-Agent系统在Flowise中的工作原理有了基本的了解,接下来让我们探索一个实际应用。

想象一下,一个Lead Outreach多智能体系统(可在市场购买)被设计用于自动化识别、筛选和接触潜在客户的过程。该系统将利用一个监督者来协调以下两个工作者:

  • 首席研究员:该工作人员将使用谷歌搜索工具,负责根据用户定义的标准收集潜在线索。

  • 销售线索生成主管:该职位将利用销售线索研究员收集的信息,为销售团队创建个性化的电子邮件草稿。

**背景:**Solterra Renewables的一名用户希望收集有关常青能源集团的可用信息,该集团是一家位于英国的知名可再生能源公司,并计划将其首席执行官阿梅利亚·克罗夫特作为潜在联系人。

**用户请求:**Solterra Renewables公司员工向多智能体系统提出以下查询:“我需要有关Evergreen Energy Group和Amelia Croft的信息,他们可能是我们业务的新客户。”

  1. 主管:

    • 主管接收用户请求,并将“首席研究员”任务委托给“首席研究员助手”。

  2. 首席研究员助理:

    • 首席研究员使用谷歌搜索工具,收集有关常青能源集团的信息,重点关注:

      • 公司背景、所属行业、规模及地理位置。

      • 最新消息和进展。

      • 关键高管,包括确认阿梅利亚·克罗夫特(Amelia Croft)担任首席执行官一职。

    • 首席研究员将收集到的信息发送回给“主管”。

  3. 主管:

    • 主管从首席研究员处接收研究数据,并确认阿梅利亚·克罗夫特(Amelia Croft)为相关负责人。

    • 主管将“生成销售邮件”的任务委托给销售线索生成器工作者,并提供:

      • 关于长荣能源集团的研究信息。

      • 阿梅利亚·克罗夫特的电子邮件。

      • 关于Solterra Renewables的背景信息。

  4. 销售主管生成员工:

    • 首席销售生成员根据以下因素为阿梅利亚·克罗夫特(Amelia Croft)定制了一封个性化电子邮件草稿:

      • 她作为首席执行官的角色以及Solterra Renewables公司服务对其公司的相关性。

      • 关于长荣能源集团当前重点或项目的研究信息。

    • 销售线索生成员工将已完成的电子邮件草稿发送回给“主管”。

  5. 主管:

    • 主管收到生成的电子邮件草稿,并发出“完成”指令。

    • 主管将电子邮件草稿输出回给用户,即“Solterra Renewables员工”。

  6. **用户接收输出结果:**Solterra Renewables的员工会收到一封准备审核并发送给Amelia Croft的个性化电子邮件草稿。

视频教程

在这里,您将找到来自Leon的YouTube频道的一系列视频教程,这些教程展示了如何使用无代码技术在Flowise中构建多智能体应用程序。

Last updated