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 重建後資料不會一起消失。
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_USERNAME、UI_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。
# LiteLLM 最高權限金鑰,建議以 sk- 開頭
LITELLM_MASTER_KEY=sk-請換成自己的管理金鑰
# 固定的加密金鑰,正式使用後不要任意更換
LITELLM_SALT_KEY=請換成固定且足夠長的隨機字串
# 管理介面登入資訊
UI_USERNAME=admin
UI_PASSWORD=請換成管理介面密碼
# PostgreSQL 資料庫密碼
POSTGRES_PASSWORD=請換成資料庫密碼然後用 docker compose 把服務帶起來。
# 在背景啟動 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 管理 #
-
進到
models + Endpoint,把 API 加進來。
-
建立
Virtual Key。
-
輸入能用這組 Virtual Key 使用者、Key的名稱。
4.展開 Optional Setting,可以控制預算: 總預算、每月 週 日 時 分別的預算,還有重置頻率。
5.完成後會產生一組 sk-開頭的 API Key,要好好保存起來,因為只會出現一次。
- 用個 curl 指令做 API 測試,有回應代表成功了。
管理使用者 #
-
進到
Internal User新增 LiteLLM 的內部使用者。
-
建立後會有個註冊帳號的連結,該使用者點開設定自己的密碼。
-
接著管理員可以去,幫該使用者建立一組專屬的 API Key,然後也可以設定預算。
-
管理員可以看到所有的 API Key。
-
使用者只能看到自己的 API Key。
用量分析 #
進到 Logs 可以看到每一次 request 的資訊與費用。
點開能展開詳細資訊。
如果有開 STORE_PROMPTS_IN_SPEND_LOGS,甚至可以知道 Agent 實際下了什麼 prompt 給 LLM。