多智能体架构由多个自主智能体组成,它们协作以完成复杂任务。随着LLMs的最新进展,这种架构已获得显著的关注。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这些智能体能够独立做出决策并执行行动。智能体由大型语言模型(LLMs)驱动。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">多智能体架构的工作方式是,你不必指定每一个步骤,我们可以给它们一个目标,它们可以自行确定行动顺序。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">这些架构被广泛应用于机器人技术、虚拟助手、协作决策和多模态处理等不同领域,这些领域的任务需要动态交互和高级推理。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;">1. 文章概述ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">本文探讨了多智能体架构与大型语言模型(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
importos
key ='ENTER API KEY'
os.environ['OPENAI_API_KEY'] = key
fromswarmimportSwarm, Agent
importfeedparser
fromyahoo_finimportnews
deftransfer_to_summariser_agent():
returnsummariser_agent
defyahoo_finance_tool():
try:
company_name = context_variables['name']
news_data = news.get_yf_rss(company_name)
news_titles =list(map(lambdan: n.title, news_data))
returnnews_titles
exceptExceptionase:
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(lambdaentry: entry.title, feed.entries))
exceptExceptionase:
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':
returncompany_news_extractor_agent
eliftype=='person_news_extractor_agent'ortype=='person':
returnperson_news_extractor_agent
raiseException(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 agentperson,协调者代理将其传递给person news extractor agent,该代理使用 Google RSS 工具提取新闻。company,则协调者代理将其传递给company news extractor agent,该代理使用 Yahoo finance 工具提取新闻。summariser agent,该代理通过 Open AI LLM 对新闻进行总结。这是一个简单的示例,但演示了如何使用协调者、多个代理和工具,以及它们如何使用 LLM 来制定计划。像 Swarm 这样的方式非常适合涉及众多独立能力和复杂指令的场景,这些场景无法有效地封装在单个提示中。
本文概述了与大型语言模型(LLMs)集成的多智能体架构,强调了其在解决需要协调、可扩展性和智能的复杂问题中的潜力。
讨论了多智能体系统的概念,其中由LLMs驱动的自主智能体通过利用其类人文本理解和生成能力协作工作。
此外,文章还包括了一个使用LLMs的多智能体应用的端到端实现,提供了对这一创新方法的实际见解
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |