3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI 互換インターフェースを提供する LiteLLM Proxyでどこからでも OCI Generative AI サービスを使う方法

Posted at

このブログは?

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 とは?

image.png

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 を使用した手順を説明します。

uv がインストールされていない場合はインストール
pip install uv
プロジェクトディレクトリを作成
mkdir litellm-proxy
cd litellm-proxy
Python 仮想環境を作成
uv venv --python 3.12

この記事では、Python 3.12 で動作検証しています。

Python 仮想環境のアクティベート

OS環境によって操作が異なります。

仮想環境をアクティベート(Windows の場合)
.venv\Scripts\activate
仮想環境をアクティベート(Mac/Linux の場合)
source .venv/bin/activate

LiteLLM をインストール

LiteLLM SDK と Proxy をインストール
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

LiteLLM SDK と Proxy の最新版をインストール
uv pip install "litellm[proxy]@git+https://github.com/BerriAI/litellm.git"

LiteLLM の設定

config.yaml ファイルを作成し、下記のサンプルのように OCI Generative AI の設定を記述します。この例では、us-chicago-1 リージョンで2025/9/19時点で利用可能なモデルを記述しています(ベータを除く)。

config.yaml
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_useroci_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 Proxy を起動
litellm --config config.yaml

もしくは

デバッグモードで起動する場合
litellm --config config.yaml --debug

もしくは

詳細デバッグモードで起動する場合
litellm --config config.yaml --detailed_debug

LiteLLM Proxy のワーカースレッドの数は、litellmnum_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 を使用することで、環境の再現性が高まり、システムの起動時に自動的にサービスを開始できるなど、運用面でのメリットが多くあります。下記の公式ドキュメントを参考にしてみてください。

https://docs.litellm.ai/docs/simple_proxy

OpenAI互換APIのテスト

OCI Generative AI の meta.llama-4-maverick-17b-128e-instruct-fp8 へアクセス
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 モデルを利用できることを確認しています。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?