モデル
Agents SDK には、OpenAI モデル向けの標準サポートが 2 種類あります。
- 推奨: 新しいResponses API を使って OpenAI API を呼び出す
OpenAIResponsesModel - Chat Completions API を使って OpenAI API を呼び出す
OpenAIChatCompletionsModel
OpenAI モデル
Agent を初期化するときにモデルを指定しない場合は、デフォルトのモデルが使用されます。現在のデフォルトは互換性と低レイテンシのためにgpt-4.1 です。アクセス権がある場合は、明示的なmodel_settings を維持しつつ、エージェントをより高品質なgpt-5.2 に設定することを推奨します。
gpt-5.2 のような他のモデルに切り替えたい場合は、次のセクションの手順に従ってください。
デフォルトの OpenAI モデル
カスタムモデルを設定していないすべてのエージェントで特定のモデルを一貫して使用したい場合は、エージェントを実行する前にOPENAI_DEFAULT_MODEL 環境変数を設定してください。
GPT-5 モデル
この方法で GPT-5 系の推論モデル(gpt-5、gpt-5-mini、またはgpt-5-nano)を使用する場合、SDK は既定で妥当なModelSettings を適用します。具体的には、reasoning.effort とverbosity の両方を"low" に設定します。これらの設定を自分で構築したい場合は、agents.models.get_default_model_settings("gpt-5") を呼び出してください。
より低レイテンシや特定の要件がある場合は、別のモデルと設定を選択できます。デフォルトモデルの推論努力度を調整するには、独自のModelSettings を渡してください。
fromopenai.types.sharedimportReasoningfromagentsimportAgent,ModelSettingsmy_agent=Agent(name="My Agent",instructions="You're a helpful agent.",model_settings=ModelSettings(reasoning=Reasoning(effort="minimal"),verbosity="low")# If OPENAI_DEFAULT_MODEL=gpt-5 is set, passing only model_settings works.# It's also fine to pass a GPT-5 model name explicitly:# model="gpt-5",)特に低レイテンシを狙う場合、gpt-5-mini またはgpt-5-nano をreasoning.effort="minimal" で使用すると、デフォルト設定よりも高速にレスポンスが返ることがよくあります。ただし、Responses API の組み込みツール(ファイル検索や画像生成など)には"minimal" の推論努力度をサポートしていないものがあるため、本 Agents SDK のデフォルトは"low" になっています。
非 GPT-5 モデル
カスタムのmodel_settings なしで GPT-5 以外のモデル名を渡した場合、SDK はあらゆるモデルと互換性のある汎用的なModelSettings にフォールバックします。
非 OpenAI モデル
LiteLLM 連携を介して、ほとんどの他社(非 OpenAI)モデルを使用できます。まず、litellm の依存関係グループをインストールします。
次に、litellm/ プレフィックスを付けて、サポートされているモデル を使用します。
claude_agent=Agent(model="litellm/anthropic/claude-3-5-sonnet-20240620",...)gemini_agent=Agent(model="litellm/gemini/gemini-2.5-flash-preview-04-17",...)非 OpenAI モデルを使用する他の方法
他の LLM プロバイダとの連携は、さらに 3 つの方法で行えます(code examples はこちら)。
set_default_openai_clientは、LLM クライアントとしてAsyncOpenAIのインスタンスをグローバルに使用したい場合に便利です。これは、LLM プロバイダが OpenAI 互換の API エンドポイントを持ち、base_urlとapi_keyを設定できる場合に該当します。設定可能なサンプルはexamples/model_providers/custom_example_global.py を参照してください。ModelProviderはRunner.runレベルで指定します。これにより、「この実行のすべてのエージェントに対してカスタムのモデルプロバイダを使う」と宣言できます。設定可能なサンプルはexamples/model_providers/custom_example_provider.py を参照してください。Agent.modelは、特定の Agent インスタンスでモデルを指定できます。これにより、エージェントごとに異なるプロバイダを組み合わせて使用できます。設定可能なサンプルはexamples/model_providers/custom_example_agent.py を参照してください。利用可能なモデルの多くを簡単に使う方法として、LiteLLM 連携を利用できます。
platform.openai.com の API キーを持っていない場合は、set_tracing_disabled() でトレーシングを無効化するか、別のトレーシングプロセッサー を設定することを推奨します。
Note
これらの code examples では、ほとんどの LLM プロバイダがまだ Responses API をサポートしていないため、Chat Completions API/モデルを使用しています。LLM プロバイダが Responses をサポートしている場合は、Responses の使用を推奨します。
モデルの組み合わせ
単一のワークフロー内で、エージェントごとに異なるモデルを使用したい場合があります。たとえば、振り分けには小さく高速なモデルを使用し、複雑なタスクには大きく高性能なモデルを使用できます。Agent を構成する際、次のいずれかの方法で特定のモデルを選択できます。
- モデル名を渡す。
- 任意のモデル名と、その名前を Model インスタンスにマッピングできる
ModelProviderを渡す。 Model実装を直接渡す。
Note
SDK はOpenAIResponsesModel とOpenAIChatCompletionsModel の両方の形状をサポートしますが、両者はサポートする機能やツールのセットが異なるため、各ワークフローでは単一のモデル形状を使用することを推奨します。ワークフローでモデル形状の組み合わせが必要な場合は、使用するすべての機能が両方で利用可能であることを確認してください。
fromagentsimportAgent,Runner,AsyncOpenAI,OpenAIChatCompletionsModelimportasynciospanish_agent=Agent(name="Spanish agent",instructions="You only speak Spanish.",model="gpt-5-mini",# (1)!)english_agent=Agent(name="English agent",instructions="You only speak English",model=OpenAIChatCompletionsModel(# (2)!model="gpt-5-nano",openai_client=AsyncOpenAI()),)triage_agent=Agent(name="Triage agent",instructions="Handoff to the appropriate agent based on the language of the request.",handoffs=[spanish_agent,english_agent],model="gpt-5",)asyncdefmain():result=awaitRunner.run(triage_agent,input="Hola, ¿cómo estás?")print(result.final_output)- OpenAI のモデル名を直接設定します。
Model実装を提供します。
エージェントに使用するモデルをさらに詳細に構成したい場合は、temperature などのオプションのモデル構成パラメーターを提供するModelSettings を渡すことができます。
fromagentsimportAgent,ModelSettingsenglish_agent=Agent(name="English agent",instructions="You only speak English",model="gpt-4.1",model_settings=ModelSettings(temperature=0.1),)また、OpenAI の Responses API を使用する場合、他にもいくつかのオプションパラメーター(例:user、service_tier など)があります。トップレベルで指定できない場合は、extra_args を使用してそれらを渡すことができます。
fromagentsimportAgent,ModelSettingsenglish_agent=Agent(name="English agent",instructions="You only speak English",model="gpt-4.1",model_settings=ModelSettings(temperature=0.1,extra_args={"service_tier":"flex","user":"user_12345"},),)他社 LLM プロバイダ使用時の一般的な問題
Tracing クライアントのエラー 401
トレーシングに関連するエラーが発生する場合、トレースは OpenAI のサーバーにアップロードされ、OpenAI の API キーを持っていないことが原因です。解決方法は次の 3 つです。
- トレーシングを完全に無効化する:
set_tracing_disabled(True) - トレーシング用に OpenAI のキーを設定する:
set_tracing_export_api_key(...)。この API キーはトレースのアップロードのみに使用され、platform.openai.com のものが必要です。 - 非 OpenAI のトレースプロセッサーを使用する。トレーシングのドキュメント を参照してください。
Responses API のサポート
SDK は既定で Responses API を使用しますが、他社の多くの LLM プロバイダはまだ対応していません。その結果、404 などの問題が発生することがあります。解決策は次の 2 つです。
set_default_openai_api("chat_completions")を呼び出します。これは環境変数でOPENAI_API_KEYとOPENAI_BASE_URLを設定している場合に機能します。OpenAIChatCompletionsModelを使用します。code examples はこちらにあります。
Structured outputs のサポート
一部のモデルプロバイダはstructured outputs をサポートしていません。これにより、次のようなエラーが発生することがあります。
BadRequestError: Error code: 400 - {'error': {'message': "'response_format.type' : value is not one of the allowed values ['text','json_object']", 'type': 'invalid_request_error'}}これは一部のモデルプロバイダの制約で、JSON 出力はサポートしていても、出力に使用するjson_schema を指定できないというものです。この点については対応中ですが、JSON スキーマ出力をサポートしているプロバイダに依存することを推奨します。そうでない場合、不正な形式の JSON により、アプリがしばしば動作しなくなります。
プロバイダをまたいだモデルの組み合わせ
モデルプロバイダ間の機能差異に注意しないと、エラーが発生する可能性があります。たとえば、OpenAI は structured outputs、マルチモーダル入力、ホスト型のファイル検索および Web 検索をサポートしていますが、多くの他社プロバイダはこれらの機能をサポートしていません。次の制約に注意してください。
- サポートしていないプロバイダに理解されない
toolsを送らない - テキストのみのモデルを呼び出す前にマルチモーダル入力を除外する
- 構造化 JSON 出力をサポートしていないプロバイダは、無効な JSON を出力することがある点に注意する