🚅

OpenAI Agents SDKではGPT以外も使えますか?Claude・Gemini・ローカルLLMを簡単連携する方法

に公開

はじめに

本記事ではOpenAI Agents SDKでOpenAI以外の言語モデルを使う方法を紹介します。

OpenAI Agents SDKはOpenAIが提供するPythonなどのコードでエージェント開発パッケージです。ガードレールやトレース機能もあり、実運用を意識されています。
また、先日AgentKitも発表され[1]、コードならAgents SDK、GUIならAgentKitと、OpenAIが提供するエージェント開発の選択肢が増えました。

本記事で扱うOpenAI Agents SDKはOpenAIが提供するものですが、OpenAI以外の言語モデルも使えます。AWSやGoogle Cloud、Azureなどを導入している組織でも、このSDKでエージェント開発できます。公式ドキュメントを参考に、実際に試して動作した設定方法を紹介します。

例えば以下のようなことも簡単にできます:

  • 同じエージェントの構成で、モデルを入れ替えて性能比較
  • マルチエージェントで、各エージェントの特徴に合わせて違うモデルを採用

サマリー

  • OpenAI Agents SDKでのモデルの切り替えはAgentmodel引数を書き換えるだけ
  • LiteLLM経由なら多くのプロバイダのモデル(ローカルLLMも)を、統一したインターフェイスで使える
    • litellm/プロバイダ名/モデル名の文字列をmodel引数に渡すだけ
  • 別解 OpenAIライブラリでも他社のモデルをAgentsに指定できる

LiteLLMを使ってOpenAI Agents SDKでエージェントを作る方法

まず、OpenAI Agents SDKで様々なモデル(ClaudeやGemini、ローカルLLMなど)を使うために、LiteLLM経由でモデルを連携する方法を紹介します。
LiteLLMはいろいろなLLMを統一されたインターフェイスで扱えるフレームワークです。
※LiteLLM自体のSDKでモデルを呼ぶ場合にも、本記事は参考になると思います。より直接的な方法を知りたい方はこちらのzenn記事などもご覧ください。

インストール

以下のコマンドで、OpenAI Agents SDKとLiteLLM両方をダウンロードできました(別々にダウンロードしても大丈夫です)。

uv add openai-agents[litellm]

pip installでも同様です。

LiteLLM向けの認証情報の設定

APIキーとベースURLを環境変数に設定すると、実装が簡単になります。
以下.envファイルの、使いたいサービスの箇所を埋めてください。

.env
# 1. Azure OpenAI
AZURE_API_KEY=APIキーを貼り付け
AZURE_API_BASE=エンドポイントURL
AZURE_API_VERSION=2025-04-01-preview

# 2. Amazon Bedrock
## 2.1 AWSにSSO接続
AWS_PROFILE=profile名
AWS_REGION=us-east-1
## 2.2 AWSにAPIキーで接続
AWS_BEARER_TOKEN_BEDROCK=bedrock-api-key-...

# 3. Vertex AI
## ADCを使うので.envに設定不要

# 4. Ollama
api_key="ollama"
base_url="http://localhost:11434"

ただし、Vertex AIでは、アプリケーションのデフォルト認証情報(ADC)を使うので、.envでの設定は不要です。

サービスごとに設定解説します。必要なところだけご覧ください。

1. Azure OpenAIを使うときの設定

AZURE_API_BASEhttps://XXX.openai.azure.com/のようなエンドポイントURLです。APIキーとエンドポイントの取得方法は例えばこちらのzenn記事をご覧ください。

LiteLLMのドキュメントはこちら

※Azure OpenAIのモデルを使うLiteLLMとは別の方法も後で紹介します。

2. Amazon Bedrockを使うときの設定

事前にAWS環境で、利用するモデルにアクセスを付与する必要があります。

モデルへのアクセスを付与したリージョンを.envのAWS_REGIONの箇所に設定します。

AWSの外からモデルを利用する場合、SSOのprofileかAPIキーのどちらか一方を.envに設定します。APIキーが優先されるようなので、SSOする場合はAPIキーをコメントアウトする必要があります。

APIキーを発行する方法は、例えばこちらのzenn記事などをご覧ください。

