大型語言模型供應商的快速增長為開發者帶來了新的挑戰:每個供應商都有自己的 API 格式、認證方法、定價模型和功能集。與多個供應商整合——甚至是在它們之間切換——傳統上需要重寫大量的整合程式碼。LiteLLM 通過提供一個統一的、OpenAI 相容的介面來解決這個問題,該介面可與超過 100 個 LLM 供應商協同運作。
由 BerriAI 開發,LiteLLM 已成為 AI 基礎設施生態系統中最廣泛採用的工具之一。它扮演雙重角色:作為程式化存取的輕量級 Python SDK,以及作為可部署為團隊和組織中央路由層的代理伺服器(AI 閘道)。
該專案的成長令人矚目,這得益於一個實際情況:大多數生產級 AI 系統需要與多個 LLM 供應商互動——無論是為了冗餘、成本最佳化,還是存取特定模型的能力。LiteLLM 將這種多供應商的複雜性簡化為單一、一致的 API 呼叫。
LiteLLM 的統一 API 模型是如何運作的?
LiteLLM 的核心抽象概念出奇地簡單:它提供一個單一的 completion() 函式,該函式接受一組標準化的參數並回傳一個標準化的回應物件,無論哪個底層供應商處理請求。
graph LR
A[你的應用程式] --> B[LiteLLM SDK / 代理]
B --> C[OpenAI]
B --> D[Anthropic]
B --> E[Google Gemini]
B --> F[Mistral / Together]
B --> G[透過 Ollama/vLLM/TGI<br>的開源模型]
B --> H[透過 OpenRouter / Bedrock<br>的 70+ 個供應商]
C --> I[標準化回應]
D --> I
E --> I
F --> I
G --> I
H --> I
from litellm import completion
# 相同的函式,不同的模型——只需更改字串
response = completion(
model="claude-3-5-sonnet-20241022",
messages=[{"role": "user", "content": "Hello!"}]
)
# 或:model="gpt-4o"
# 或:model="gemini/gemini-1.5-pro"
# 或:model="mistral/mistral-large-latest"
# 或:model="ollama/llama3"
print(response.choices[0].message.content)
在底層,LiteLLM 處理供應商特定的認證、請求格式化、串流(SSE)、錯誤處理和重試、token 計數,以及回應標準化。回應物件始終遵循 OpenAI 格式,使得在不更改應用程式程式碼的情況下切換供應商變得輕而易舉。
LiteLLM 支援哪些供應商和模型?
LiteLLM 的供應商支援是任何整合函式庫中最廣泛的之一,涵蓋雲端 API、託管服務和自托管模型伺服器。
| 供應商類別 | 供應商 | 範例模型 | 整合方式 |
|---|---|---|---|
| 主要雲端 | OpenAI、Anthropic、Google、Cohere | GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Pro、Command R+ | 直接 API 金鑰 |
| 託管 AI | Together AI、Fireworks、Groq、Perplexity | Llama 3 70B、Mixtral 8x22B、DeepSeek R1 | API 金鑰 |
| 聚合器 | OpenRouter、AWS Bedrock、GCP Vertex AI | 透過單一金鑰存取 200+ 模型 | 供應商 SDK |
| 開源伺服器 | Ollama、vLLM、TGI、LMI | 任何開放權重模型 | 本地端點 |
| 企業 | Azure OpenAI、Watsonx、SageMaker | GPT-4o (Azure)、Llama (Watsonx) | 雲端特定認證 |
清單隨著新供應商進入市場而不斷增長。LiteLLM 的社群積極貢獻供應商實作,而 BerriAI 團隊則維護與每個供應商不斷演進的 API 的相容性。
LiteLLM 代理(AI 閘道)提供哪些功能?
除了 SDK 之外,LiteLLM 的代理模式是一個功能完整的 AI 閘道,可以部署為組織中所有 LLM 使用的中央路由和管理層。
| 功能 | 描述 | 效益 |
|---|---|---|
| OpenAI 相容 API | /v1/chat/completions、/v1/embeddings | 可無縫替代 OpenAI SDK |
| 負載平衡 | 跨模型/金鑰/供應商分配請求 | 成本最佳化、冗餘 |
| 速率限制 | 每個使用者、金鑰、模型的速率限制 | 成本控制、防止濫用 |
| 成本追蹤 | 每次請求的成本記錄與預算警示 | 支出可見性、費用分攤 |
| 快取 | 重複查詢的語義快取 | 降低延遲、節省成本 |
| 記錄 | 詳細的請求/回應記錄至資料庫 | 稽核、除錯 |
| 護欄 | LLM 呼叫前後的內容過濾 | 安全、合規 |
| 金鑰管理 | 具有使用限制的虛擬金鑰 | 團隊管理 |
代理可以以 Docker 容器或 Kubernetes 服務的形式部署,使其易於整合到現有基礎設施中。許多組織將其部署為所有 LLM 呼叫的唯一入口點,無需修改應用程式程式碼即可實現集中治理。
# 啟動 LiteLLM 代理
docker run -p 4000:4000 \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
ghcr.io/berriai/litellm:main-latest \
--config ./proxy_config.yaml
# 像使用 OpenAI 一樣使用它
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"messages": [{"role": "user", "content": "Hello!"}]
}'
公司如何在生產環境中使用 LiteLLM?
生產環境的使用模式差異很大,但常見的部署架構揭示了 LiteLLM 如何融入 AI 基礎設施堆疊。
| 使用場景 | 架構 | 使用的關鍵功能 |
|---|---|---|
| 多供應商冗餘 | SDK 容錯移轉 | 從主要供應商回退到次要供應商 |
| 團隊成本管理 | 具有虛擬金鑰的代理 | 每個團隊的預算、使用儀表板 |
| 模型評估 | 用於比較模型的 SDK | 切換模型字串、比較輸出 |
| 生產 LLM 服務 | 具有負載平衡的代理 | 高可用性、快取、速率限制 |
| 離線開發 | 具有本地模型的 SDK | 用於隱私的 Ollama/vLLM 後端 |
典型的企業部署模式是 LiteLLM 代理位於應用程式層和上游 LLM 供應商之間。開發者使用標準的 OpenAI SDK 與代理互動,無論哪個供應商最終處理請求,都能體驗一致的 API。營運團隊透過代理設定管理供應商金鑰、成本限制和速率限制,無需更改應用程式。
常見問題
什麼是 LiteLLM? LiteLLM 是由 BerriAI 開發的開源 Python SDK 和 AI 閘道,為呼叫超過 100 個大型語言模型供應商提供統一的介面。它標準化不同供應商的輸入和輸出、支援成本追蹤和預算管理、提供跨模型和金鑰的負載平衡,並且可以部署為具有 OpenAI 相容 API 的代理伺服器。
LiteLLM 的統一 API 是如何運作的?
LiteLLM 在標準化輸入格式和每個供應商的原生 API 之間進行轉換。你指定模型名稱(例如 claude-3-5-sonnet-20241022),LiteLLM 會處理認證、請求格式化、串流、錯誤處理和回應解析。這意味著你可以通過更改一個字串參數來切換供應商。
LiteLLM 支援成本追蹤和預算管理嗎? 是的,LiteLLM 有內建的成本追蹤功能,記錄每次請求的 token 使用量和相關成本。它支援每個使用者和每個金鑰的支出限制、預算警示,以及超出預算時的自動請求封鎖。成本資料可以匯出到 Datadog、Prometheus 或自訂 webhook 等監控工具。
LiteLLM 可以部署為代理伺服器嗎? 是的,LiteLLM 可以部署為代理伺服器,公開一個 OpenAI 相容的 API 端點。此代理處理所有上游供應商的認證、速率限制、負載平衡、快取和記錄。它可以透過 Docker、Kubernetes 或直接在 VM 上部署,使其適用於團隊使用和生產環境。
LiteLLM 適合生產環境使用嗎? 是的,LiteLLM 已被許多公司用於生產環境。它透過跨多個 API 金鑰和供應商的負載平衡支援高可用性、快取以降低成本與延遲、速率限制以防止濫用、詳細記錄以進行稽核追蹤,並且在代理模式下每分鐘可處理數千個請求。
延伸閱讀
- LiteLLM GitHub 儲存庫 – 原始碼、文件和社群
- LiteLLM 代理文件 – 部署指南和代理設定
- OpenAI API 參考 – LiteLLM 標準化輸出格式的參考
- Docker Hub: litellm – 用於代理部署的官方 Docker 映像