このブログは?
AIエージェントやワークフロー自動化などのフレームワークのほとんどは OpenAI の API を前提に作られています。この記事は、OpenAI、Anthropic、Google Vertex AI、Amazon Bedrock、Azure OpenAI, OCI Generative AI など、さまざまな大規模言語モデル(LLM)の APIサービスに OpenAI 互換インターフェースによるアクセスを提供する LiteLLM Proxy(ゲートウェイ) を使って、OCI Generative AI の LLM を利用する方法をご紹介しています。
LiteLLM とは?
LiteLLM は、さまざまな大規模言語モデル(LLM)のAPIサービスを統一したインターフェースで利用できるオープンソースの Python ライブラリ(SDK)とプロキシサーバーです。LiteLLM の SDK を使うと 様々な AI サービスプロバイダーの100種類以上の LLM を LiteLLM SDK という統一したインターフェースでアクセスできるアプリケーションを作ることができます。
また、LiteLLM は、Proxy(ゲートウェイ)機能も提供しており、OpenAI API 向けに作られたアプリケーションから100種類以上の LLMへアクセスできるようになります。
主な機能として、API キーの管理、フェイルオーバー(自動切替)、ロードバランシング、コスト追跡、レート制限の管理などがあり、複数の LLM を効率的に管理・運用するためのさまざまな機能を利用することができます。
OCI Generative AI とは?
OCI(Oracle Cloud Infrastructure)Generative AI は、Oracle が提供するマネージド生成 AI サービスです。このサービスでは、Meta の Llama モデルや Cohere のモデル、そして最新では xAI の Grok 4 モデルなど、さまざまな先進的な生成 AI モデルを API 経由で利用できます。Google の Gemini がやって来るという発表もありました!(わくわく)。 REST API や SDK を通じてアクセスでき、テキスト生成、VQA(Visual Question Answering)、要約、分類、埋め込み生成などの AI タスクを実行できます。
なお、LiteLLMの OCI Generative AI 統合機能は、OCI Generative AI の Generic API をサポートしています。xAI Grok シリーズや Meta の Llama を使うことができます。OCI Generative AI には、Cohere のモデルもあるのですが、LiteLLM ではサポートされていません(2025/9時点)。
手順
LiteLLM Proxy を立てる
Python 仮想環境を作成
Python 仮想環境を作成して LiteLLM をインストールします。ここでは uv を使用した手順を説明します。
pip install uv
mkdir litellm-proxy
cd litellm-proxy
uv venv --python 3.12
この記事では、Python 3.12 で動作検証しています。
Python 仮想環境のアクティベート
OS環境によって操作が異なります。
.venv\Scripts\activate
source .venv/bin/activate
LiteLLM をインストール
uv pip install "litellm[proxy]"
記事執筆時点では下記の2つの issue に対する PR がマージされて PyPI からpip install でも問題ありませんでしたが、もし、類似の事象に遭遇したら GitHub から最新版をインストールしてみてください。
[Bug]: OCI GenAI - pydantic validation error for OCICompletionResponse(completionTokensDetails, promptTokensDetails) #14063
[Bug]: OCI Provider: Tool call ID validation fails when assistant message contains both content and tool_calls #14158
uv pip install "litellm[proxy]@git+https://github.com/BerriAI/litellm.git"
LiteLLM の設定
config.yaml
ファイルを作成し、下記のサンプルのように OCI Generative AI の設定を記述します。この例では、us-chicago-1 リージョンで2025/9/19時点で利用可能なモデルを記述しています(ベータを除く)。
litellm_settings:
telemetry: False
return_response_headers: True
redact_messages_in_exceptions: True
general_settings:
master_key: sk-12345678
disable_spend_logs: True
oci_base_params: &oci_auth
oci_region: us-chicago-1
oci_user: ocid1.user.oc1......................xyz
oci_fingerprint: 1d:............:2d
oci_tenancy: ocid1.tenancy.oc1............abc
oci_key_file: C:\\Users\\your_name\\.oci\\oracleidentitycloudservice_xxxxxx.pem
drop_params: true
oci_chicago_params: &oci_chicago
<<: *oci_auth
oci_region: us-chicago-1
oci_compartment_id: ocid1.compartment.oc1..aaaaaaaa......................
model_list:
- model_name: meta.llama-4-maverick-17b-128e-instruct-fp8
litellm_params:
<<: *oci_chicago
model: oci/meta.llama-4-maverick-17b-128e-instruct-fp8
- model_name: meta.llama-4-scout-17b-16e-instruct
litellm_params:
<<: *oci_chicago
model: oci/meta.llama-4-scout-17b-16e-instruct
- model_name: meta.llama-3.3-70b-instruct
litellm_params:
<<: *oci_chicago
model: oci/meta.llama-3.3-70b-instruct
- model_name: meta.llama-3.2-11b-vision-instruct
litellm_params:
<<: *oci_chicago
model: oci/meta.llama-3.2-11b-vision-instruct
- model_name: meta.llama-3.2-90b-vision-instruct
litellm_params:
<<: *oci_chicago
model: oci/meta.llama-3.2-90b-vision-instruct
- model_name: xai.grok-4
litellm_params:
<<: *oci_chicago
model: oci/xai.grok-4
- model_name: xai.grok-3
litellm_params:
<<: *oci_chicago
model: oci/xai.grok-3
- model_name: xai.grok-3-fast
litellm_params:
<<: *oci_chicago
model: oci/xai.grok-3-fast
- model_name: xai.grok-3-mini
litellm_params:
<<: *oci_chicago
model: oci/xai.grok-3-mini
- model_name: xai.grok-3-mini-fast
litellm_params:
<<: *oci_chicago
model: oci/xai.grok-3-mini-fast
重要な設定ポイント
- 認証方法 OCI Generative AI との認証には signing key のみ使用可能です(インスタンスプリンシパル、リソースプリンシパル等は使用できません)
-
oci_user
とoci_tenancy
ユーザー名やテナンシー名ではなく、必ず OCID を指定してください -
oci_key_file
OCI構成ファイルに記述されているAPIキーの秘密鍵ファイルのパス -
drop_params: true
OCI Generative AI がサポートしていないパラメータを LiteLLM 側で自動的に削除します。これを設定しないとException: param xxxxxx is not supported
といったエラーが発生します -
master_key
LiteLLM Proxy へのアクセスに使用する API キーです。任意の文字列を設定できます
drop_params
パラメータについての補足
OCI Generative AI がサポートしていないパラメータが送られてきたとき drop_params: true
を設定することで、LiteLLM Proxy がこれらの非対応パラメータを自動的に削除し、エラーを回避します。なお、OCI Generative AI としてはサポートしているが個別のモデルがサポートしていないパラメータは LiteLLM Proxy を通過してしまいます。
LiteLLM Proxy の起動
設定ファイルを指定して LiteLLM Proxy を起動します。
litellm --config config.yaml
もしくは
litellm --config config.yaml --debug
もしくは
litellm --config config.yaml --detailed_debug
LiteLLM Proxy のワーカースレッドの数は、litellm
の num_workers
オプションで指定できます。1つだけ起動しておきたい場合は起動コマンドの末尾に --num_workers 1
を追加します。
$ litellm --config ./config.yaml
INFO: Started server process [76548]
INFO: Waiting for application startup.
██╗ ██╗████████╗███████╗██╗ ██╗ ███╗ ███╗
██║ ██║╚══██╔══╝██╔════╝██║ ██║ ████╗ ████║
██║ ██║ ██║ █████╗ ██║ ██║ ██╔████╔██║
██║ ██║ ██║ ██╔══╝ ██║ ██║ ██║╚██╔╝██║
███████╗██║ ██║ ███████╗███████╗███████╗██║ ╚═╝ ██║
╚══════╝╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
#------------------------------------------------------------#
# #
# 'This feature doesn't meet my needs because...' #
# https://github.com/BerriAI/litellm/issues/new #
# #
#------------------------------------------------------------#
Thank you for using LiteLLM! - Krrish & Ishaan
Give Feedback / Get Help: https://github.com/BerriAI/litellm/issues/new
LiteLLM: Proxy initialized with Config, Set models:
meta.llama-4-maverick-17b-128e-instruct-fp8
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:4000 (Press CTRL+C to quit)
起動に成功すると、以下のようなメッセージが表示されます。
INFO: Uvicorn running on http://0.0.0.0:4000 (Press CTRL+C to quit)
デフォルトでは、4000 番ポートをリッスンしています。
本番環境での運用について
上記の手順は開発・テスト用です。継続的な利用や本番環境での運用には、Docker を使用することを強く推奨します。Docker を使用することで、環境の再現性が高まり、システムの起動時に自動的にサービスを開始できるなど、運用面でのメリットが多くあります。下記の公式ドキュメントを参考にしてみてください。
OpenAI互換APIのテスト
from openai import OpenAI
client = OpenAI(
api_key="sk-12345678",
base_url="http://localhost:4000"
)
response = client.chat.completions.create(
model="oci/meta.llama-4-maverick-17b-128e-instruct-fp8",
#model="oci/xai.grok-4",
#model="oci/xai.grok-3",
#model="oci/xai.grok-3-fast",
#model="oci/xai.grok-3-mini",
#model="oci/xai.grok-3-mini-fast",
stream=False,
messages=[
{"role": "user", "content": "あなたは何が得意ですか?"}
]
)
if response and hasattr(response, 'choices') and len(response.choices) > 0:
content = response.choices[0].message.content
if content is not None:
print(content)
else:
print("No response")
print(f"\nUsage: {response.usage}")
実行例 |
---|
$ uv run litellm_proxy.py 私は、幅広いトピックについて会話をしたり、要約したり、文章を作成したりすることができます。テキストや画像の生成、一般的な質問への回答など、さまざまなタスクでご利用いただけます。まだ開発中の言語モデルなので、使い方や機能についてはフィードバックをお寄せください。 Usage: CompletionUsage(completion_tokens=66, prompt_tokens=17, total_tokens=83, completion_tokens_details=None, prompt_tokens_details=None) |
あとがき
私と私の周辺では以下のフレームワーク/アプリで LiteLLM が動作することを確認しています。
Cline
smolagents
OpenAI Agents SDK
n8n
OpenAI ノードのクレデンシャルとモデル名、ベースURLを変えることで LiteLLM Proxy 経由 で OCI Generative AI モデルを利用できることを確認しています。