Type something to search...
具有大型语言模型(LLM)的多代理人工智能架构

具有大型语言模型(LLM)的多代理人工智能架构

端到端多智能体实现与LLMs

多智能体架构由多个自主智能体组成,它们协作以完成复杂任务。随着LLMs的最新进展,这种架构已获得显著的关注。

这些智能体能够独立做出决策并执行行动。智能体由大型语言模型(LLMs)驱动。

多智能体架构的工作方式是,你不必指定每一个步骤,我们可以给它们一个目标,它们可以自行确定行动顺序。

这些架构被广泛应用于机器人技术、虚拟助手、协作决策和多模态处理等不同领域,这些领域的任务需要动态交互和高级推理。

1. 文章概述

本文探讨了多智能体架构与大型语言模型(LLMs)的结合,强调其应对需要协调、可扩展性和高级智能的复杂挑战的能力。

  1. 它概述了配备LLMs的自主智能体如何通过利用其理解和生成类人文本的能力有效协作。
  2. 文章还提供了一个使用LLMs的多智能体应用的完整实现,提供了这一创新框架的实用指南。

与大型语言模型(LLMs)结合时,多智能体架构成为解决需要协调、可扩展性和智能的问题的强大范式。

配备LLMs的多智能体架构涉及一个由多个自主智能体组成的系统,每个智能体都配备有大型语言模型,通过利用其理解和生成类人文本的能力协作解决复杂问题。

2. 多智能体架构概述与LLMs

让我们了解多智能体架构的关键方面:

带有LLM的多智能体架构由多个智能体组成,每个智能体独立运作,拥有自己的目标、决策能力和数据访问权限,同时在环境中扮演一个或多个角色。它们由LLM支持。

LLM的集成增强了系统处理自然语言输入、生成上下文相关输出和适应各种场景的能力,使多智能体系统更加高效和多功能。

代理

  • 代理是一个目标导向的软件组件,它通过观察环境状态、制定计划并执行行动来实现目标。它是一个利用LLM控制应用程序流程的系统。
  • 代理可以拥有上下文和记忆。代理通常是处理特定子任务的专家,例如数据预处理、查询LLM或分析结果。
  • 代理可能使用强化学习或其他技术来随着时间的推移提高其性能。一个或多个代理利用LLM执行自然语言理解、推理或生成任务。
  • 一个Agent包含instructionstools,并可以在任何时候选择将对话移交给另一个Agent
  • 例如,我们的应用程序中可能会有销售代理、财务分析师代理和/或量化代理。这些代理在各自的领域中是专家。它们配置了特定的提示和工具,使其能够执行所需的功能。

代理与外部系统或环境进行交互,实时收集输入并做出决策。

  • 代理相互沟通和协调,通常使用LLM促进的自然语言,分享信息、计划和共同执行任务。每个代理可以调用一个或多个最符合要求的不同LLM。

工具

  • 工具执行任务。它们没有任何决策能力。它们接收输入并根据指令执行一系列步骤。可以将它们视为可重用的实用函数。
  • 工具的例子可以是一个调用 LLM 来重写输入的函数,一个使用 Yahoo Finance 查找公司新闻的函数,一个从 API 获取数据的提供者,一个查询数据库的存储库函数等。

关于多智能体架构设计的注意事项

  • 确保架构能够扩展是非常重要的。多智能体架构通常通过水平增加更多智能体来进行扩展。
  • 智能体作为独立的进程分布,以降低故障风险,故障容错/自动恢复通常内置于架构中,以便它们能够从上一个检查点恢复。
  • 确保系统设计是模块化的,以便智能体可以独立开发、测试和部署,从而确保系统设计的灵活性。

有几个多智能体 LLM 框架可用:

1. Swarm by OpenAI

  • 优点:有效地扩展以支持需要多个代理协作的分布式任务。
  • 缺点:仍处于实验阶段,社区支持和文档有限。

2. LangGraph Agents

  • 优点:与各种工具和API提供强大的集成,使其在多种用例中高度灵活。
  • 缺点:随着代理数量的增加,复杂性增加,需要仔细管理以避免资源瓶颈。

3. Auto-GPT

  • 优点: 旨在实现自主任务执行,能够以最小的人工干预实现端到端工作流程。
  • 缺点: 由于其广泛的任务探索方法,计算成本高,并且对于简单任务可能效率低下。

3. 使用 LLM 的多智能体架构的端到端实现

本节旨在提供一个使用 LLM 的多智能体架构示例。我将使用 OpenAI 框架 swarm,这是一个探索人体工程学、轻量级多智能体编排的教育框架。

我准备的示例虽然简单,但可以演示如何使用 LLM 构建多智能体架构。

使用 Swarm 的原因在于它专注于使智能体的协调和执行轻量化、高度可控且易于测试。

