モデル
Agents SDK には、OpenAI モデルへの標準サポートが 2 つの形で付属しています:
- ** 推奨 **:
OpenAIResponsesModel。新しい Responses API を使って OpenAI API を呼び出します。 OpenAIChatCompletionsModel。 Chat Completions API を使って OpenAI API を呼び出します。
非 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は、グローバルにAsyncOpenAIのインスタンスを LLM クライアントとして使いたい場合に便利です。これは、 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
これらの例では、ほとんどの LLM プロバイダーがまだ Responses API をサポートしていないため、Chat Completions API/モデルを使用しています。お使いの LLM プロバイダーが対応している場合は、Responses の使用を推奨します。
モデルの混在利用
1 つのワークフロー内で、 エージェント ごとに異なるモデルを使いたい場合があります。例えば、トリアージには小型で高速なモデルを使い、複雑なタスクには大型で高性能なモデルを使う、といったことが可能です。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="o3-mini", # (1)!
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model=OpenAIChatCompletionsModel( # (2)!
model="gpt-4o",
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-3.5-turbo",
)
async def main():
result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
print(result.final_output)
- OpenAI のモデル名を直接設定します。
Model実装を提供します。
エージェント に使用するモデルをさらに構成したい場合は、ModelSettings を渡せます。これは、 temperature などのオプションのモデル構成 パラメーター を提供します。
from agents import Agent, ModelSettings
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model="gpt-4o",
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-4o",
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 のトレース プロセッサーを使用する。 tracing ドキュメント を参照してください。
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を理解しないプロバイダーには、サポートされていないtoolsを送信しない- テキストのみのモデルを呼び出す前に、マルチモーダル入力を除外する
- structured JSON 出力をサポートしないプロバイダーは、無効な JSON を時折生成する可能性があることに注意する