OpenAI Agents SDK
OpenAI Agents SDK は、抽象化をほとんど持たない軽量で使いやすいパッケージで、エージェント型 AI アプリを構築できるようにします。これは、以前のエージェント向け実験プロジェクトである Swarm を本番環境対応に発展させたものです。Agents SDK は、非常に少数の基本コンポーネントで構成されています:
- エージェント: 指示とツールを備えた LLM です
- Agents as tools / ハンドオフ: エージェントが特定のタスクを他のエージェントに委任できるようにします
- ガードレール: エージェントの入力と出力の検証を可能にします
Python と組み合わせることで、これらの基本コンポーネントは、ツールとエージェント間の複雑な関係を表現するのに十分強力であり、習得のハードルを高くすることなく実世界のアプリケーションを構築できます。さらに、SDK には組み込みの トレーシング が含まれており、エージェント型フローの可視化とデバッグ、評価、さらにはアプリケーション向けのモデルのファインチューニングも可能です。
Agents SDK の利用理由
SDK の設計を支える原則は 2 つあります:
- 使用する価値がある十分な機能を備えつつ、すばやく学べるだけの少数の基本コンポーネントに抑えること。
- そのままでも優れた動作をしつつ、何が起こるかを正確にカスタマイズできること。
SDK の主な機能は次のとおりです:
- エージェントループ: ツール呼び出しを処理し、結果を LLM に送り返し、タスクが完了するまで継続する組み込みのエージェントループです。
- Python ファースト: 新しい抽象化を学ぶ必要なく、組み込みの言語機能を使ってエージェントをオーケストレーションし、連鎖させます。
- Agents as tools / ハンドオフ: 複数のエージェント間で作業を調整し、委任するための強力な仕組みです。
- Sandbox エージェント: マニフェストで定義されたファイル、Sandbox クライアントの選択、再開可能なサンドボックスセッションを備えた、実際の隔離ワークスペース内で専門エージェントを実行します。
- ガードレール: エージェント実行と並行して入力検証と安全性チェックを実行し、チェックに通らない場合は即座に失敗として終了します。
- 関数ツール: スキーマの自動生成と Pydantic によるバリデーションにより、任意の Python 関数をツールに変換します。
- MCP サーバーのツール呼び出し: 関数ツールと同じように動作する、組み込みの MCP サーバーツール統合です。
- セッション: エージェントループ内で作業コンテキストを維持するための永続的なメモリレイヤーです。
- ヒューマンインザループ: エージェント実行の各所に人間を関与させるための組み込みの仕組みです。
- トレーシング: ワークフローを可視化、デバッグ、監視するための組み込みのトレーシングで、OpenAI の評価、ファインチューニング、蒸留ツール群をサポートします。
- Realtime エージェント:
gpt-realtime-2を使い、自動割り込み検出、コンテキスト管理、ガードレールなどを備えた強力な音声エージェントを構築します。
Agents SDK と Responses API の選択
SDK は OpenAI モデルに対してデフォルトで Responses API を使用しますが、モデル呼び出しの周りに高レベルのランタイムを追加します。
次の場合は Responses API を直接使用します:
- ループ、ツールのディスパッチ、状態処理を自分で管理したい場合
- ワークフローが短期間で、主にモデルの応答を返すことが目的の場合
次の場合は Agents SDK を使用します:
- ランタイムにターン、ツール実行、ガードレール、ハンドオフ、またはセッションを管理させたい場合
- エージェントが成果物を生成する、または複数の協調したステップにわたって動作する必要がある場合
- 実際のワークスペース、または Sandbox エージェント による再開可能な実行が必要な場合
アプリケーション全体でどちらか一方を選ぶ必要はありません。多くのアプリケーションでは、管理されたワークフローには SDK を使用し、低レベルの処理経路では Responses API を直接呼び出します。
インストール
Hello world の例
from agents import Agent, Runner
agent = Agent(name="Assistant", instructions="You are a helpful assistant")
result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
# Code within the code,
# Functions calling themselves,
# Infinite loop's dance.
(これを実行する場合は、 OPENAI_API_KEY 環境変数を設定していることを確認してください)
開始ポイント
- クイックスタート で、最初のテキストベースのエージェントを構築します。
- 次に、エージェントの実行 で、ターン間で状態をどのように引き継ぐかを決定します。
- タスクが実際のファイル、リポジトリ、またはエージェントごとに隔離されたワークスペース状態に依存する場合は、Sandbox エージェントのクイックスタート を参照してください。
- ハンドオフとマネージャースタイルのオーケストレーションのどちらにするかを決める場合は、エージェントオーケストレーション を参照してください。
パスの選択
実行したい作業は分かっているものの、どのページで説明されているか分からない場合は、この表を使用してください。
| 目的 | 参照先 |
|---|---|
| 最初のテキストエージェントを構築し、完全な 1 回の実行を確認する | クイックスタート |
| 関数ツール、OpenAI がホストするツール、または agents as tools を追加する | ツール |
| 実際の隔離ワークスペース内で、コーディング、レビュー、またはドキュメント処理のエージェントを実行する | Sandbox エージェントのクイックスタート and Sandbox クライアント |
| ハンドオフとマネージャースタイルのオーケストレーションのどちらを使うか決める | エージェントオーケストレーション |
| ターン間でメモリを保持する | エージェントの実行 and セッション |
| OpenAI モデル、WebSocket トランスポート、または OpenAI 以外のプロバイダーを使用する | モデル |
| 出力、実行アイテム、割り込み、再開状態を確認する | 実行結果 |
gpt-realtime-2 を使って低レイテンシの音声エージェントを構築する |
Realtime エージェントのクイックスタート and Realtime トランスポート |
| 音声認識 / エージェント / 音声合成のパイプラインを構築する | 音声パイプラインのクイックスタート |