基本上,swarm 的工作方式是,当调用 run() 函数时,它执行以下步骤:

  1. 获取当前智能体的完成
  2. 执行工具调用并附加结果
  3. 如有必要,切换智能体
  4. 如有必要,更新上下文变量
  5. 如果没有新的函数调用,返回

开始编码吧

第一步:创建虚拟环境并安装 Python 包

pip install git+https://github.com/openai/swarm.git
pip install openai==1.58.1
pip install yahoo_fin==0.8.9.1


第2步:创建一个 main.py 文件

import os

key = 'ENTER API KEY'
os.environ['OPENAI_API_KEY'] = key

from swarm import Swarm, Agent
import feedparser
from yahoo_fin import news


def transfer_to_summariser_agent():
    return summariser_agent


def yahoo_finance_tool():
    try:
        company_name = context_variables['name']
        news_data = news.get_yf_rss(company_name)
        news_titles = list(map(lambda n: n.title, news_data))
        return news_titles
    except Exception as e:
        return f"从 Yahoo Finance 获取新闻时出错:{e}"


def google_extract_tool():
    keyword = context_variables['name']
    # 使用网络爬虫提取一般新闻
    try:
        keyword_encoded = keyword.replace(" ", "+")
        rss_url = f"https://news.google.com/rss/search?q={keyword_encoded}&hl=en-US&gl=US&ceid=US:en"

        # 获取并解析 RSS 源
        feed = feedparser.parse(rss_url)
        return list(map(lambda entry: entry.title, feed.entries))
    except Exception as e:
        return f"获取一般新闻时出错:{e}"


company_news_extractor_agent = Agent(
    name="company_news_extractor_agent",
    description="""
                    调用 Yahoo Finance 工具,然后调用总结器
                    """,
    functions=[yahoo_finance_tool, transfer_to_summariser_agent])

person_news_extractor_agent = Agent(
    name="person news extractor agent",
    description="""
                    调用 Google 工具,然后调用总结器
                    """,
    functions=[google_extract_tool, transfer_to_summariser_agent])

summariser_agent = Agent(
    name='NewsSummarizerAgent',
    instructions="""您是一名经济学家。用三句话总结以下新闻。"""
)


def coordinate(name, type):
    context_variables['name'] = name
    if type == 'company_news_agent_extractor' or type == 'company':
        return company_news_extractor_agent
    elif type == 'person_news_extractor_agent' or type == 'person':
        return person_news_extractor_agent
    raise Exception(f'无法处理类型={type}')


context_variables = {}
coordinator_agent = Agent(
    name="Coordinator Agent",
    instructions=f"""您负责协调用户请求,并调用工具以转移到正确的意图。
    您不需要了解具体内容,只需知道请求的主题。
    如果用户请求与公司有关,请转移到 company_news_extractor_agent。
    如果用户请求与个人有关,请转移到 person_news_extractor_agent
    """,
    functions=[coordinate],
    context_variables=context_variables,
    debug=True
)

## 主执行
if __name__ == "__main__":
    # 初始化群体和代理
    client = Swarm()

    # 示例
    user_query = [{"role": "user", "content": "关于 AAPL 的最新动态是什么?"}]
    summary = client.run(agent=coordinator_agent, messages=user_query)
    print("\n最终摘要:")
    print(summary.messages[3]['content'])

    user_query = [{"role": "user", "content": "关于特朗普的最新动态是什么?"}]
    summary = client.run(agent=coordinator_agent, messages=user_query)
    print("\n最终摘要:")
    print(summary.messages[3]['content'])

该应用程序的工作方式如下:

  1. 输入被传递给 coordinator agent
  2. 协调者代理使用 OpenAI API 检测查询是关于个人还是公司的
  3. 如果是关于 person,协调者代理将其传递给 person news extractor agent,该代理使用 Google RSS 工具提取新闻。
  4. 如果查询是关于 company,则协调者代理将其传递给 company news extractor agent,该代理使用 Yahoo finance 工具提取新闻。
  5. 最后,新闻被传递给 summariser agent,该代理通过 Open AI LLM 对新闻进行总结。

这是一个简单的示例,但演示了如何使用协调者、多个代理和工具,以及它们如何使用 LLM 来制定计划。像 Swarm 这样的方式非常适合涉及众多独立能力和复杂指令的场景,这些场景无法有效地封装在单个提示中。

摘要

本文概述了与大型语言模型(LLMs)集成的多智能体架构,强调了其在解决需要协调、可扩展性和智能的复杂问题中的潜力。

讨论了多智能体系统的概念,其中由LLMs驱动的自主智能体通过利用其类人文本理解和生成能力协作工作。

此外,文章还包括了一个使用LLMs的多智能体应用的端到端实现,提供了对这一创新方法的实际见解。

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多