モデル
Agents SDK には、次の 2 つの形式で OpenAI モデルのサポートが標準で含まれています。
- 推奨: 新しい Responses API を使って OpenAI API を呼び出す
OpenAIResponsesModel - Chat Completions API を使って OpenAI API を呼び出す
OpenAIChatCompletionsModel
OpenAI モデル
Agent を初期化するときにモデルを指定しない場合は、デフォルトのモデルが使用されます。現在のデフォルトは gpt-4.1 で、エージェント型ワークフローにおける予測可能性と低レイテンシのバランスに優れています。
gpt-5 のような他のモデルに切り替えたい場合は、次のセクションの手順に従ってください。
既定の 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 を渡します。
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" の推論負荷をサポートしていないため、この 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/モデルを使用しています。プロバイダーが Responses をサポートしている場合は、Responses の使用を推奨します。
モデルの組み合わせ
単一のワークフローの中で、エージェントごとに異なるモデルを使いたい場合があります。例えば、トリアージには小型で高速なモデルを、複雑なタスクにはより大きく高性能なモデルを使うといった具合です。Agent を設定するとき、特定のモデルを次のいずれかの方法で選べます。
- モデル名を渡す。
- 任意のモデル名と、その名前を Model インスタンスへマップできる
ModelProviderを渡す。 Model実装を直接渡す。
Note
SDK は OpenAIResponsesModel と OpenAIChatCompletionsModel の両方の形をサポートしますが、両者で対応する機能やツールのセットが異なるため、各ワークフローでは単一のモデル形を使用することを推奨します。ワークフロー上、モデル形を混在させる必要がある場合は、使用するすべての機能が両方で利用可能であることを確認してください。
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実装を提供します。
エージェントで使用するモデルをさらに構成したい場合は、temperature などの任意のモデル構成パラメーターを提供する 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 が時折生成されることに注意してください。