微信扫码
与创始人交个朋友
我要投稿
探索多智能体系统与大型语言模型的协同效应,开启人工智能新纪元。核心内容:1. 多智能体架构与LLMs结合的创新能力2. 自主智能体如何在LLMs辅助下有效协作3. 多智能体应用的完整实现与实用指南
多智能体架构由多个自主智能体组成,它们协作以完成复杂任务。随着LLMs的最新进展,这种架构已获得显著的关注。
这些智能体能够独立做出决策并执行行动。智能体由大型语言模型(LLMs)驱动。
多智能体架构的工作方式是,你不必指定每一个步骤,我们可以给它们一个目标,它们可以自行确定行动顺序。
这些架构被广泛应用于机器人技术、虚拟助手、协作决策和多模态处理等不同领域,这些领域的任务需要动态交互和高级推理。
本文探讨了多智能体架构与大型语言模型(LLMs)的结合,强调其应对需要协调、可扩展性和高级智能的复杂挑战的能力。
与大型语言模型(LLMs)结合时,多智能体架构成为解决需要协调、可扩展性和智能的问题的强大范式。
配备LLMs的多智能体架构涉及一个由多个自主智能体组成的系统,每个智能体都配备有大型语言模型,通过利用其理解和生成类人文本的能力协作解决复杂问题。
让我们了解多智能体架构的关键方面:
带有LLM的多智能体架构由多个智能体组成,每个智能体独立运作,拥有自己的目标、决策能力和数据访问权限,同时在环境中扮演一个或多个角色。它们由LLM支持。
LLM的集成增强了系统处理自然语言输入、生成上下文相关输出和适应各种场景的能力,使多智能体系统更加高效和多功能。
Agent
包含instructions
和tools
,并可以在任何时候选择将对话移交给另一个Agent
。代理与外部系统或环境进行交互,实时收集输入并做出决策。
有几个多智能体 LLM 框架可用:
本节旨在提供一个使用 LLM 的多智能体架构示例。我将使用 OpenAI 框架 **swarm**[1],这是一个探索人体工程学、轻量级多智能体编排的教育框架。
我准备的示例虽然简单,但可以演示如何使用 LLM 构建多智能体架构。
使用 Swarm 的原因在于它专注于使智能体的协调和执行轻量化、高度可控且易于测试。
基本上,swarm 的工作方式是,当调用 run()
函数时,它执行以下步骤:
pip install git+https://github.com/openai/swarm.git
pip install openai==1.58.1
pip install yahoo_fin==0.8.9.1
import os
key = 'ENTER API KEY'
os.environ['OPENAI_API_KEY'] = key
from swarm import Swarm, Agent
import feedparser
from yahoo_fin import news
deftransfer_to_summariser_agent():
return summariser_agent
defyahoo_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:
returnf"从 Yahoo Finance 获取新闻时出错:{e}"
defgoogle_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)
returnlist(map(lambda entry: entry.title, feed.entries))
except Exception as e:
returnf"获取一般新闻时出错:{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="""您是一名经济学家。用三句话总结以下新闻。"""
)
defcoordinate(name, type):
context_variables['name'] = name
iftype == 'company_news_agent_extractor'ortype == 'company':
return company_news_extractor_agent
eliftype == 'person_news_extractor_agent'ortype == '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'])
该应用程序的工作方式如下:
coordinator agent
person
,协调者代理将其传递给 person news extractor agent
,该代理使用 Google RSS 工具提取新闻。company
,则协调者代理将其传递给 company news extractor agent
,该代理使用 Yahoo finance 工具提取新闻。summariser agent
,该代理通过 Open AI LLM 对新闻进行总结。这是一个简单的示例,但演示了如何使用协调者、多个代理和工具,以及它们如何使用 LLM 来制定计划。像 Swarm 这样的方式非常适合涉及众多独立能力和复杂指令的场景,这些场景无法有效地封装在单个提示中。
本文概述了与大型语言模型(LLMs)集成的多智能体架构,强调了其在解决需要协调、可扩展性和智能的复杂问题中的潜力。
讨论了多智能体系统的概念,其中由LLMs驱动的自主智能体通过利用其类人文本理解和生成能力协作工作。
此外,文章还包括了一个使用LLMs的多智能体应用的端到端实现,提供了对这一创新方法的实际见解。
[1]
**swarm**: https://github.com/openai/swarm/tree/main
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-08-13
2024-05-28
2024-06-13
2024-08-21
2024-09-23
2024-04-26
2024-08-04
2024-07-09
2024-07-01
2024-07-18
2025-01-29
2025-01-24
2025-01-24
2025-01-24
2025-01-23
2025-01-22
2025-01-22
2025-01-21