OpenAI发布Swarm,一个用于多Agent编排的实验性开源框架

Swarm:多代理系统的实验性工具

Swarm 是 OpenAI 最近发布的一个实验性工具,旨在帮助开发者研究如何让多个代理(agents)通过例程(routines)交接(handoffs)来协同执行任务。多代理系统是一种构建更复杂 AI 系统的方法,它将任务分解为子任务,每个子任务由一个专门的代理负责,选择最合适的策略来解决。

多代理系统的基本概念

在多代理系统中,任务被分解为子任务,每个子任务由专门的代理处理。例如,可以构建一个购物者代理,其中包含两个子代理:一个负责退款,另一个负责销售,同时还有一个分类代理(triage agent)决定哪个子代理应处理新请求。

Swarm 的设计特点

Swarm 探索了轻量级、可扩展且高度可定制的模式。它特别适用于处理大量独立能力和指令的场景,这些场景难以通过单一提示(prompt)编码实现。

例程与交接

Swarm 的核心概念是例程交接

  • 例程:一组执行步骤及其工具。
  • 交接:一个代理将对话移交给另一个代理的行为,包括加载相应的例程并提供之前对话中积累的上下文。

代理定义示例

通过 Python 代码可以定义销售代理和退款代理。例如:

refund_agent = Agent(
    name="Refund Agent",
    instructions="You are a refund agent. Help the user with refunds.",
    tools=[execute_refund],
)

sales_assistant = Agent(
    name="Sales Assistant",
    instructions="You are a sales assistant. Sell the user a product.",
    tools=[place_order],
)

分类代理的作用

分类代理用于管理交接,决定将任务移交给哪个子代理。例如:

triage_agent = Agent(
    name="Triage Agent",
    instructions="Gather information to direct the customer to the right department.",
    tools=[transfer_to_sales_agent, transfer_to_refund_agent],
)

其他多代理系统框架

除了 Swarm,还有其他多代理系统框架,如微软的 AutoGenCrewAIAgentKit,它们在代理编排和关键方面采取了不同的方法。

多代理系统的优势与挑战

多代理系统旨在通过解决大型语言模型(LLMs)的一些限制(如单轮响应、缺乏长期记忆和推理深度)来构建更复杂的系统。然而,将复杂代理分解为多代理系统并非易事,需要大量实验来确定如何将任务分解为子任务,并编写代码来解析和清理每个任务的输出。

社区讨论与观点

  • 时间消耗:分解任务和编写代码的过程非常耗时。
  • 代理分歧:多个代理可能会随着时间的推移而偏离目标,难以保持一致。
  • 快速演变的 LLMs:随着 LLMs 的快速发展,通过简单的 API 调用和修改提示可能比重新设计复杂的代理方法更为便捷。

结论

Swarm 提供了一个实验性平台,帮助开发者探索多代理系统的潜力,尽管它在实际应用中面临一些挑战,如任务分解的复杂性和代理一致性问题。随着技术的进步,多代理系统可能在未来 AI 开发中扮演更重要的角色。

阅读 55
0 条评论