SSOの場合、事前にターミナルで以下を実行しておきます。profile名の箇所は自分で設定したものに置き換えてください(事前の設定が必要です)。SSOには有効期限があり、切れたら再実行が必要です。

aws sso login --profile profile名

LiteLLMのドキュメントはこちら

3. Vertex AIを使うときの設定

アプリケーションのデフォルト認証情報(ADC)の設定を紹介します。以下は1回だけ行えばよいです。
※他にサービスアカウントを使う方法もあります

Google Cloud CLIをインストールし、ADCを設定します。

gcloud auth application-default login

認証用のPythonライブラリをインストールします。

uv add google-auth

ADCを使えば.envにVERTEX_PROJECTなどを設定しなくても動作します。
この方法ではGoogleがホストするツールを使うこともできるようになります

LiteLLMのドキュメントはこちら

4. Ollamaを使うときの設定

Ollamaは.envに設定しなくても、LiteLLM経由で使えます。

APIキーとURLを明示する場合は、以下の通りです。

api_key="ollama"
base_url="http://localhost:11434"
  • APIキーは文字列なら何でもよいです。
  • ベースURLは、エージェントと同じ環境にOllamaサーバーがある場合です。状況によってはlocalhost部分を変更します。

LiteLLMのドキュメントはこちら

LiteLLMでモデルを指定

適切に環境変数が設定されていれば、litellm/プロバイダ名/モデル名の文字列でモデル指定できます。

Azure OpenAIのGPT-5の例

llm = "litellm/azure/gpt-5-mini"

Amazon BedrockのClaude Sonnet 4の例

llm = "litellm/bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0"

Vertex AIのGemini 2.5 Proの例

llm = "litellm/vertex_ai/gemini-2.5-pro"

Vertex AIではGemini以外に、ClaudeやDeepSeekなどGoogle以外のモデルも利用できます。それらのモデル名の記法はLiteLLMのドキュメントでご確認ください。

OllamaのLlama 3.2の例

llm = "litellm/ollama_chat/llama3.2"

Ollamaの使い方は後で説明します。

(おまけ)LitellmModelでモデルを直接指定する方法

LiteLLM経由でのモデル指定には、LitellmModelクラスを使った書き方もあります。適切な環境変数名が不明なとき、調べるのが面倒なときは、このクラスの引数に直接渡す方が楽かもしれません。

モデル名、APIキー、エンドポイントのベースURLを明示的に指定する書き方

モデル名、APIキー、エンドポイントのベースURLを明示的に指定することもできます。
APIキーまたはエンドポイントが不要なモデルでは、空の文字列""を渡します。

APIキーをコードにベタ書きするのはお勧めできません。.envに自分で決めた変数名で書いておいて、プログラムから読み出すのが良いと思います。

from agents.extensions.models.litellm_model import LitellmModel
import os
from dotenv import load_dotenv

load_dotenv()
api_key=os.getenv("自分で決めた変数名")

model_name = "azure/gpt-4.1"
base_url="https://..."

llm = LitellmModel(
    model=model_name,
    api_key=api_key,
    base_url=base_url
)

あとはここで定義したllmを、Agentの引数modelに渡せばよいです。それ以外のコードはそのままで様々なモデルを試すことができます。

LiteLLM経由のモデルでエージェントの定義・実行

指定したモデル名を渡してエージェントを定義し、実行します。

from agents import Agent, Runner

agent = Agent(
        name="Assistant",
        model=llm
    )

result = Runner.run_sync(agent, "こんにちは、名前を教えて")

以前OpenAI Agents SDKでエージェントを作る例を紹介したとき、エージェントの定義で引数modelにモデル名の文字列を渡しました。
そのモデル名の文字列を書き換えるだけで他プロバイダのモデルに変更できました。
エージェントの実装を変える必要はなく、モデルの差し替えが簡単です。

LiteLLMとOllamaのローカルモデルでエージェントを作る例

ローカル環境でモデルを動かす準備も必要なので、Ollamaについて切り出して解説します。

Ollamaでは様々なローカルLLM・SLMをダウンロードして使えます。対応モデル一覧はこちら。OpenAIのgpt-ossにも対応しています。

Ollamaのインストール方法は公式Githubでご確認ください。

Ollamaサーバーを起動して、モデルをダウンロードします(すでにダウンロードしてあれば、起動のみでOK)。

