モデル
Agents SDK には、すぐに使える 2 種類の OpenAI モデルサポートが含まれています。
- 推奨:
OpenAIResponsesModel
新しい Responses API を使用して OpenAI API を呼び出します。 OpenAIChatCompletionsModel
Chat Completions API を使用して OpenAI API を呼び出します。
Non-OpenAI モデル
ほとんどの Non-OpenAI モデルは LiteLLM integration 経由で利用できます。まず、litellm の依存グループをインストールします。
その後、litellm/
プレフィックスを付けて supported models のいずれかを使います。
claude_agent = Agent(model="litellm/anthropic/claude-3-5-sonnet-20240620", ...)
gemini_agent = Agent(model="litellm/gemini/gemini-2.5-flash-preview-04-17", ...)
Non-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 integration があります。
platform.openai.com
の API キーがない場合は、set_tracing_disabled()
でトレーシングを無効化するか、別の tracing processor を設定することを推奨します。
Note
これらの例では、ほとんどの LLM プロバイダーがまだ Responses API をサポートしていないため、Chat Completions API/モデルを使用しています。ご利用の LLM プロバイダーが Responses API をサポートしている場合は、Responses の使用を推奨します。
モデルの組み合わせ
1 つのワークフロー内で エージェント ごとに異なるモデルを使用したい場合があります。たとえば、トリアージには小さく高速なモデルを、複雑なタスクにはより大きく高性能なモデルを使用するなどです。Agent
を設定する際には、以下のいずれかでモデルを選択できます。
- モデル名を直接渡す。
- 任意のモデル名 + それをモデルインスタンスにマッピングできる
ModelProvider
を渡す。 Model
実装を直接提供する。
Note
SDK は OpenAIResponsesModel
と OpenAIChatCompletionsModel
の両方の形状をサポートしていますが、各ワークフローでは 1 つのモデル形状のみを使用することを推奨します。2 つの形状はサポートする機能やツールが異なるためです。ワークフローでモデル形状を混在させる場合は、使用するすべての機能が両方で利用可能であることを確認してください。
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
を渡せます。
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 プロバイダー使用時の一般的な問題
Tracing クライアントエラー 401
トレーシング関連のエラーが発生する場合、これはトレースが OpenAI サーバーにアップロードされるためで、OpenAI API キーがないことが原因です。解決策は 3 つあります。
- トレーシングを完全に無効化する:
set_tracing_disabled(True)
- トレーシング用に OpenAI キーを設定する:
set_tracing_export_api_key(...)
この API キーはトレースのアップロードのみに使用され、platform.openai.com のものが必要です。 - OpenAI 以外の trace processor を使用する。詳細は tracing docs を参照してください。
Responses API のサポート
SDK はデフォルトで Responses API を使用しますが、ほとんどの他の LLM プロバイダーはまだ対応していません。このため 404 などのエラーが発生する場合があります。解決策は 2 つあります。
set_default_openai_api("chat_completions")
を呼び出す。
これはOPENAI_API_KEY
とOPENAI_BASE_URL
を環境変数で設定している場合に機能します。OpenAIChatCompletionsModel
を使用する。
例は こちら にあります。
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、マルチモーダル入力、ホストされた file search と Web 検索をサポートしていますが、多くの他プロバイダーはこれらをサポートしていません。以下の制限に注意してください。
- 対応していない
tools
を理解しないプロバイダーに送らない - テキストのみのモデルを呼ぶ前にマルチモーダル入力を除外する
- structured JSON outputs をサポートしないプロバイダーでは、無効な JSON が生成されることがあることを理解する