ClineからLiteLLM Proxyを通してAmazon Bedrockを利用する

ClineからLiteLLM Proxyを通してAmazon Bedrockを利用する

Clock Icon2025.05.29

大阪オフィスの小倉です。

以下のAmazon Web Services ブログをみて、LiteLLM Proxyの存在を知りました。

開発生産性向上とガバナンスの両立を目指した、Cline with Amazon Bedrock と LiteLLM 活用のコツ | Amazon Web Services ブログ

調べてみると、すでに活用されている方の記事も結構あり、大変便利そうだったので自分でざっと試した内容を紹介しようと思います。

LiteLLMとは

GitHub - BerriAI/litellm: Python SDK, Proxy Server (LLM Gateway) to call 100+ LLM APIs in OpenAI format - [Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropic, Sagemaker, HuggingFace, Replicate, Groq]

LiteLLMは、複数のLLMプロバイダーを統一APIで管理できるツールです。

これをプロキシとして利用することで、

  • 複数のモデル間での負荷分散、フォールバック
  • ユーザ管理、APIキー管理
  • コスト管理、上限設定
  • ログ記録

などを行えます。

今回はClineでBedrockを利用する際に、LiteLLM Proxyを介するようにしてみます。

やってみる

Pythonライブラリとして実行できますが、Dockerイメージも用意されているのでDockerを使用しました。
DockerイメージはGitHub Packagesや、Docker Hubにも同じものがありそうだったので、今回はDocker Hubから取得しています。

ソフトウェア バージョン
Cline 3.17.7
LiteLLM 1.71.1
PostgreSQL 17

LiteLLM Proxyを介してClineを使う

以下のドキュメントに従って、まずはシンプルにLiteLLM Proxyを介してモデル呼び出しをやってみます。

Getting Started - E2E Tutorial

まずはconfig.yamlファイルを作成し、利用したいモデルの情報などを記述します。
バージニアリージョンのBedrockのClaude Sonnet 3.7を設定しました。

複数のモデルを扱う際には、ここにモデルを追記していくイメージです。

model_list:
  - model_name: Claude Sonnet 3.7 # 自分で命名する
    litellm_params:
      model: bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0
      aws_access_key_id: "<ACCESS KEY>"
      aws_secret_access_key: "<SECRET ACCESS KEY>"
      aws_region_name: "us-east-1"

アクセスキーは事前にBedrockを呼び出せるポリシーを付与したIAM Userのものを使用します。

IAM Userに付与したポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModelWithResponseStream",
                "bedrock:InvokeModel"
            ],
            ]
            "Resource": [
                "*" 
            ]
        }
    ]
}

その後、手元でdocker runしてコンテナを起動します。
M2 Macで実行しているので、--platform linux/amd64を追記しています。

docker run \
    --platform linux/amd64 \
    -v $(pwd)/config.yaml:/app/config.yaml \
    -p 4000:4000 \
    litellm/litellm:v1.71.1-stable \
    --config /app/config.yaml --detailed_debug

Clineの設定画面で、

  • App Provider : LiteLLM
  • Base URL(optional) : 未入力(default:http://localhost:4000)
  • API Key : 未入力
  • Model ID : Claude Sonnet 3.7(config.yamlのmodel_nameに設定した値)

を設定しSaveします。

vscode-drop-1748479169406-ib9zoyakxb.png

これでClineに指示を送ると、LiteLLM経由でモデル呼び出しが実行できます。

Virtual Keyを利用してClineを使う

モデル利用者に対してLiteLLMでVirtual Keyを発行することで、
Key毎のコスト管理が行えることを試してみます。

この機能を試すには、別途データベースが必要になります。
ドキュメントを参考に以下のdocker-compose.yamlファイルを作成してみました。

Deploy with Database

services:
  litellm:
    image: litellm/litellm-database:v1.71.1-stable
    platform: linux/amd64
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      DATABASE_URL: postgresql://litellm-user:litellm-password@postgres:5432/litellm-db
      LITELLM_MASTER_KEY: litellm-master-key # 必要に応じて変更
    ports:
      - "4000:4000"
    volumes:
      - ./config.yaml:/app/config.yaml
    command: ["--config", "/app/config.yaml", "--detailed_debug"]

  postgres:
    # https://www.docker.com/ja-jp/blog/how-to-use-the-postgres-docker-official-image/
    image: postgres:17
    restart: always
    environment: # 必要に応じて変更
      POSTGRES_DB: litellm-db
      POSTGRES_USER: litellm-user
      POSTGRES_PASSWORD: litellm-password
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U litellm-user -d litellm-db"]
      interval: 1s
      timeout: 5s
      retries: 10

config.yamlにも設定を追記します。

Virtual Keys

config.yaml

model_list:
  - model_name: Claude Sonnet 3.7
    litellm_params:
      model: bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0
      aws_access_key_id: "<ACCESS KEY>"
      aws_secret_access_key: "<SECRET ACCESS KEY>"
      aws_region_name: "us-east-1"
# 以下を追記
general_settings: 
  master_key: sk-1234 # 必要に応じて変更
  database_url: "postgresql://litellm-user:litellm-password@postgres:5432/litellm-db"

docker compose upで起動します。

起動後、http://localhost:4000/uiにアクセスすると、ログイン画面が表示されるので、
デフォルトユーザ名であるadmin、パスワードにconfig.yamlに指定したmaster_key(今回はsk-1234)を入力してログインします。

(余談ですがhttp://localhost:4000にアクセスするとSwagger UIが表示されます)

vscode-drop-1748479198175-5t2gmam9rrj.png

Virtual Keyを発行します。
Virtual KeyメニューのCreate New Keyボタンから進めます。

vscode-drop-1748479207587-e7p37c0yiyh.png

現在ログイン中のユーザに対してVirtual Keyを発行するので、 Owned Byに You を選択し、
適当なKey Nameを入力、Modelsにはconfig.yamlに記述したモデル名を選択して作成します。

vscode-drop-1748479214278-v7cwlg802ci.png
vscode-drop-1748479217941-9s60be1dcqv.png
これをClineに設定するには、Cline設定画面のAPI Key欄に発行されたVirtual Keyを入力すればOKです。

vscode-drop-1748479262544-xu3avjnk1br.png

Clineからモデル呼び出しを実行後、Usage画面を見てみると、コストが計上されているのがすぐに確認できます。

vscode-drop-1748479269421-alln53ybrdv.png

ユーザを追加したければ、Internal Users画面からユーザを追加できます。
vscode-drop-1748479276425-hta9r42cv3t.png

vscode-drop-1748479281334-geh9sjtsol5.png

以下は新たに追加したユーザに対してVirtual Keyを発行した状態です。
キーの一覧が表示され、紐づくユーザと、そのキーに対するコストが表示されているのがわかります。

vscode-drop-1748479315707-kbjgcirpdz8.png

一点気になったポイントとして、私の環境ではLiteLLMを介してClineを使うと、Cline側の料金表示が$0のままになっていました。
どうやったら正常に表示されるかはパッとわかりませんでした。。。

vscode-drop-1748479322582-sebx9a9fd3e.png

まとめ

LiteLLM Proxy経由のAmazon Bedrockモデル呼び出しを、Clineを使って試してみました。
LLMの利用管理に絞るとLiteLLMには非常に便利な機能が揃っていることがわかりました。
特にコスト表示については直ちに画面に反映されるのでありがたいですね。

今回試せなかったルーティングやフォールバック、ログ管理などの機能も機会があれば試したいと思います。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.