Home
Login

OpenAI 開發的輕量級多智能體編排教育框架,專注於智能體協調和執行

MITPython 20.0kopenaiswarm Last Updated: 2025-03-11

OpenAI Swarm - 多智能體編排框架詳細介紹

項目概述

OpenAI Swarm 是一個教育性框架,用於探索符合人體工學的輕量級多智能體編排。該項目由 OpenAI 解決方案團隊管理,旨在為開發者提供一個簡單、靈活且可控的多智能體系統構建工具。

重要更新: Swarm 現已被 OpenAI Agents SDK 替代,後者是 Swarm 的生產就緒版本。OpenAI 團隊建議所有生產用例遷移到 Agents SDK。

核心特性

1. 設計理念

  • 輕量級: 專注於簡單性和易用性
  • 高度可控: 提供精確的智能體控制機制
  • 易於測試: 支援簡單的測試和除錯流程
  • 教育導向: 作為學習多智能體編排的教育資源

2. 核心抽象概念

Swarm 透過兩個核心抽象實現智能體協調:

Agent(智能體)

  • 包含指令 (instructions) 和工具 (tools)
  • 可以在任何時點將對話交接給另一個智能體
  • 支援動態指令和上下文變數

Handoffs(交接)

  • 智能體之間的無縫轉換機制
  • 支援複雜的智能體網路和工作流程
  • 保持對話連續性

安裝和基本使用

系統要求

  • Python 3.10+

安裝方式

pip install git+ssh://git@github.com/openai/swarm.git
# 或者
pip install git+https://github.com/openai/swarm.git

基本示例

from swarm import Swarm, Agent

client = Swarm()

def transfer_to_agent_b():
    return agent_b

agent_a = Agent(
    name="Agent A",
    instructions="You are a helpful agent.",
    functions=[transfer_to_agent_b],
)

agent_b = Agent(
    name="Agent B",
    instructions="Only speak in Haikus.",
)

response = client.run(
    agent=agent_a,
    messages=[{"role": "user", "content": "I want to talk to agent B."}],
)

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

輸出示例:

Hope glimmers brightly,
New paths converge gracefully,
What can I assist?

技術架構

客户端運行機制

Swarm 的 client.run() 函數實現以下循環:

  1. 從當前智能體獲取完成響應
  2. 執行工具調用並添加結果
  3. 必要時切換智能體
  4. 更新上下文變數
  5. 如果沒有新的函數調用,返回結果

參數配置

參數 類型 描述 預設值
agent Agent 要調用的(初始)智能體 (必需)
messages List 消息物件列表 (必需)
context_variables dict 上下文變數 {}
max_turns int 最大輪次 float("inf")
model_override str 模型覆蓋 None
execute_tools bool 是否執行工具 True
stream bool 是否啟用流式響應 False
debug bool 是否啟用除錯日誌 False

智能體配置

Agent 類字段

字段 類型 描述 預設值
name str 智能體名稱 "Agent"
model str 使用的模型 "gpt-4o"
instructions str或函數 智能體指令 "You are a helpful agent."
functions List 可調用函數列表 []
tool_choice str 工具選擇策略 None

動態指令示例

def instructions(context_variables):
    user_name = context_variables["user_name"]
    return f"Help the user, {user_name}, do whatever they want."

agent = Agent(instructions=instructions)

response = client.run(
    agent=agent,
    messages=[{"role":"user", "content": "Hi!"}],
    context_variables={"user_name":"John"}
)

函數調用機制

基本函數調用

def greet(context_variables, language):
    user_name = context_variables["user_name"]
    greeting = "Hola" if language.lower() == "spanish" else "Hello"
    print(f"{greeting}, {user_name}!")
    return "Done"

agent = Agent(functions=[greet])

智能體交接

sales_agent = Agent(name="Sales Agent")

def transfer_to_sales():
    return sales_agent

agent = Agent(functions=[transfer_to_sales])

複雜結果返回

def talk_to_sales():
    print("Hello, World!")
    return Result(
        value="Done",
        agent=sales_agent,
        context_variables={"department": "sales"}
    )

示例項目

Swarm 提供了多個示例項目,展示不同的應用場景:

1. basic - 基礎示例

演示設定、函數調用、交接和上下文變數的基本用法

2. triage_agent - 分流智能體

簡單的分流設定,將請求轉發給合適的智能體

3. weather_agent - 天氣智能體

展示函數調用的簡單示例

4. airline - 航空客服

多智能體設定,處理航空公司不同類型的客戶服務請求

5. support_bot - 支援機器人

包括用戶界面智能體和帶有多種工具的幫助中心智能體

6. personal_shopper - 個人購物助手

幫助進行銷售和退款訂單處理的個人購物智能體

流式處理

Swarm 支援流式響應,使用與 Chat Completions API 相同的事件:

stream = client.run(agent, messages, stream=True)
for chunk in stream:
    print(chunk)

新增事件類型:

  • {"delim":"start"}{"delim":"end"} - 標記智能體處理單個消息的開始和結束
  • {"response": Response} - 在流結束時返回完整的 Response 物件

測試和評估

開發測試

使用 run_demo_loop 進行命令行測試:

from swarm.repl import run_demo_loop

run_demo_loop(agent, stream=True)

評估建議

  • 項目鼓勵開發者自帶評估套件
  • 在 airline、weather_agent 和 triage_agent 示例中提供了評估參考
  • 支援自定義性能測試指標

與其他 OpenAI 產品的區別

與 Assistants API 的對比

  • Assistants API: 提供完全託管的線程和內置記憶體管理
  • Swarm: 完全在客戶端運行,無狀態設計,更適合學習和實驗

技術特點

  • 基於 Chat Completions API 構建
  • 調用之間不保存狀態
  • 輕量級客戶端實現
  • 專注於教育和學習目的

適用場景

Swarm 特別適合以下情況:

  • 需要處理大量獨立功能和指令的場景
  • 難以編碼到單個提示中的複雜任務
  • 學習多智能體編排概念
  • 快速原型開發和實驗

項目狀態

注意: 雖然 Swarm 已被 OpenAI Agents SDK 替代,但它仍然是一個優秀的教育資源,幫助開發者理解多智能體系統的基本概念和實現方式。對於生產環境,建議遷移到官方的 Agents SDK。

總結

OpenAI Swarm 為多智能體系統的學習和開發提供了一個簡潔而強大的框架。透過智能體和交接這兩個核心概念,開發者可以構建複雜的 AI 工作流程,同時保持程式碼的可讀性和可維護性。雖然已被新的 SDK 替代,但其設計理念和教育價值依然重要。

Star History Chart