快轉到主要內容
用 LiteLLM 集中管理 AI API:模型整合、權限與用量控管

用 LiteLLM 集中管理 AI API:模型整合、權限與用量控管

·
類別 
AI
標籤 
LiteLLM API Proxy
Eason Chiu
作者
Eason Chiu
一個不做筆記就容易忘記的工程師
目錄

LiteLLM 是什麼?
#

當團隊同時使用 OpenAI、Claude、Gemini 或 Azure OpenAI 時,每個服務的 API 格式、金鑰與模型名稱都不同,應用程式也會因此散落許多設定。LiteLLM 可以作為統一的 LLM Gateway。

LiteLLM 本身是開源免費的,不過有一些功能需要付費才能使用,如:單一登入 (SSO) 整合、虛擬金鑰設規則自動輪替、更細緻的組織人員管理等。

前一篇介紹的 CLIProxyAPI 同樣能把多個 AI 服務整理成統一入口,比較適合快速整合 API 或 CLI 帳號。

LiteLLM 則更偏向團隊與平台管理,除了串接模型,也能替不同使用者、專案或 Team 建立 Virtual Key,限制可用模型、請求速率與預算。

如果已經架好 CLIProxyAPI,也可以用 LiteLLM 的來進行管理,繼續沿用原本的模型來源,LiteLLM 可以管理的功能比較多,也比較全面

OAuth 登入雖然 LiteLLM 也可以接,但是會比較麻煩~

所以用 CLIProxyAPI 管理訂閱 + LiteLLM 控制每天預算 + 本地自主跑的 AI Agent,這套組合拳,聰明的你,應該知道可以怎麼出招了吧 XD

如何設定?
#

我這裡用 Docker Compose 建立 LiteLLM 與 PostgreSQL。PostgreSQL 會保存模型、Virtual Key、Team 與用量資料。 postgres_data Volume 則確保 Container 重建後資料不會一起消失。

yaml
services:
  litellm:
    # 使用包含資料庫功能的 LiteLLM Image
    image: docker.litellm.ai/berriai/litellm-database:latest
    restart: unless-stopped
    ports:
      # LiteLLM API 與管理介面 Port
      - "4000:4000"
    extra_hosts:
      # 讓 Container 可以連到 Host 上的 CLIProxyAPI
      - "host.docker.internal:host-gateway"
    environment:
      # LiteLLM 最高權限管理金鑰
      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
      # 加密資料庫敏感資料,啟用後不要任意更換
      LITELLM_SALT_KEY: ${LITELLM_SALT_KEY}
      # 管理介面的登入帳號與密碼
      UI_USERNAME: ${UI_USERNAME}
      UI_PASSWORD: ${UI_PASSWORD}
      # 連線到下方 db 服務
      DATABASE_URL: postgresql://litellm:${POSTGRES_PASSWORD}@db:5432/litellm
      # 將管理介面新增的模型存進資料庫
      STORE_MODEL_IN_DB: "True"
      # 將 Prompt 與回應寫入用量紀錄
      STORE_PROMPTS_IN_SPEND_LOGS: "True"
    depends_on:
      db:
        # 等 PostgreSQL 通過健康檢查後再啟動
        condition: service_healthy

  db:
    # 儲存模型、Key、Team 與用量資料
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: litellm
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: litellm
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U litellm"]
      interval: 5s
      timeout: 5s
      retries: 10
    volumes:
      # Container 重建後仍保留資料
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

這幾個環境變數比較重要:

  • LITELLM_MASTER_KEY:LiteLLM 的最高權限金鑰,用來管理模型與產生 Virtual Key,不要直接交給一般使用者。
  • LITELLM_SALT_KEY:用來加密儲存在資料庫內的敏感資訊。服務開始使用後要固定保存,任意更換可能讓既有加密資料無法正常解密。
  • UI_USERNAMEUI_PASSWORD:登入 LiteLLM 管理介面的帳號密碼。
  • POSTGRES_PASSWORD:PostgreSQL 密碼,同時會被組進 DATABASE_URL,讓 LiteLLM 連到 Compose 裡名為 db 的服務。

另外的話STORE_MODEL_IN_DB: "True" 代表從管理介面新增的模型會保存在 PostgreSQL;STORE_PROMPTS_IN_SPEND_LOGS: "True" 則會把 Prompt 與回應一起寫入用量紀錄,雖然方便除錯,但可能包含程式碼或個人資料,正式環境要先評估隱私需求,不需要時可以設為 "False"

敏感資訊另外放在同一層的 .env

bash
# LiteLLM 最高權限金鑰,建議以 sk- 開頭
LITELLM_MASTER_KEY=sk-請換成自己的管理金鑰
# 固定的加密金鑰,正式使用後不要任意更換
LITELLM_SALT_KEY=請換成固定且足夠長的隨機字串
# 管理介面登入資訊
UI_USERNAME=admin
UI_PASSWORD=請換成管理介面密碼
# PostgreSQL 資料庫密碼
POSTGRES_PASSWORD=請換成資料庫密碼

然後用 docker compose 把服務帶起來。

bash
# 在背景啟動 LiteLLM 與 PostgreSQL
docker compose up -d
# 持續查看 LiteLLM 執行 Log
docker compose logs -f litellm

成功後就會看到 litellm、postgres 了

啟動完成後打開 http://127.0.0.1:4000/ui,就能登入管理介面新增模型。

LiteLLM 權限與用量控管、基本設定
#

新增 API、Virtual Key 管理
#

  1. 進到 models + Endpoint ,把 API 加進來。

  2. 建立 Virtual Key

  3. 輸入能用這組 Virtual Key 使用者、Key的名稱。

4.展開 Optional Setting,可以控制預算: 總預算每月 週 日 時 分別的預算,還有重置頻率

5.完成後會產生一組 sk-開頭的 API Key,要好好保存起來,因為只會出現一次。

  1. 用個 curl 指令做 API 測試,有回應代表成功了。

管理使用者
#

  1. 進到 Internal User 新增 LiteLLM 的內部使用者。

  2. 建立後會有個註冊帳號的連結,該使用者點開設定自己的密碼。

  3. 接著管理員可以去,幫該使用者建立一組專屬的 API Key,然後也可以設定預算。

  4. 管理員可以看到所有的 API Key。

  5. 使用者只能看到自己的 API Key。

用量分析
#

進到 Logs 可以看到每一次 request 的資訊與費用。

點開能展開詳細資訊。

如果有開 STORE_PROMPTS_IN_SPEND_LOGS,甚至可以知道 Agent 實際下了什麼 prompt 給 LLM。

相關文章

CLIProxyAPI 是什麼?快速打造自己的 AI API 統一入口
類別 
AI
標籤 
CLIProxyAPI API Proxy
讓 AI 直接改 Figma 設計稿:用 Codex + cursor-talk-to-figma-mcp 拉前端畫面只消耗 Agent Token
類別 
AI
標籤 
Figma Codex MCP AI 協作開發 前端
AI 都能回答了,還需要寫技術文章嗎?
類別 
AI
標籤 
雜談