OpenAI Swarm(オープンエーアイスウォーム)
OpenAIが2024年に公開した軽量マルチエージェントフレームワーク。エージェント間の「ハンドオフ」を中心概念とし、最小限のコードで複数エージェントの連携を実装できる教育・プロトタイピング向けツール。
OpenAI Swarmとは
OpenAI Swarmとは、OpenAIが2024年10月にGitHub上で公開した軽量マルチエージェントフレームワークである。「ハンドオフ(handoff)」と「ルーティン(routine)」の2つのシンプルな概念だけでマルチエージェントシステムを構築でき、プロトタイピングや教育目的に特化した設計が特徴。2026年6月時点でGitHub Stars 18,000超。
設計思想
Swarmの設計思想は「最小限の抽象化」である。AutoGenやCrewAIが豊富な機能を提供するのに対し、Swarmはコア概念を2つに絞っている。
Agent(エージェント)
以下の3つの属性のみを持つ。
- name: エージェント名
- instructions: システムプロンプト(文字列または関数)
- functions: エージェントが呼び出せるツール関数のリスト
Handoff(ハンドオフ)
エージェントが自身のタスク完了後に別のエージェントに制御を移す仕組み。ツール関数が別のAgentオブジェクトを返すことでハンドオフが発生する。
| 特徴 | Swarm Handoff | AutoGen GroupChat | CrewAI Delegation |
|---|---|---|---|
| 実装方法 | 関数のreturn値 | GroupChatManager判断 | Manager Agent判断 |
| 遷移の粒度 | 関数単位 | メッセージ単位 | タスク単位 |
| 会話履歴 | 全共有 | 全共有 | タスク単位 |
| 学習曲線 | 極低 | 中 | 低 |
典型的な構成パターン
カスタマーサポート構成
- Triage Agent: ユーザーの問い合わせを分類(返品/技術/請求)
- Refund Agent: 返品処理を実行
- Tech Support Agent: 技術的な問題を解決
- Billing Agent: 請求関連の問い合わせに対応
Triage Agentが問い合わせ内容に応じてハンドオフ先を選択する。各専門エージェントはさらにTriage Agentに戻すハンドオフも可能。
コンテンツ生成構成
- Planner Agent: コンテンツの構成案を作成
- Writer Agent: 本文を執筆
- Editor Agent: 校正・修正
Swarmの制約と位置づけ
OpenAI公式はSwarmを「教育・実験目的」と明言しており、本番運用にはいくつかの制約がある。
- ステートレス: 各
client.run()呼び出しはステートレス。会話履歴は呼び出し側で管理が必要 - 永続化なし: チェックポイント・再開機能なし。長期タスクには不向き
- 非同期未対応: 2026年時点でasync/awaitは未サポート。並列エージェント実行不可
- 可観測性なし: ロギング・トレーシング機能が組み込まれていない。本番では外部ツール(OpenTelemetry等)の統合が必要
- OpenAI APIのみ: 公式にはOpenAI APIのみ対応。Azure OpenAI・他プロバイダは非公式フォークで対応
他フレームワークへの影響
Swarmのハンドオフパターンは他フレームワークに大きな影響を与えた。
- LangGraph:
Command(goto="agent_name")でハンドオフ相当の機能を実装 - AutoGen 0.4: Handoff protocolを正式サポート
- Anthropic Claude: Tool Useでの制御フロー遷移パターンがSwarmと類似
実用的なTips
- context_variables活用: グローバルな状態(ユーザーID・セッション情報等)を全エージェントで共有するための辞書。ハンドオフ時に自動で引き継がれる
- 関数の型ヒント: ツール関数のdocstringとパラメータ型ヒントが自動的にOpenAI Function Calling定義に変換される。型ヒントは必ず記述する
- デバッグモード:
client.run(..., debug=True)でAPIリクエスト/レスポンスのログを出力。開発時は常に有効にする - コスト制御:
max_turnsパラメータでハンドオフの最大回数を制限。デフォルトはfloat("inf")なので必ず設定する
よくある質問(FAQ)
Q1: SwarmはOpenAI以外のLLM(Claude/Gemini等)で使えますか? A: 公式にはOpenAI APIのみ対応。ただし、コミュニティフォーク「swarm-community」がLiteLLM経由で100以上のLLMプロバイダに対応している。OpenAI互換APIを提供するLM Studio・Ollama等も非公式に利用可能。
Q2: Swarmは本番環境で使えますか? A: OpenAI公式は教育・プロトタイピング目的と明言している。本番運用にはステート永続化・エラーリトライ・可観測性・非同期処理が必要であり、LangGraph・AutoGen等への移行を推奨する。
Q3: SwarmとOpenAI Assistants APIの違いは何ですか? A: Assistants APIはOpenAIクラウド上でステートフルなエージェントを管理するAPI(Thread・Run・Tool等の概念)。SwarmはローカルのPythonライブラリで、エージェント間のルーティングに特化している。Assistants APIはシングルエージェント向け、Swarmはマルチエージェント向け。
まとめ
- OpenAI Swarmは軽量マルチエージェントフレームワークで教育・プロトタイピングに特化
- Agent(エージェント)とHandoff(ハンドオフ)の2概念だけでマルチエージェントシステムを構築
- 最小限の学習コストで素早くプロトタイプを作れるが、本番運用には制約が多い
- ハンドオフパターンはLangGraph・AutoGen等の主要フレームワークにも影響を与えた設計思想