OpenAI Agents SDK のエージェントが利用可能なモデルの指定方法等についての説明です。新しい Responses API と Chat Completions API に対応しています。
OpenAI Agents SDK : モデル
作成 : クラスキャット・セールスインフォメーション
作成日時 : 03/22/2025
* 本記事は openai.github.io/openai-agents-python の以下のページを独自に翻訳した上でまとめ直し、補足説明を加えています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP
OpenAI Agents SDK : モデル
Agents SDK は 2 つの方法で OpenAI モデルをそのまま利用可能なサポートを備えています :
- 推奨 : OpenAIResponsesModel、これは新しい Responses API を使用して OpenAI API を呼び出します。
- OpenAIChatCompletionsModel, これは Chat Completions API を使用して OpenAI API を呼び出します。
モデルの混在とマッチング
単一のワークフロー内で、各エージェントについて異なるモデルを使用することを望む場合があります。例えば、トリアージ用にはより小さく、高速なモデルを使用する一方で、複雑なタスク用にはより大規模で、高性能なモデルを使用できるでしょう。Agent を構成するとき、以下のいずれかにより特定のモデルを選択できます :
- OpenAI モデルの名前を渡します。
- 任意のモデル名 + ModelProvider, これはその名前を Model インスタンスにマップできます。
- Model 実装を直接提供します。
Note : SDK は OpenAIResponsesModel と OpenAIChatCompletionsModel の両方の形状 (shape) をサポートしていますが、各ワークフローについて単一のモデル形状を使用することを勧めます、2 つの形状は異なる機能とツールのセットをサポートしているからです。ワークフローがモデル形状を混在させてマッチさせる必要がある場合は、使用しているすべての機能が両方で利用可能であることを確認してください。
from agents import Agent, Runner, AsyncOpenAI, OpenAIChatCompletionsModel
import asyncio
spanish_agent = Agent(
name="Spanish agent",
instructions="You only speak Spanish.",
model="o3-mini",
)
english_agent = Agent(
name="English agent",
instructions="You only speak English",
model=OpenAIChatCompletionsModel(
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)
他の LLM プロバイダーの使用
他の LLM プロバイダーを 3 つの方法で使用できます (サンプルは こちら) :
- set_default_openai_client は、AsyncOpenAI のインスタンスを LLM クライアントとしてグローバルに使用したい場合に有用です。これは、LLM プロバイダーが OpenAI 互換な API エンドポイントを持ち、base_url と api_key を設定できる場合のためです。See a configurable example in examples/model_providers/custom_example_global.py.
- ModelProvider は Runner.run レベルにあります。これは「この実行 (run) のすべてのエージェント用にカスタム・モデルプロバイダーを使用する」と言えます。See a configurable example in examples/model_providers/custom_example_provider.py.
- Agent.model は特定の Agent インスタンス上でモデルを指定することを可能にします。これは異なるエージェントに対して異なるプロバイダーを混在させてマッチさせることができます。See a configurable example in examples/model_providers/custom_example_agent.py.
platform.openai.com からの API キーを持たない場合は、set_tracing_disabled() 経由のトレースを無効にするか、異なるトレース・プロセッサ をセットアップすることを勧めます。
Note : これらのサンプルでは、Chat Completions API/モデルを使用しています、殆どの LLM プロバイダーがまだ Responses API をサポートしていないためです。If your LLM provider does support it, we recommend using Responses.
他の LLM プロバイダーを使用する際の一般的な問題
トレース・クライアントエラー 401
トレースに関連してエラーになる場合、これはトレースが OpenAI サーバにアップロードされていて OpenAI API キーを持たないからです。これを解決するために 3 つのオプションがあります :
- トレースを完全に無効にします: set_tracing_disabled(True)
- トレースのために OpenAI キーを設定する: set_tracing_export_api_key(…). この API キーはトレースをアップロードするためだけに使用され、platform.openai.com からのものでなければなりません。
- 非 OpenAI トレース・プロセッサを使用する。See the tracing docs.
Responses API サポート
SDK はデフォルトでは Responses API を使用しますが、殆どの他の LLM プロバイダーはまだそれをサポートしていません。その結果 404 や類似の問題を見るかもしれません。解決するには、2 つのオプションがあります :
- set_default_openai_api(“chat_completions”) を呼び出します。これは、環境変数を通して OPENAI_API_KEY と OPENAI_BASE_URL を設定していれば動作します。
- OpenAIChatCompletionsModel を使用します。ここ にサンプルがあります。
構造化出力サポート
一部のモデル・プロバイダーは構造化出力をサポートしていません。これは次のようなエラーという結果になる場合があります :
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 のためにアプリケーションが壊れる場合が多いからです。
以上