构建你的第一个多智能体系统:初学者指南

Building Your First Multi-Agent System: A Beginner's Guide

构建你的第一个多智能体系统:初学者指南
图片来源:编辑 | Midjourney

人工智能的蓬勃发展,尤其是大型语言模型(LLMs)的兴起,得益于众多研究团队和公司的竞赛,他们竞相开发最先进的模型,并展示其在广泛领域的潜在用例。最近,这些发展往往聚焦于模型的一个方面:推理。给定模型的每个新迭代,通常都被宣传为具有更强的思考能力和更好的推理能力。

随着越来越强大的推理模型出现,人工智能代理(AI agents)的话题变得炙手可热。由于其能够采取行动以实现特定目标的能力,并且得到 LLM 强大的推理能力的支撑,代理及其讨论正 gaining momentum。

对于从业者来说,能够构建人工智能代理,尤其是多智能体系统,变得至关重要。我们该如何着手呢?让我们一起来探索。

多智能体系统

人工智能代理是能够观察环境、推理其目标并使用外部工具采取行动的自主系统。这意味着代理是一个能够推理和执行动作以实现其目标的系统。

总的来说,人工智能代理的核心依赖于认知架构,该架构由三个组件组成,包括:

  1. 作为核心决策引擎的语言模型
  2. 供代理与外部系统交互的工具
  3. 管理代理如何行动的编排(Orchestration)

单独来看,代理已经足够强大,可以执行基本任务。然而,单个代理可能不足以处理更复杂的任务。随着复杂性的增加,代理未能实现目标的可能性也更高。这就是多智能体系统出现的原因:允许多个代理协同工作以实现共享目标。多个专业的个体代理在一个协作环境中工作,以完成个体任务并实现共享的、总体的目标。

在结构上,多智能体系统可以以任何保持协作的方式构建。没有一种特定的架构对所有用例都是理想的。相反,我们选择最能适应当前问题的架构。

最常见的两种架构是网络(network)或监督者(supervisor)。

Single agent architecture versus multi-agent network and supervisor architectures.

单智能体架构与多智能体网络和监督者架构的对比。

网络架构中,代理在多智能体系统中运行,相互通信以决定下一个调用哪个代理。相比之下,监督者架构依赖于一个单一的监督者代理来决定下一个应采取行动的代理。除此之外,还有许多其他架构可供选择——您也可以设计一个适合您需求的架构,包括混合架构或临时架构。

例如,让我们构建一个多智能体系统来生成关于我们想要的一个特定主题的报告。我们将使用监督者网络架构,如下图所示。

Our multi-agent system supervisor network architecture.

我们的多智能体系统监督者网络架构。

结构细节很简单;我们将有四个专业的代理:

  1. 网络研究员代理
  2. 趋势分析师代理
  3. 报告撰写代理
  4. 校对代理

经理代理监督所有这些代理,它们仅在接到指示时执行任务。此外,网络研究员代理可以访问网络搜索工具,通过互联网研究目标主题。

让我们开始构建多智能体系统。我们将使用 CrewAI Agent 来简化操作,它非常适合启动多智能体系统。

首先,我们将安装开发系统所需的所有库。

然后,我们将导入此教程中使用的所有必需库。

代理系统依赖于 LLM 作为其核心决策制定。推理能力越强越好。在本教程中,我们将使用 GPT-4o 模型作为我们的 LLM,但如果您愿意,也可以将其切换为其他模型。CrewAI 使用 LiteLLM 来访问 LLM,因此 LiteLLM 可用的任何内容都可以在 CrewAI 框架内使用。

然后,我们将使用 LangChain 初始化搜索工具,并使用以下代码通过 CrewAI 工具框架将其包装起来。在此示例中,我们将使用 Brave 搜索引擎。它需要 API 密钥,所以请不要忘记获取一个。

接下来,我们将定义代理。CrewAI 通过仅要求对其角色、目标和背景的描述,使开发代理变得更加容易。您的描述越具体,代理执行其操作的效果就越好。

例如,下面的代码展示了我们如何定义网络研究员代理。

网络研究员代理的独特之处在于它能够访问我们之前初始化的 SearchTool。

我在上面的网络研究员代理中提供了占位符 {topic}。这是用户可以在不更改代码的情况下输入其输入并影响多智能体系统的位置。

让我们为我们的多智能体系统定义其他代理。您可以随时更改每个代理的角色、目标和背景,因为我只提供尽可能简单的定义。

设置好代理后,我们将设置它们将执行的任务。如果代理是个人,CrewAI 中的任务就是该代理将要执行并尝试达成的动作。

CrewAI 任务代码结构示例显示在下面的代码中。

通常可以传递两个参数,包括任务描述和预期输出。您还可以设置许多其他参数,但这些是基本参数。

让我们为我们拥有的所有代理设置其他任务。

您可以设置由哪个代理执行哪个任务,但经理代理会为您完成这项工作。

最后,我们将设置团队(crew)来编排多智能体系统。我们将经理代理传递给团队,并让监督者决定执行哪个任务来达到目标。

一切就绪后,让我们启动多智能体系统。使用以下代码,我们可以传入要搜索和撰写报告的主题。

输出将是关于多个代理工作的最终报告。内容太长无法在此展示,但最终报告看起来会像下图一样。

Sample multi-agent report system final report output.

示例多智能体报告系统最终报告输出。

恭喜!您已经构建了您的第一个多智能体系统。我建议您尝试其他代理组合、架构和工具,以更好地了解如何开发系统。

结论

人工智能代理是一个能够推理并执行动作以实现给定目标的系统。单独来看,代理已经足够强大,可以执行基本任务。但是,在协作环境中工作多个专业个体代理的多智能体系统可以更有效地实现目标。

本文演示了如何使用 CrewAI 开发一个多智能体系统来生成所需主题的报告。通过这个库,我们看到了如何设置代理和任务,并通过实现使用经理代理的监督者架构来构建系统和代理协调。

构建您的第一个多智能体系统:初学者指南 的 4 条回复

  1. Gerard Ghaibeh 2025年2月8日上午8:31 #

    感谢您提供如此清晰的示例。我们正在从旧的 langchain 实现迁移,这是一篇非常及时且相关的文章。

    • James Carmichael 2025年2月8日上午9:09 #

      感谢 Gerard 的反馈和支持!

  2. rich 2025年2月9日上午8:18 #

    很棒的例子。我认为重要的步骤是为该过程包含可观察性,因为经理代理协调着工作人员。

    • James Carmichael 2025年2月9日上午9:12 #

      谢谢 Rich 的反馈!

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。