ollama serve
ollama pull gpt-oss:20b
Ollamaの疎通確認
curl http://localhost:11434

を実行し、Ollama is runningと返ってくれば疎通成功です。

時間が経つなどしてOllamaサーバーが落ちたら、再度ollama serveを実行します。

続いて、エージェントのコードの用意です。

モデル名をLiteLLM経由での書き方で指定します。

llm = "litellm/ollama_chat/gpt-oss:20b"

あとは前節と同様、定義したllmAgentの引数modelに渡します。

2つのプレフィックスの違いは?

ollamaPOST /api/generateで、ollama_chatPOST /api/chatでリクエストが送られます。

  • 前者はテキスト補完用で、プレーンな文字列のプロンプト入力です(画像もオプションで入力可能)。
  • 後者は対話用に設計され、messages形式の入力で対話の履歴を保持できます。messagesの中には、プロンプトや画像、ツールリストなどをフィールドに含めることができます。また、APIオプションでもツールリストを受け取れるようになっています。エージェント用途にはollama_chatが適しています

Azure OpenAIのモデルでエージェントを作るもう一つの方法

別解として、OpenAIライブラリからモデルを呼ぶ方法を紹介します。
Responses API(推奨)かCompletion APIを明示して使うことができます。OpenAIモデルだけ使う場合はこちらがいいかもしれません。
※Gemini、ClaudeなどOpenAIライブラリと互換性のあるものも対象です。

以下、Azure OpenAIを使う例です。
LiteLLMのときと環境変数名が変わるので要注意です。APIキーなどの値は同じです。

.env
AZURE_OPENAI_API_KEY=APIキーを貼り付け
AZURE_OPENAI_ENDPOINT=エンドポイントURL
OPENAI_API_VERSION=2025-04-01-preview
from openai import AsyncAzureOpenAI
from agents import OpenAIResponsesModel
from dotenv import load_dotenv
# .envの読込
load_dotenv()

# OpenAIクライアントの作成
openai_client = AsyncAzureOpenAI()

model_name = "gpt-5-mini"

# Responsesモデルの作成
llm = OpenAIResponsesModel(
    model=model_name,
    openai_client=openai_client
)

Responses APIについてはこちらのzenn記事をご覧ください。
従来のCompletionを使いたい場合は、上のOpenAIResponsesModelOpenAICompletionModelに置き換えます。

.envで定義する代わりに、その他の環境変数から直接文字列を渡すこともできます。

`AsyncAzureOpenAI`の引数で設定する例
API_KEY = os.getenv("AZURE_OPENAI_API_KEY")
API_VERSION = os.getenv("AZURE_OPENAI_API_VERSION")
ENDPOINT = os.getenv("AZURE_OPENAI_ENDPOINT")

openai_client = AsyncAzureOpenAI(
    api_key=API_KEY,
    api_version=API_VERSION,
    azure_endpoint=ENDPOINT,
)

おわりに

OpenAI Agents SDKを使うとき、LiteLLM経由で言語モデルを連携する方法を紹介しました。
これでGPT、Claude、Gemini、Llamaなど様々なプロバイダが提供するモデルを同じフレームワークで扱って、エージェントを作れるようになりました。実験の幅が広がります。

本記事ではエージェントごとにモデルを使い分ける前提で紹介しました。それ以外にもデフォルトのLLMクライアントやRunner.runレベルでの指定方法などもあるようです。

最後に、OpenAI Agents SDKを使ってエージェントを作りたい方は前回の記事もぜひご覧ください。

https://zenn.dev/msmtec/articles/openai-agents-sdk-multiagent

Version情報

  • OpenAI Agents SDK 0.2.3
  • LiteLLM 1.74.15.post
  • Ollama 0.11.4
  • Python 3.13.5
脚注
  1. AgentKitはエージェント機能の開発からUI・デプロイ、評価・最適化までできる包括的なパッケージです。詳しくは公式ドキュメントnpakaさんの記事などをご覧ください。 ↩︎

  2. LiteLLMでResponses APIを指定する方法をまだ調べ切っていないので、もしいい方法があれば教えていただけるとうれしいです。 ↩︎

ミスミ DataTech ブログ

Discussion