智能体21种设计模式之(6)多智能体协作模式
多智能体协作模式通过组织多个专长型智能体协同工作,有效解决了单智能体在复杂任务中的局限性。该模式基于任务分解原则,将目标拆解为子问题分配给具备相应能力的智能体处理,并通过标准化通信协议实现协作。协作形式包括顺序交接、并行处理和层级结构等,适用于研究分析、软件开发等跨领域场景。这种架构具有模块化、可扩展性强等优势,能产生超越单体的协同效应。代码示例展示了使用CrewAI框架创建智能体团队完成博客写作
单智能体在处理任务明确、范围清晰的问题时表现良好,但在面对更复杂的跨领域任务时往往力不从心。多智能体协作模式通过组织一组相互合作、各司其职的专长型智能体来克服这些限制。这种模式基于任务分解原则,将高层次目标拆解为若干独立的子问题,然后将每个子问题分配给拥有相应工具、数据权限或推理能力的智能体来处理,以发挥各自优势。
例如,一个复杂的研究问题可以这样拆分:由研究智能体负责信息检索、数据分析智能体负责统计处理、综合智能体负责生成最终报告。这类系统的效果不仅源于分工,更取决于智能体之间的通信机制。为此需要标准化的通信协议和共享机制,使智能体之间能够交换数据、委派子任务和协调行动,以确保最终结果的连贯一致。
这种分工协作架构具有多项优势,包括更强的模块化、可扩展性和鲁棒性。因为单个智能体的故障不一定会导致整个系统瘫痪。更重要的是,通过分工协作,多智能体系统能够发挥协同效应,其整体表现往往超越任何单个智能体的能力上限。
多智能体协作模式概览
多智能体协作模式是指设计由多个独立或半独立智能体组成的系统,它们之间协同工作以实现共同目标。每个智能体通常承担明确的角色,拥有与整体目标一致的目标,并可以使用不同的工具或知识库。其强大之处在于智能体之间的互动与协同,能够产生超越单体能力的协同效应。
协作可以有多种形式:
-
顺序交接: 一个智能体完成任务后将输出交给另一个智能体继续处理,形成管道式工作流(类似于规划模式,但涉及不同的智能体)。
-
并行处理: 多个智能体同时处理同一问题的不同部分,最后将各自的结果进行合并。
-
辩论与共识: 在多智能体协作中,来自不同视角和信息来源的智能体通过讨论和评估各种方案,最终形成共识或得出更加可靠的决策。
-
层级结构: 管理型智能体可以根据各个执行型智能体的工具权限或插件能力,动态分配任务并汇总结果。每个智能体也可以负责一组相关工具,而不是让单个智能体承担所有工具调用的责任。
-
专家团队: 由研究员、撰稿人、编辑等在各自领域具备专业知识的智能体组成,他们协同合作,共同完成复杂的任务。
-
评审者模式: 一组智能体先生成初始输出(如计划、草稿或答案),另一组智能体随后严格评估该输出是否符合政策、安全性、合规性、正确性、质量要求以及组织目标。原始输出的智能体或最终智能体再据此反馈来改进输出。这种模式对于代码生成、学术写作、逻辑检查以及确保伦理合规方面尤其有效,其优势包括更强的稳定性、更高的质量,以及显著减少幻觉和其他错误的可能性。
多智能体系统(见图 1)的设计主要包括三个方面:明确每个智能体的角色和职责、建立用于信息交换的通信通道,以及制定引导它们协同工作的任务流程或交互协议。

