モデル
Agents SDK には、OpenAI モデルへのサポートが次の 2 つの形で標準搭載されています。
- 推奨:
OpenAIResponsesModel。新しい Responses API を使って OpenAI API を呼び出します。 OpenAIChatCompletionsModel。 Chat Completions API を使って OpenAI API を呼び出します。
OpenAI モデル
Agent を初期化するときにモデルを指定しない場合、既定のモデルが使用されます。現在の既定は gpt-4.1 で、エージェント ワークフローにおける予測可能性と低レイテンシのバランスに優れています。
gpt-5 など別のモデルに切り替えたい場合は、次のセクションの手順に従ってください。
既定の OpenAI モデル
カスタム モデルを設定していないすべての エージェント で特定のモデルを一貫して使用したい場合は、エージェント を実行する前に環境変数 OPENAI_DEFAULT_MODEL を設定してください。
GPT-5 モデル
この方法で GPT-5 の reasoning モデル(gpt-5、gpt-5-mini、gpt-5-nano)を使用する場合、SDK は既定で適切な ModelSettings を適用します。具体的には、reasoning.effort と verbosity を両方とも "low" に設定します。これらの設定を自分で構築したい場合は、agents.models.get_default_model_settings("gpt-5") を呼び出してください。
より低レイテンシや特定要件のために、別のモデルや設定を選ぶこともできます。既定モデルの reasoning effort を調整するには、独自の ModelSettings を渡してください。
from openai.types.shared import Reasoning
from agents import Agent, ModelSettings
my_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" の reasoning effort をサポートしていないため、本 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 では、Responses API をまだサポートしていない LLM プロバイダーが多いため、Chat Completions API/モデルを使用しています。お使いの LLM プロバイダーがサポートしている場合は、Responses の使用をおすすめします。
モデルの組み合わせ
1 つのワークフローの中で、エージェント ごとに異なるモデルを使いたい場合があります。例えば、トリアージには小型で高速なモデルを、複雑なタスクには大型で高性能なモデルを使うといった具合です。Agent を構成する際、次のいずれかの方法で特定のモデルを選べます。
- モデル名を直接渡す。
- 任意のモデル名 + その名前を Model インスタンスにマッピングできる
ModelProviderを渡す。 Model実装を直接渡す。
Note
SDK は OpenAIResponsesModel と OpenAIChatCompletionsModel の両方の形をサポートしていますが、両者はサポートする機能やツールの集合が異なるため、各ワークフローでは 1 つのモデル形に統一することをおすすめします。ワークフローでモデル形の混在が必要な場合は、使用するすべての機能が両方で利用可能か確認してください。
from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel
import asyncio
spanish_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",
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
- OpenAI モデルの名前を直接設定します。
Model実装を提供します。
エージェント で使用するモデルをさらに構成したい場合は、温度などのオプションのモデル構成パラメーターを提供する ModelSettings を渡せます。
from agents import Agent, ModelSettings
english_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 を使って渡せます。
from agents import Agent, ModelSettings
english_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 プロバイダー利用時の一般的な問題
トレーシング クライアント エラー 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を理解しないプロバイダーには送らない - テキスト専用のモデルを呼び出す前に、マルチモーダル入力を除外する
- structured JSON 出力をサポートしていないプロバイダーは、時折無効な JSON を生成する可能性があることに注意する