链载Ai

标题: 深度解析Swarm Agent :OpenAI 开源的多智能体协作框架 [打印本页]

作者: 链载Ai    时间: 6 小时前
标题: 深度解析Swarm Agent :OpenAI 开源的多智能体协作框架

想象一下,你正在构建一个复杂的 AI 系统,它需要多个智能体协同工作才能完成任务。例如,一个智能客服系统,需要多个 AI Agent 分别负责处理用户的不同需求,如订单查询、退货处理、投诉处理等。这些 Agent 如同球队中的不同球员,各司其职,又相互配合。如何高效地协调这些 Agent 的行为,使它们能够协同工作,如同ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">一支训练有素的 AI 梦之队, 共同完成任务呢?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">传统的编排方法通常需要编写大量的代码,并且难以扩展和维护。为了解决这个问题,OpenAI 推出了 Swarm 框架,一个旨在简化多智能体编排的革新性工具,让开发者能够轻松构建多智能体应用,ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">像指挥家一样轻松驾驭多智能体协作

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;">Swarm 框架概述

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Swarm 是一个实验性的教育框架,旨在探索人机交互式、轻量级的多智能体编排。专注于代理协调和执行,并通过代理和交接两种基本抽象来实现。

Swarm 的优势

相较于传统的编排方法,Swarm 框架具有以下优势:

Swarm 框架核心概念

Swarm 框架的核心是代理(Agent)和交接(Handoff),并通过例程(Routines)来定义 Agent 的行为模式。

代理 (Agent)

代理是 Swarm 框架中的基本单元,它封装了一组指令和工具,并可以选择将对话移交给另一个代理。代理可以被看作是一个独立的实体,负责执行特定的任务,如同 AI 梦之队中的一位球员,拥有独特的技能和职责。它们可以通过以下方式完成任务:

交接 (Handoff)

交接是指代理之间转移执行控制权的过程。当一个代理完成其任务后,它可以将控制权移交给另一个代理,以便继续执行任务,如同一位球员完成自己的任务后,将球传给另一位更适合处理当前情况的球员。交接机制使得代理之间可以协同工作,共同完成复杂的任务,例如:

例程 (Routines)

例程是一组预定义的步骤,用于指导代理完成特定任务。例程可以包含条件判断、循环等逻辑结构,使得代理能够根据不同的情况执行不同的操作,如同 AI 梦之队中的战术手册,指导球员在不同情况下采取不同的行动。

Swarm 核心代码解析

Swarm 的核心代码主要集中在swarm/swarm/core.pyswarm/swarm/repl/repl.py两个文件中。

swarm/swarm/core.py:Swarm 框架核心逻辑

swarm/swarm/core.py文件定义了 Swarm 框架的核心类和函数,包括Swarm类、Agent类,以及一些辅助函数。

Swarm

Swarm类是 Swarm 框架的主要入口点,它负责管理智能体、处理函数调用和更新上下文变量。

核心方法解析

Agent

Agent类代表 Swarm 中的智能体,它封装了智能体的名称、描述、指令、可调用函数列表等信息。Agent对象的instructions属性定义了该 Agent 的例程,即该 Agent 在处理任务时应遵循的步骤。

swarm/swarm/repl/repl.py:Swarm 交互式环境

swarm/swarm/repl/repl.py文件定义了 Swarm 框架的 REPL(Read-Eval-Print Loop)界面,允许用户通过命令行与 Swarm 进行交互,体验 Swarm 的工作流程。

核心函数解析

Swarm Agent 核心函数示例:run_full_turn

run_full_turn函数是 Swarm 框架的核心,它实现了代理的协调和执行,定义在swarm/swarm/repl/repl.py中:

defrun_full_turn(agent,messages):

current_agent=agent
num_init_messages=len(messages)
messages=messages.copy()

whileTrue:

#将Python函数转换为工具,并保存反向映射
tool_schemas=[function_to_schema(tool)fortoolincurrent_agent.tools]
tools={tool.__name__:toolfortoolincurrent_agent.tools}

#===1.获取OpenAI完成===
response=client.chat.completions.create(
model=agent.model,
messages=[{"role":"system","content":current_agent.instructions}]
+messages,
tools=tool_schemasorNone,
)
message=response.choices[0].message
messages.append(message)

ifmessage.content:#打印代理响应
print(f"{current_agent.name}:",message.content)

ifnotmessage.tool_calls:#如果已完成工具调用处理,则中断
break

#===2.处理工具调用===

fortool_callinmessage.tool_calls:
result=execute_tool_call(tool_call,tools,current_agent.name)

iftype(result)isAgent:#如果代理转移,更新当前代理
current_agent=result
result=(
f"Transferedto{current_agent.name}.Adoptpersonaimmediately."
)

result_message={
"role":"tool",
"tool_call_id":tool_call.id,
"content":result,
}
messages.append(result_message)

#====3.返回最后使用的代理和新消息=====
returnResponse(agent=current_agent,messages=messages[num_init_messages:])

代码分析

Swarm Agent 协作实例:个人购物助手

为了更直观地展示 Swarm 框架的应用,我们以个人购物助手为例进行分析。参考内容4中提供了一个个人购物助手的案例,该案例中包含了以下代理:

以下代码展示了 Refunds Agent 的定义以及主程序的入口:

#定义RefundsAgent
refunds_agent=Agent(
name="RefundsAgent",
description=f"""你是一个退款代理,负责处理退货后的所有退款相关操作。
你必须索要用户 ID 和商品 ID 才能发起退款。请在一条消息中同时询问 user_id 和 item_id。
如果用户要求你通知他们,你必须询问他们 preferred method of notification 是什么。对于通知,你必须
在一则消息中同时询问他们 user_id 和 method。""",
functions=[refund_item,notify_customer],#包含refund_item函数
)

#...其他代码...

#在主程序中运行demoloop
if__name__=="__main__":
run_demo_loop(triage_agent,debug=False)

这段代码展示了如何定义一个 Refunds Agent,并将其添加到 Swarm 框架中,如同将一位球员招募到 AI 梦之队中。Refunds Agent 包含了refund_item函数,可以处理用户的退款请求,如同球员拥有特定的技能。

案例分析

个人购物助手案例展示了 Swarm 框架如何协调多个代理协同工作,如同 AI 梦之队如何在比赛中相互配合。Triage Agent 负责对用户的请求进行分类,并将其转发给相应的代理,如同队长根据场上情况指挥队员。Sales Agent 和 Refunds Agent 分别负责处理与订单和退款相关的请求,如同球员在各自的位置上发挥作用。通过代理之间的协作,个人购物助手可以为用户提供全面的服务,如同 AI 梦之队通过团队合作赢得比赛。在这个案例中:

总结

Swarm Agent 框架是一个用于多智能体编排的强大工具,它为构建多智能体应用提供了全新的思路和方法。通过代理、例程和交接机制,Swarm 框架实现了代理之间的协同工作,并提供了高度的灵活性和可定制性。相信随着 Swarm 框架的不断发展,它将在更多领域得到应用,并为多智能体系统的发展带来新的突破,让构建和管理 AI 梦之队变得更加轻松






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5