AIを操る:OpenAI Agents SDK入門
June 04, 2025
プロジェクト概要
OpenAI Agents SDKは、複数のエージェントが連携するワークフローを構築するためのPythonフレームワークです。 OpenAI ResponsesやChat Completions APIをはじめ、100種類以上の大規模言語モデル(LLM)に対応しており、特定のプロバイダーに依存しません。軽量でありながら、複数のエージェント間の連携を強力にオーケストレーションする能力を備えています。
主要な概念: - エージェント: 特定の指示、ツール、ガードレール、ハンドオフで構成されたLLM。 - ハンドオフ: 異なるエージェント間で制御を移すための、特殊なツール呼び出し。 - ガードレール: 入力と出力の検証を設定できる安全チェック機能。 - トレース: エージェントの実行を追跡、デバッグ、最適化するための組み込み機能。
使用方法
1. Python環境のセットアップ:
python -m venv env
source env/bin/activate
2. Agents SDKのインストール:
pip install openai-agents
voice
グループを含めてインストールします:
pip install 'openai-agents[voice]'
3. ハローワールドの例: 基本的なエージェントを実行する方法です:
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)
OPENAI_API_KEY
環境変数が設定されていることを確認してください。)
4. ハンドオフの例: 言語に基づいたエージェントのハンドオフを示す例です:
from agents import Agent, Runner
import asyncio
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
)
triage_agent = Agent(
name="Triage agent",
instructions="Handoff to the appropriate agent based on the language of the request.",
handoffs=[spanish_agent, english_agent],
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
5. 関数の例: カスタム関数をエージェントのツールとして統合する方法です:
import asyncio
from agents import Agent, Runner, function_tool
@function_tool
def get_weather(city: str) -> str:
return f"The weather in {city} is sunny."
agent = Agent(
name="Hello world",
instructions="You are a helpful agent.",
tools=[get_weather],
)
async def main():
result = await Runner.run(agent, input="What's the weather in Tokyo?")
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
開発(SDKへの貢献を検討している方向け):
1. uv
がインストールされていることを確認します。
2. 依存関係をインストールします: make sync
3. リンター/テストを実行します: make tests
、make mypy
、make lint
主な機能
- マルチエージェントワークフロー: 複数のLLMエージェント間で複雑な連携を構築するためのフレームワーク。
- プロバイダー非依存: OpenAI APIと、100種類以上の他のLLMをサポート。
- エージェント設定: 指示、ツール、ガードレール、ハンドオフでエージェントを構成可能。
- ハンドオフメカニズム: エージェント間でシームレスに制御を移すための、特殊なツール呼び出し。
- ガードレール: 入力と出力の検証を行う、設定可能な安全チェックを実装。
- 組み込みトレース: エージェントの実行を自動的に追跡・デバッグし、カスタムスパンや外部の宛先(例: Logfire, AgentOps, Braintrust)への拡張性も備える。
- 構造化出力: エージェントが構造化された最終出力を生成するための
output_type
を定義可能。 - 柔軟なエージェントループ: 最終出力が生成されるまで実行され、ツール呼び出しやハンドオフを繰り返し処理。制御用の
max_turns
パラメータも用意。 - ツール統合: カスタム関数をエージェントのツールとして使用可能。
ターゲットユーザー
- マルチエージェントAIアプリケーションを開発する方。
- LLMやAIワークフローを扱う研究者、実務家。
- 複数のAIエージェントが関わる複雑なタスクをオーケストレーションする必要がある方。
プロジェクトリンク
- GitHubリポジトリ: https://github.com/openai/openai-agents-python
- ドキュメント: openai.github.io/openai-agents-python/
アプリケーションシナリオ
- 複雑な情報抽出と処理: エージェントが協力して、多様なソースから情報を抽出、処理、要約。
- 自動化された顧客サービス: トリアージエージェントが問い合わせを専門エージェントに振り分けたり、エージェントが顧客対応の異なる段階(初回挨拶、問題診断、解決策提示など)を処理。
- コード生成とデバッグ: プログラミング言語やデバッグタスクごとにエージェントを特化させ、必要に応じてハンドオフ。
- コンテンツ作成ワークフロー: エージェントが協調してクリエイティブコンテンツのドラフト作成、編集、改善を行い、ガードレールでスタイルガイドや安全プロトコルへの準拠を保証。
- データ分析とレポート作成: データ取得、分析、可視化、レポート生成の役割をエージェントに割り当て。
- インタラクティブなチュートリアルと学習環境: エージェントがユーザーをステップごとに案内し、フィードバックを提供したり、ユーザーの入力や進捗に応じて応答を調整。