图 1:多智能体系统示例
Langchain、Langgraph等框架通过提供智能体、任务和交互流程的组件,实现这些协作模式。这种方法对于那些需要多种专业知识、包含多个独立阶段,或者能从不同智能体间相互验证信息中受益的场景特别有效。
Crew AI 和 Google ADK 等框架通过提供智能体、任务和交互流程的组件,实现这些协作模式。这种方法对于那些需要多种专业知识、包含多个独立阶段,或者能从不同智能体间相互验证信息中受益的场景特别有效。
实际应用场景
多智能体协作是一种强大且通用的模式,适用于许多不同的领域:
-
复杂研究与分析: 多个智能体可以协同完成一个研究项目,采用和人类研究团队类似的分工形式。比如一个智能体负责搜索学术数据库,另一个负责整理和总结要点,第三个负责发现和归纳趋势,第四个将这些信息整合成最终报告。
-
软件开发: 设想由多个专职智能体协同开发软件的场景。需求分析智能体负责需求分析,开发智能体负责编写代码,测试智能体负责测试,文档智能体负责编写文档。它们的输出可以相互可见,协同开发和验证各个组件。
-
创意内容生成: 在策划一项营销活动时,可以由多个专长不同的智能体共同配合,比如负责市场调研的智能体、负责撰写文案的智能体、负责设计素材的智能体(使用图像生成工具),以及负责社媒排期的智能体,它们协同工作完成整个活动。
-
财务分析: 多智能体系统还可以用于分析金融市场,不同的智能体分别负责获取股票数据、分析新闻情绪、分析技术面以及生成投资建议。
-
客户支持: 一线客户支持智能体可以处理用户的常见咨询,在遇到复杂或专业性强的问题时,会按问题复杂度将工单升级给相应的专业智能体(如技术专家智能体或计费专家智能体)。
-
供应链优化: 智能体可以代表供应链中的不同节点(如供应商、制造商、分销商),通过协作来优化库存、物流和排期,以应对不断变化的需求或其他突发的情况。
-
网络分析与故障修复: 在自主运维系统中,采用多智能体架构对故障定位和问题处理也特别有用。多个专职智能体可以协同进行问题排查与修复,并提出最优处理建议。它们还可以与现有的机器学习模型和运维工具无缝集成,既利用现有系统,又能发挥生成式 AI 带来的额外价值。
将任务拆分给多个专业智能体并精心协调它们的协作,可以让开发者构建出更具模块化和可扩展性的系统,从而解决单个整体智能体无法应对的复杂问题。这正是多智能体协作模式的核心价值所在。
多智能体协作:研究各智能体之间的关系与通信体系
理解智能体之间如何交互和通信是设计高效多智能体系统的基础。如图 2 所示,智能体间的互联关系和通信模型形成一个谱系,从最简单的单智能体场景到复杂的定制协作框架。每种模型各有优劣,会影响多智能体系统的整体效率、稳定性和灵活性。
1、单智能体
在最基本的层面上,「单智能体」独立运行,不需要与其他智能体进行直接交互或通信。虽然这种模型易于实现和管理,但其能力本质上受限于单个智能体的职责和资源。它适合那些能被分解为独立子问题的场景,其中每个子问题都可以交给单个自给自足的智能体来解决。
2、网络化
「网络」模型向协作迈出了重要一步,多个智能体以去中心化、点对点的方式直接交互,能够共享信息、资源乃至分担任务。这种模型结构更具弹性,因为某个智能体的故障不一定会影响整个系统。然而,在大规模、非结构化的网络中,如何控制通信开销并确保决策的一致性仍然是个挑战。
3、监督者
在「监督者」模型中,专门的「监督者」智能体负责监督和协调下级智能体的工作。监督者充当通信、任务分配和冲突解决的中心枢纽,能带来清晰的职责分工并简化管理和控制。然而,这种层级结构也会带来单点故障问题(即监督者本身),而且当下级智能体数量过多或任务非常复杂时,监督者可能成为整体系统的瓶颈。
4、将监督者视为工具
这种模型是「监督者」概念的细微扩展,监督者的角色不再直接指挥和控制,而是通过提供资源、指导或分析来辅助其他智能体。监督者可能提供工具、数据或计算服务,帮助其他智能体更高效地完成任务,而不是干预或支配它们的每一步行动。此方法旨在发挥监督者的能力,同时避免僵化的自上而下的控制。
5、层级
「层级」模型基于监督者概念创建了一个多层组织结构:高层级的监督者负责监督低层级监督者,最底层则由具体的执行智能体组成。该架构非常适合于可以拆分为若干子问题的复杂任务,每一层负责管理特定的子问题。通过这种分层管理,它为应对复杂性和实现可扩展性提供了清晰的结构,并允许在既定边界内进行分工决策。

