openai-agents-sdk について
OpenAI Agents SDKを使ったPython実装向けのスキルです。インストール済みバージョンのAPIとプロバイダー機能の確認を促し、オーケストレーション、ツール、セッション、テストを扱います。
主な機能
- 01インストール済みSDKのソースとバージョンを確認
- 02現在の機能に基づいてモデルを選択
- 03ハンドオフかagent-as-toolの委譲を選択
- 04認可とセッション履歴を計画
- 05オフラインテストユーティリティで実行を検証
活用シーン
- 01インストール済みPython SDKのバージョンに合わせて実装
- 02エージェントワークフローの委譲方式を選択
- 03プロバイダーにアクセスせずオーケストレーションをテスト
- 04承認、復旧、履歴の動作を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ laguagu/ claude-code-nextjs-skills --skill openai-agents-sdkインストール後、Claude Code で/openai-agents-sdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agents.mdguardrails.mdhandoffs.mdpatterns.mdsandbox.mdsessions.mdstreaming.mdstructured-output.mdtools.md詳細
Python 用 OpenAI Agents SDK
このスキルは、TypeScript SDK ではなく、openai-agents/agents 用です。
API を実装する前に、インストール済みパッケージとプロバイダーの統合機能を確認してください。現在のSDK ドキュメントと一致するソースタグを、静的なサンプルより優先してください。
現在のOpenAI モデルカタログとモデル選択ガイドからモデルを選択してください。選択したモデルのツール、推論設定、プロバイダーでの利用可否を確認してください。SDK のフォールバックやデモ用 ID は、恒久的な推奨ではありません。
wheel にはドキュメントが含まれていません。オフラインの場合は、インストール済みソースを確認してください。importlib.metadata.version("openai-agents") でバージョンを確認し、agents/__init__.py の公開エクスポート、パッケージディレクトリの docstring と型を読みます(python -c "import agents; print(agents.__file__)")。ドキュメントのソースは、リポジトリの v<version> タグにある docs/ です。
基本構成
Runner.run_sync は、イベントループの実行中(非同期ハンドラーやノートブック内)に呼び出すと例外を発生させます。その場合は await Runner.run(...) を使用してください。Runner.run_streamed(...) 自体は await しません。stream_events() の非同期イテレーターを最後まで処理してください。
openai-agents 0.22.3 で確認済みです。別のバージョンでは、インストール済みソースで名前を確認してください。
import asyncio
from pydantic import BaseModel
from agents import Agent, ModelSettings, Runner, SQLiteSession, function_tool
from openai.types.shared import Reasoning
class OrderAnswer(BaseModel):
order_id: str
status: str
reply: str
@function_tool
def get_order_status(order_id: str) -> str:
"""Return an order's shipping status.
Args:
order_id: Order ID given by the customer.
"""
return f"{order_id}: shipped" # authorize and read the app's data here
support = Agent(
name="Support",
instructions="Answer order questions. Use get_order_status for order data.",
model="gpt-6.1-sol", # example API ID; use the project's configured model
model_settings=ModelSettings(reasoning=Reasoning(effort="medium")),
tools=[get_order_status],
output_type=OrderAnswer,
)
# A manager keeps control with tools=[order_tool]; handoffs=[support] transfers it.
order_tool = support.as_tool("order_support", "Answer an order question.")
async def main() -> None:
session = SQLiteSession("user-123", "conversations.db") # ID owned by the signed-in user
result = await Runner.run(support, "Where is order A-17?", session=session)
answer: OrderAnswer = result.final_output # validated OrderAnswer instance
print(answer.status, answer.reply)
asyncio.run(main())
この例では Responses(SDK のデフォルト API)を使用します。GPT-6.1 Sol はツール呼び出しに Responses が必要で、推論の強度として none または minimal はサポートしていません。
統合に関する判断
- タスクで変更が必要な場合を除き、プロジェクトのプロバイダー、モデル、ストレージを維持してください。プロバイダーの設定または最新のドキュメントで、モデル ID と機能を確認してください。SDK のモデルや設定のデフォルトは変更される場合があります。製品上重要な選択は明示的に設定してください。
- 適合する場合は、ネイティブのプロバイダー/クライアントサポートを使用してください。LiteLLM/Any-LLM は任意の統合機能であり、それぞれ独自の互換性や設定の動作があります。
- 専門エージェントに処理を引き継ぐ場合はハンドオフを、委任した処理の後にマネージャーが続行する場合は
agent.as_tool()を選択してください。固定パイプラインで、通常の制御フローを実装するためだけにエージェントを追加する必要はありません。 - ツールで副作用を発生させる操作を認可してください。エージェントの指示、出力スキーマ、ガードレールは、認可や冪等性の代わりにはなりません。
- 信頼できないクライアントにマルチターンのエージェントを公開する前に、履歴の管理主体、承認と再開の方法、トレースデータのポリシーを決定してください。
機能に応じて読むドキュメント
- エージェント/プロバイダー:モデルのデフォルト、Azure、アダプター。
- ツール:ローカル/ホスト実行、委任、承認/再開。
- 構造化出力:スキーマと機能の制約。
- ストリーミング:イベントの種類、失敗、ガードレール。
- ハンドオフ:制御の移譲とフィルタリング。
- ガードレール:実行タイミングと適用範囲。
- セッション:履歴の管理主体と永続化。
- オーケストレーション/トレース:実行制限と可観測性。
- サンドボックス:ワークスペースでの実行と再開状態。
利用可能な場合は、OpenAI API/プロバイダーの最新の動作について OpenAI Developer Docs MCP(https://developers.openai.com/mcp)を使用してください。または、プレーンテキストのインデックス https://developers.openai.com/api/docs/llms.txt を使用してください。SDK のシグネチャについては、Python SDK 独自のリファレンスを参照してください。互換性のあるタグの公式サンプルを読み、デモを集めただけのカタログをコピーしないでください。
検証
変更されたツール、複数ターンの履歴、承認/拒否、失敗からの復旧を検証します。
オフラインでオーケストレーションを行うには、インストール済みの agents.testing(0.22.3 で確認済み)を使用します。
ScriptedModel、ModelStep、assistant_message、function_call、および
model.assert_complete() を使い、RunConfig(tracing_disabled=True) を指定します。agent.model = ScriptedModel([...]) を割り当てると、コアの動作をオフラインで実行できます。プロジェクトのチェックを実行し、プロバイダーへのアクセスがないことと、検証済みの SDK の動作は分けて報告します。