コンテンツにスキップ

OpenAI Agents SDKチートシート

OpenAI Agents SDKチートシート

OpenAI Agents SDKは、エージェントアプリを構築するための小さくて意見的なPythonフレームワークです。4つのコアプリミティブを公開しています — エージェント(LLMと指示とツール)、ツール(Pythonの関数またはホストされたツール)、ハンドオフ(別のエージェントへの実行の委譲)、ガードレール(入力と出力の検証) — セッション でのメモリとトレーシングがビルトインされています。プロバイダに柔軟ですが、OpenAIモデルでボックスから動作します。

インストール

ステップコマンド
インストールpip install openai-agents
uvでuv add openai-agents
キーを設定export OPENAI_API_KEY="sk-..."
音声エクストラpip install "openai-agents[voice]"
確認python -c "import agents; print(agents.__version__)"

最小限のエージェント

from agents import Agent, Runner

agent = Agent(
    name="Assistant",
    instructions="You are a concise, helpful assistant.",
)

result = Runner.run_sync(agent, "Summarize the Unix philosophy in one line.")
print(result.final_output)
呼び出し説明
Runner.run_sync(agent, input)同期的に実行
await Runner.run(agent, input)非同期に実行
Runner.run_streamed(agent, input)イベントが発生したときにストリーム
result.final_outputエージェントの最終的な答え
result.new_items構造化された実行アイテム(メッセージ、ツール呼び出し、ハンドオフ)

ツール

from agents import Agent, function_tool

@function_tool
def get_weather(city: str) -> str:
    """Return the weather for a city."""
    return f"Sunny in {city}"

agent = Agent(name="Weather", tools=[get_weather])
コンセプト説明
@function_tool型付きPython関数をツールに変える(スキーマはシグネチャ/ドキュ文字列から自動生成)
ホストされたツールWebサーチとファイルサーチのようなビルトイン
tool_use_behaviorツール出力がターンを終わらせるかどうかを制御
エージェント as ツールagent.as_tool(...)は1つのエージェントを別のエージェントの呼び出し可能なツールとして公開

ハンドオフ

from agents import Agent, handoff

billing = Agent(name="Billing", instructions="Handle billing questions.")
triage = Agent(
    name="Triage",
    instructions="Route the user to the right specialist.",
    handoffs=[billing],          # or handoff(billing, ...)
)

ハンドオフは1つの実行内で完全な会話を受信エージェントに転送します。入力ガードレールは最初のエージェントに適用され、出力ガードレールは最終出力を生成するエージェントに適用されます。

ガードレール

from agents import Agent, input_guardrail, GuardrailFunctionOutput

@input_guardrail
async def no_secrets(ctx, agent, user_input):
    tripped = "password" in user_input.lower()
    return GuardrailFunctionOutput(output_info={}, tripwire_triggered=tripped)

agent = Agent(name="Safe", input_guardrails=[no_secrets])
タイプ実行目的
@input_guardrailエージェントの前ユーザー入力を検証/スクリーン
@output_guardrail最終出力後エージェントの応答を検証
ツールガードレール各ツール呼び出しの周囲個別ツールの入出力をチェック
トリップワイヤトリガー時実行を中止するための例外を発生

セッション(メモリ)

from agents import Agent, Runner, SQLiteSession

session = SQLiteSession("user-123", "conversations.db")
Runner.run_sync(agent, "My name is Nick.", session=session)
Runner.run_sync(agent, "What's my name?", session=session)  # remembers
セッション使用方法
SQLiteSessionローカル/永続的な会話メモリ
インメモリセッションプロセス内の短命コンテキスト
カスタムセッションセッションプロトコルを実装して独自のストアに対応

トレーシング

機能説明
自動トレースすべてのRunner.runはモデル呼び出し、ツール呼び出し、ハンドオフ、ガードレール結果、タイミングを記録
ダッシュボードトレースはOpenAIプラットフォームのプロジェクト下に表示
trace(...)複数の実行を1つのワークフロートレースにグループ化
外部プロセッササードパーティの可観測性ツールにスパンをエクスポート

一般的なワークフロー

# UIにトークンをストリーミング
import asyncio
from agents import Agent, Runner

async def main():
    agent = Agent(name="Writer", instructions="Write vividly.")
    streamed = Runner.run_streamed(agent, "Describe a thunderstorm.")
    async for event in streamed.stream_events():
        print(event)

asyncio.run(main())

リソース