图 2:智能体以各种方式进行通信和交互。
6、自定义
「自定义」模型代表了多智能体系统设计的终极灵活性,允许为特定问题或应用精确定制相互关系和通信结构。它既可以是融合了已有模型特点的混合方案,也可以是针对独特环境约束和机会时产生的全新设计。自定义模型通常用于优化特定性能指标、处理高度动态环境或将领域特定知识纳入系统架构的场景。设计与实现这类模型通常要求对多智能体系统原理有深入理解,并需慎重规划通信协议、协调机制及可能出现的涌现行为。
总之,为多智能体系统选定相互关系与通信模型是一个关键的设计决策。各种模型各有优劣,哪种最合适取决于任务复杂度、智能体数量、所需自治程度、对系统鲁棒性的要求以及可接受的通信开销。未来,多智能体系统领域可能会继续改进这些模型,并探索新的协作智能范式。
实战代码:使用 CrewAI
以下 Python 代码演示了如何使用 CrewAI 框架创建一个 AI 赋能的「创作团队」,来撰写一篇关于 AI 趋势的博客。程序首先配置环境,从 .env 文件中加载 API 密钥。核心部分定义了两个智能体:研究员智能体负责查找和总结 AI 趋势,写手智能体负责编写博客文章。
根据上述要求定义了两个任务:调研趋势任务和撰写博客任务,其中写作任务依赖于调研任务的输出。然后将这些智能体和任务组装成 Crew 实例,并按顺序执行任务。主函数使用 kickoff() 方法启动此 Crew 实例,编排智能体之间的协作以产出目标结果。最后程序会在控制台打印执行的结果,即生成的博客文章。
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from langchain_google_genai import ChatGoogleGenerativeAI
def setup_environment():
"""
Loads environment variables and checks for the required API key.
加载环境变量并检查所需的 API 密钥
"""
load_dotenv()
if not os.getenv("GOOGLE_API_KEY"):
raise ValueError("GOOGLE_API_KEY not found. Please set it in your .env file.")
def main():
"""
Initializes and runs the AI crew for content creation using the latest Gemini model.
使用 Gemini 2.0 Flash 模型初始化并运行用于内容创建的 AI 智能体「创作团队」
"""
setup_environment()
# Define the language model to use.
# Updated to a model from the Gemini 2.0 series for better performance and features.
# For cutting-edge (preview) capabilities, you could use "gemini-2.5-flash".
# 定义要使用的语言模型
# 更新为 Gemini 2.0 系列的模型以获得更好的性能和功能
# 如需最新的特性,可以使用 "gemini-2.5-flash" 模型
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
# Define Agents with specific roles and goals
# 定义具体的角色和目标的智能体
researcher = Agent(
role='Senior Research Analyst',
goal='Find and summarize the latest trends in AI.',
backstory="You are an experienced research analyst with a knack for identifying key trends and synthesizing information.",
verbose=True,
allow_delegation=False,
)
writer = Agent(
role='Technical Content Writer',
goal='Write a clear and engaging blog post based on research findings.',
backstory="You are a skilled writer who can translate complex technical topics into accessible content.",
verbose=True,
allow_delegation=False,
)
# Define Tasks for the agents
# 为智能体定义任务
research_task = Task(
description="Research the top 3 emerging trends in Artificial Intelligence in 2024-2025. Focus on practical applications and potential impact.",
expected_output="A detailed summary of the top 3 AI trends, including key points and sources.",
agent=researcher,
)
writing_task = Task(
description="Write a 500-word blog post based on the research findings. The post should be engaging and easy for a general audience to understand.",
expected_output="A complete 500-word blog post about the latest AI trends.",
agent=writer,
context=[research_task],
)
# Create the Crew
# 创建 Crew 实例
blog_creation_crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential,
llm=llm,
# verbose=2 # Set verbosity for detailed crew execution logs
verbose=True # 译者注:CrewAI 的 Crew 类在最新版本中,verbose 参数只接受布尔值(True 或 False),不再支持整数级别(0, 1, 2)
)
# Execute the Crew
# 启动 Crew 实例
print("## Running the blog creation crew with Gemini 2.0 Flash... ##")
try:
result = blog_creation_crew.kickoff()
print("\n------------------\n")
print("## Crew Final Output ##")
print(result)
except Exception as e:
print(f"\nAn unexpected error occurred: {e}")
if __name__ == "__main__":
main()
要点概述
问题所在: 复杂问题往往超出单个智能体的能力范围,因为单个智能体可能不具备处理复杂任务所需的各种专业技能或特定工具的访问权限。这种限制造成了瓶颈,降低了系统的整体效率和可扩展性。从而导致单个智能体在处理复杂的跨领域任务时变得低效,容易产出不完整或次优的结果。
解决之道: 多智能体协作模式通过创建由多个相互协作的智能体组成的系统,提供了标准化解决方案。复杂问题被分解为更小、更易管理的子问题,每个子问题分配给具有解决该问题所需工具和能力的专业智能体处理。这些智能体按预定义的通信协议和交互模型(如顺序交接、并行工作流或层级委派)协同工作。这样的智能体分工协作方法能够产生协同效应,实现单个智能体无法达成的结果。
经验法则: 当某个任务对于单个智能体过于复杂并且可以拆分为多个各自需要专业技能或工具的子任务时,应使用此模式。它非常适合从多样化专业知识、并行处理或具有多个阶段的工作流程中受益的问题,例如复杂的研究与分析、软件开发或创意内容生成等。
可视化总结:

核心要点
-
多个智能体通过协同合作,完成一个共同的目标。
-
该模式通过明确分工的专业角色、可独立执行的任务以及智能体间协同通信机制,来实现智能体间的协作。
-
协作可以有多种形式,如顺序交接、并行处理、辩论式讨论或层级结构等。
- 该模式非常适合处理需要多种专业技能或包含多个独立阶段的复杂问题。
结语
本章探讨了多智能体协作模式,展示了在系统内协同多个专长不同的智能体所带来的优势。我们分析了多种协作模型,强调了该模式在不同领域应对复杂、多阶段问题的重要性。对智能体协作的理解还引出了对它们如何与外部环境交互的进一步思考。
更多推荐


所有评论(0)