k1s1eeeの日記

SREを担当しています

複数AIプロバイダを一元管理できる LiteLLMを組織で活用できないかを試す


はじめに

こんにちは。株式会社はてなで SREをしている id:k1s1eeeです。 普段は パブリッククラウドにおける組織やIAM管理といった業務を主に担当しています。

この記事では複数のAIプロバイダのAPIキーやコストの管理において LiteLLMを使うとどういう事ができるのかを試した際の内容を紹介します。

AIコードエディタ

昨今はAIの様々な活用が一般化してきており、Claude code , Codex-CLI , Copilot CLI といったAIモデルを利用したコーディング支援を行える、AIコードエディタが活用しているかと思います。

自分も最近は簡単なスクリプトであれば Claude Code + VS Codeの組み合わせを用いて、AIでコード作成からGitでのPR作成までを行うといった機会が増えました。

AIコードエディタのバックエンド

AIコードエディタでは 多くの場合、エディタのバックエンドとして、AIプロバイダにデプロイされているLLMモデルを利用するために、認証用のAPIキーの設定や APIエンドポイントのURL設定が必要になるかと思います。

例えば Anthropic社の Claude Code を使いたい場合は、 Anthropic社の展開している Claude API で発行される認証キー、OpenAI社の Codex-CLIであれば OpenAI API の認証キーが必要、といった具合です。

管理上の課題

社内の開発者にAIコーディングに利用できるAIプロバイダの APIキーを展開しようと思った場合、プランによっては 各プロバイダでユーザごとにAPIキーを用意して配布、また管理する業務が発生します。

管理者視点では、複数名の開発者が居た場合、全員が複数種類の異なるAIプロバイダのモデルを使いたい、といった場合は 人数 ✕ プロバイダーの数、モデル数の管理といった組み合わせが増えていき、管理業務はとても煩雑になります。

また、コストの集計や、誰が、いつ、どれくらい利用したのかの情報が分散してしまい計測がし辛いといった課題も出て来ます。

同時に、APIキーを受け取った開発者でも、受け取った複数のAPIキーを管理、切り替えする手間もたいへん煩雑になります。

これらを解決できないか、APIキーや、利用状況を集中管理出来る LiteLLM を試してみました。

LiteLLM を試す

LiteLLMに期待している主な効果としては

  • エンドユーザが、単一の APIキーで複数プロバイダのAIモデルを簡便に利用できるようにしたい
  • 管理者が、誰がどのモデルをどのくらい利用したのかを確認できるようになりたい

LiteLLMには他にも MCP機能の提供や、APIキーやチーム別に利用金額の上限を設定したり、使えるモデルをチーム単位で制御するなど様々な機能がありますが、今回は上記の基本的な機能を見ていきたいと思います。

事前に用意が必要な事

  • バックエンドとなる AIプロバイダのAPIキーとエンドポイント
  • Docker の動作環境
    • この記事では mac版 Docker Desktopの環境で試しています

Dockerプロセスの起動

LiteLLM は 手元にDockerの環境があれば 下記のように サクッと試す事が出来ます

docker run \
 -p 4000:4000 \
 docker.litellm.ai/berriai/litellm:main-stable

Dockear Image のダウンロードが行われプロセスが起動すると AAでバナーが表示されます

INFO:     Started server process [1]
INFO:     Waiting for application startup.

   ██╗     ██╗████████╗███████╗██╗     ██╗     ███╗   ███╗
   ██║     ██║╚══██╔══╝██╔════╝██║     ██║     ████╗ ████║
   ██║     ██║   ██║   █████╗  ██║     ██║     ██╔████╔██║
   ██║     ██║   ██║   ██╔══╝  ██║     ██║     ██║╚██╔╝██║
   ███████╗██║   ██║   ███████╗███████╗███████╗██║ ╚═╝ ██║
   ╚══════╝╚═╝   ╚═╝   ╚══════╝╚══════╝╚══════╝╚═╝     ╚═╝

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:4000 (Press CTRL+C to quit)

#------------------------------------------------------------#
#                                                            #
#         'The worst thing about this product is...'          #
#        https://github.com/BerriAI/litellm/issues/new        #
#                                                            #
#------------------------------------------------------------#

 Thank you for using LiteLLM! - Krrish & Ishaan

上記の例だと 4000番ポートでサービスが起動しているので http://localhost:4000 にアクセスすると、Swagger Docs画面を確認できます

LiteLLM 管理画面での設定を行う

LiteLLMの管理画面でいくつかの設定を行います。今回は動作に必要な最低限の項目だけセットアップしてみます - プロバイダのモデルを追加する - クライアントで利用する仮想キーを発行する

