OpenAI Swarm:一个新的多智能体框架

竞争对手包括AutoGen、CrewAI、OpenDevin和LangGraph。

Photo by Massimiliano Latella on Unsplash

在生成式人工智能领域,我可以长远看好的两种主要思想是RAG框架和多智能体编排,因为这些框架所具有的潜力。最近,RAG 框架已经取得了一些重大进展,引入了 GraphRAG、推测性 RAG 等等。但我始终觉得多智能体领域迄今未被充分开发利用。

但现在OpenAI已经推出了“Swarm”,一个用于多智能体协调的框架,我觉得一些重大的进展即将到来。

来自git仓库的摘录

Swarm是一个为教育目的设计的实验性框架,专注于轻量级的多智能体编排。

什么是多Agent编配?

该框架围绕着两个主要的抽象概念:Agent代理和handoffs传递。

Agent 代理

在生成式人工智能中,代理可以被视为对LLM的扩展,其中提供了一些第三方工具/特殊功能供LLM回答一些任务。例如:天气代理可以是LLM + 天气API的组合,可以帮助获取有关地方天气数据,因此LLM能够调用API(做出决策)并获取正确的信息。在群集的情况下,代理具有一些类似的能力:

  • 指示和功能: 每个代理都有特定的指示和一系列可调用的功能。 这使得代理能够执行任务或将责任移交给其他人,从而实现灵活的工作流程。
  • 无状态性:Swarm 在调用之间无状态地运行,意味着它在过去的交互中不保留记忆,除非通过上下文变量明确编程来实现。

移交

代理可以轻松将控制权转移给另一位代理(交接控制权),促进复杂的互动而不失上下文。这一功能在需要多个专业代理相互交互的情景中特别有用。

除此之外,代理可以在执行过程中更新上下文变量,从而根据用户互动或先前状态进行动态调整。这增强了代理在持续对话中的适应性。

Swarm与其他类似框架有何不同?

在以前的帖子中,我已经探索了几乎所有主要的多代理编排框架,无论是AutoGen还是LangGraph还是CrewAI。 我感到,就像在gitrepo中提到的那样。

  • 群集实际上是轻量级的,没有不必要的功能。
  • 看起来易于使用
  • 非常直观(类似于CrewAI)
  • 最小化的餐饮服务提供了一些重要的功能,特别是递送。

看起来像 CrewAI 的简化版本

如何使用?

  1. 克隆存储库(Python 3.10)
  2. pip install git+ssh://git@github.com/openai/swarm.git

2. 设置你的OpenAI API(目前仅支持OpenAI API)

import os\os.environ['OPENAI_API_KEY'] =''

3. 以下是一个演示交接的基本示例

from swarm import Swarm, Agent

client = Swarm()

english_agent = Agent(
name="English Agent",
instructions="You only speak English.",
)

spanish_agent = Agent(
name="Spanish Agent",
instructions="You only speak Spanish.",
)


def transfer_to_spanish_agent():
"""Transfer spanish speaking users immediately."""
return spanish_agent


english_agent.functions.append(transfer_to_spanish_agent)

messages = [{"role": "user", "content": "Hola. ¿Como estás?"}]
response = client.run(agent=english_agent, messages=messages)

print(response.messages[-1]["content"])

在上面的代码片段中:

我们创建了一个Swarm客户端对象.

定义了两个代理人(英语和西班牙语讲者)

定义了一个转移控制的功能(transfer_to_spanish_agent)

英语代理有“移交”权限,可以将控制权转移到西班牙代理(但不能反向转移)。

客户端通过用户提示和英文代理发起。

因此,一旦英语代理遇到西班牙语,它将转移控制权给西班牙代理。

如果您是第一次接触多智能体编排,请查看这个播放列表:

2024-10-14 04:12:16 AI中文站翻译自原文