この事例では設定データやログデータの永続化に関する設定は省いているので、Dockerプロセスを終了すると全ての設定やログは消失します。 データ永続化を行いたい場合は別途DBコンテナを用意するなど調整が必要ですので、参考にされる場合はご注意ください

管理画面にアクセスする

  • 今回の例では http://localhost:4000/ui/ にアクセスすると管理者UIにアクセス出来ます。
  • 例ではローカルでの動作のみという事で管理用のマスターキーを設定していないため、認証無しでアクセス出来ますが、パブリック環境で動作させたい場合は必ずドキュメントを確認してマスターキーを設定しましょう。

モデルを追加する

  • 管理画面UI 左メニューの models + Endpoint => Add modelsからバックエンドを追加する事が出来ます
  • 別途用意した AIプロバイダのモデルへアクセスするための情報を登録します

    モデル追加画面の例

  • 赤い* 印のある項目を中継先のAIプロバイダの利用情報から確認して入力する必要があります。

  • 私の環境では Claude APIと、OpenAIのプロバイダを登録してみました。

仮想キーを追加する

  • LiteLLMのサービスをクライアントから利用するための仮想キー(APIキー)を発行します
  • 管理画面UI 左メニューの Virtual KeysからLiteLLMへアクセスするためのAPIキーを作成する事ができます
  • 一度だけAPIキーの情報が表示されるので 手元に保存しましょう

クライアントの設定を行う

  • 主要なクライアントでの設定例は公式ドキュメントに記載されています
  • ここでは Claude codecodex-cli の設定例を紹介します。

Claude Code

  • Claude Code
  • サンプルに沿って設定ファイル、環境変数を設定することで利用できます

  • 設定ファイル: ~/.claude/settings.json

    • LiteLLMのエンドポイントで 設定した Anthropic API の model名と同一 の model名を指定すると、カスタムモデルとして利用可能になります
{
  "model": "claude-haiku"
}
export ANTHROPIC_AUTH_TOKEN="<LiteLLMユーザのAPIキー>"
export ANTHROPIC_BASE_URL="http://localhost:4000/"
  • LiteLLM経由で接続していることを確認
    claude code /status

Codex-CLI

preferred_auth_method = "apikey"
model_provider = "litellm"
model="gpt-5.1"

[model_providers.litellm]
name                 = "litellm"
base_url             = "http://localhost:4000/"
wire_api             = "responses"
env_key              = "LITELLM_API_KEY"
export LITELLM_API_KEY="<LiteLLMユーザのAPIキー>"
  • 起動して動作確認

誰がどれくらい利用したかを見たい

  • 管理画面UI 左メニューの usage から統計情報を確認する事ができます

Usage

検証結果

冒頭で、LiteLLMを使うことで 実現したかったことが出来たかを見てみましょう

エンドユーザが、単一の APIキーで複数プロバイダのAIモデルを簡便に利用できるようにしたい

  • LiteLLMで発行した単一の APIキー、エンドポイントを利用して、異なるAIプロバイダのモデルを Claude code codex-cli からを利用できました
  • 開発ライブラリから利用する際も、同様に同一のAPIキーで利用して切り替えが容易になります

管理者が、誰がどのモデルをどのくらい利用したのかを確認できるようになりたい

  • 管理画面UI 左メニューの usage から統計情報を確認する事ができました。集計期間の範囲指定や簡単な絞り込みも可能です。
  • 今後 モデルやプロバイダが増えても 利用状況などは LiteLLM上を確認すれば把握することができそうです

まとめ

LiteLLMの導入により、組織内でのAIモデル活用における2つの大きな課題を解決できそうです。

管理者目線

  • 複数のプロバイダバックエンドにしていても 開発者向けのAPI発行は1度で済むようになり管理がしやすくなりました。
  • 誰がいつどのモデルをどれだけ使ったかが一元的に把握できるようになり、コスト管理とセキュリティ面での透明性も大幅に向上しました。

開発者目線

  • 複数のAPIキーを管理する手間から解放され、モデルの切り替えも柔軟に行えるようになりました。
  • Claude CodeでもCodex-CLIでも、同じAPIキーで異なるプロバイダのモデルにアクセスできるのは便利だと思います。

組織でAIエディタの活用を進めている、もしくはこれから導入を検討している場合、LiteLLMは非常に有力な選択肢になるのではないでしょうか。

今後のステップとしては、チーム別の予算設定やMCPサーバー機能の活用など、より高度な機能も試してみたいと思います。


はてなアドベントカレンダー、明日12/28は id:walnuts1018 さんの記事の予定です。お楽しみに