v1.94.0 - 路由器外掛程式、MCP 用戶端持有憑證與共享 DataTable UI
部署此版本
- Docker
- Pip
docker run \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.94.0
pip install litellm==1.94.0
使用者的個人 max_budget 會套用在其團隊金鑰上,這可能會讓他們無法登入 Admin UI。 請升級至 v1.94.1。
當使用者的個人支出超過其自身預算時,即使團隊預算仍有剩餘,其團隊金鑰也會回傳 429 ExceededBudget。此檢查也會在管理路由上執行,而且 Admin UI 工作階段權杖是以團隊為範圍,因此受影響使用者看到的儀表板會是空白。
v1.94.1 會還原此行為並移除 general_settings.skip_user_budget_on_team_key 退出選項;如果您有設定,請將其從設定中移除。
timeout、stream_timeout 和 request_timeout 在 litellm_params 中現在會強制套用到 /v1/messages 流量。 較早版本會對 Anthropic Messages API 請求靜默忽略這些值,而這些請求一律以 600 秒的用戶端預設值執行。現在這些值會生效;對於串流請求,stream_timeout 會限制串流任兩個區塊之間的等待時間,而不只是在第一個 token 之前。先前沒有影響的低值,例如 stream_timeout: 30,現在會讓長時間執行的 Claude 串流在回應途中因 ReadTimeout: Timeout on reading data from socket 而失敗。升級前,請先檢查您的 Anthropic 與 Bedrock Claude 部署中的這些值。請參閱 PR #33418。
重點摘要
- 路由器外掛程式管線與 Auto-Router v2 - 新增可從 proxy YAML 設定解析的
Router(plugins=[...])擴充點,以及 soft-floor 自適應模式、可選用(現為預設)的 session affinity、多模型 tier 隨機挑選,還有供複雜度路由器使用的使用者觸發升級關鍵字。 - MCP 用戶端持有憑證成熟化 - 針對
dcr_bridgeoauth_delegateDCR 用戶端的互動式 SSO 登入、用戶端持有的 refresh envelopes、在 token 端點鑄造的 gateway-bound envelopes、以 issuer 為錨點的 OAuth discovery(RFC 8414 §3.3)以避免授權伺服器 mix-up,以及 MCP egress 的 ID-JAG 支援。 - Cost Optimization 頁面(beta) - 新的儀表板介面,包含 Usage、Prompt Compression、Autorouter 與 Prompt Caching 標籤頁,依 driver 拆分的節省金額、按工具分類的支出,以及估算未快取輸入在 prompt caching 下原可節省多少的 cache leakage 卡片。
- 共享 DataTable 儀表板遷移 - Virtual Keys、Teams、Guardrails、Tags、Vector Stores、Prompts、Skills、AI Hub、MCP Toolsets 與 Policy Attachments 全部移至共享的可組合 DataTable。
- 支援 Python 3.14 -
requires-python上限移至<3.15,pyo3 提升至 0.29 以便原生 Rust bridge 能編譯,且 redisvl / pypdf / openapi-core 在 3.14 上解除封鎖。 - 每個模型的 prompt cache 最低值 -
prompt_cache_min_tokens現已記錄在 Anthropic 與 Bedrock Claude 成本對映項目中,而路由器會解析每個模型實際的最低值,而非固定的 1024。
新模型 / 更新模型
新模型支援(5 筆新定價項目)
| 提供者 | 模型 | Context Window | 輸入(每 100 萬 tokens 美元) | 輸出(每 100 萬 tokens 美元) | 功能 |
|---|---|---|---|---|---|
| Google AI Studio | gemini/gemini-omni-flash-preview | 1.05M | $1.50 | $9.00(影片輸出 $17.50) | Reasoning、vision、audio input、video input/output |
| Google Vertex AI | gemini-omni-flash-preview | 1.05M | $1.50 | $9.00(影片輸出 $17.50) | Reasoning、vision、audio input、video input/output |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-sol | 272K | $5.50 | $33.00 | Reasoning、vision、function calling、prompt caching、Responses API |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-terra | 272K | $2.75 | $16.50 | Reasoning、vision、function calling、prompt caching、Responses API |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-luna | 272K | $1.10 | $6.60 | Reasoning、vision、function calling、prompt caching、Responses API |
除了新的項目之外,此版本也記錄了 Anthropic 與 Bedrock Claude 系列的 prompt_cache_min_tokens(依模型為 512-4096),將 gpt-realtime 系列標記為 mode: realtime 而非 chat,將 Gemini 圖像生成模型標記為非 reasoning,並修正 Fireworks glm-5p2 prompt-cache 讀取價格。
功能
- Anthropic
- Amazon Bedrock
- Google AI Studio / Vertex AI
- 新增具有影片輸出 token 定價的
gemini-omni-flash-preview- PR #33274
- 新增具有影片輸出 token 定價的
- Fireworks AI
- 將 LiteLLM session id 對應至
x-session-affinity標頭以供 prompt caching 使用 - PR #33717
- 將 LiteLLM session id 對應至
錯誤修正
- Anthropic
- 在 Responses 串流配接器中精確一次發出
message_start- PR #32667 - 針對 Chat Completions 與 Bedrock Converse,轉換 pre-4.6 模型的原始 adaptive thinking - PR #32944
- 在 pass-through 中為 pre-4.6 模型降級 adaptive thinking 時,移除不相容的
temperature參數 - PR #33244 - 阻止 combined thinking-plus-signature 串流區塊造成 500 錯誤 - PR #33505
- 針對來自 Bedrock 與 Vertex 的缺少 thinking-signature 錯誤進行自我修復 - PR #33719
- 在 Anthropic 配接器中移除空的
content_block_delta事件 - PR #33315 - 遵循 messages 請求逾時 - PR #33418
- 在 CLI 中解除對
lite autorouteproxy 依賴、adaptive thinking,以及 thinking-plus-signature 串流的阻塞 - PR #33507
- 在 Responses 串流配接器中精確一次發出
- Google Vertex AI
- Amazon Bedrock
- 將 AWS 憑證 kwargs 轉送到
litellm_params,以便 responses 橋接保留 WIF 驗證 - PR #32956
- 將 AWS 憑證 kwargs 轉送到
- Fireworks AI
- OpenAI
- 將僅支援 realtime 的
gpt-realtime模型標記為mode: realtime- PR #33728
- 將僅支援 realtime 的
LLM API 端點
功能
- 一般
- 新增一個
x-litellm-model-name回應標頭,攜帶部署模型字串 - PR #33698
- 新增一個
錯誤
管理端點 / UI
功能
- UI(共用 DataTable 遷移)
- UI(成本最佳化)
- UI
- 將端點使用量圖表轉換為 shadcn/recharts - PR #32723
- 採用
openapi-react-query($api) 並轉換useCustomers- PR #32949 - 為 complexity auto router 提供可用的 Test Connection,並在 Auto-Router v2 中提供 adaptive routing 設定 - PR #32950, PR #33146
- 為 semantic auto router 要求 embedding model - PR #33313
- 從 Admin UI 設定 Anthropic automatic prompt caching - PR #33581
- 在 usage cards 中顯示精確的授權到期日期 - PR #33478
- 將 Caching 從 Experimental 移至 Developer Tools - PR #33432
- 新增可重複使用的
BetaBadge,並將其用於 Projects 側邊欄項目 - PR #33449 - 在聊天 UI 中新增僅限目前使用者的個人 Logs 檢視 - PR #33829
- 將 Create Key 與 Create Team CTA 左對齊 - PR #33248
- 將 Add/Edit credential 對話框整併為一個
CredentialModal- PR #32572 - 在保留共用
mcp_tools介面的同時,將 mcp-servers 檢視放在同一處 - PR #32968 - 在共用
DEBOUNCE_WAIT_MS常數後方標準化 debounce 等待時間,並將 value 與 callback debounces 遷移到 react-pacer - PR #33040, PR #33042, PR #33043, PR #33041 - 移除未掛載的
UsageIndicator與 Hide Usage Indicator 標記 - PR #33482
- Auth 與管理
錯誤
- UI(成本優化)
- UI
- 修正 Virtual Keys redesign review 的細節問題 - PR #33112
- 從 page-content wrappers 移除
w-full,以消除 32px 的水平溢出 - PR #33118 - 使用 shadcn
ScrollArea呈現側邊欄捲動條 - PR #33124 - 在團隊建立後顯示並允許編輯 team model aliases - PR #33047
- 在 BYOK credential save 與 workflow-run fetches 中遵守
litellm_key_header_name- PR #33103 - 停止在憑證編輯時保留遮罩後的 API 金鑰 - PR #33797
- 在 render 時解析 chat routes,以便在
server_root_path下導覽可正常運作 - PR #33446 - 透過硬式導覽前往帶有尾端斜線的
/ui/login/- PR #33561 - 讓管理員在 policy attachment form 中看到所有團隊 - PR #33628
- 從 dashboard 左側導覽中移除 Chat 項目 - PR #33647
- 將 tag deletion 移轉至共用的
DeleteResourceModal- PR #33795 - 停止將 complexity-router pseudo-model 傳送到
/health/test_connection- PR #33498 - 從 complexity 分頁下拉選單中篩除 embedding models,要求所有 tier,並進行 inline 驗證 - PR #32978
- 驗證與管理
- 將 master key 導向團隊範圍的模型 - PR #32926
- 防止未識別的模型命名空間透過 provider wildcard keys 滲入 - PR #32979
- 保留
key_type,讓 UI 顯示正確的 key scope,而不是 "All Proxy Models" - PR #33115 - 強制自訂 key 最小長度,並在
key_name中遮罩過短的 keys - PR #33462 - 在擷取 SSO service principal 群組指派時,分頁讀取所有頁面 - PR #33149
- 將 JWT enterprise gate 限定於實際的 JWT - PR #33296
- 停止對 CLI login tokens 強制套用 UI session budget - PR #33312
- 當 CLI 與 proxy 版本不一致時,顯示可採取行動的 CLI SSO 錯誤 - PR #33309
- 為 vector store files 解析 team wildcard credentials - PR #33649
- 將 CLI 輸出限制為僅 ASCII,以免當機於舊版 Windows 主控台 - PR #33465
- 在 workers 之間共享 CLI SSO login sessions,且不使用
enable_redis_auth_cache- PR #33261
AI 整合
記錄
- OpenTelemetry
- Langfuse
- 根據 key 與 team-level 的動態 Langfuse credentials 建立每個請求的 OTLP exporter - PR #32437
- Prometheus
- S3
- 清理 response-id 衍生的 object key 檔名中的斜線 - PR #33271
- 一般
- 將使用者與團隊層級的 spend 和 budget 新增至
StandardLoggingPayloadmetadata - PR #33459 - 將結構化 budget 欄位新增至 budget rejection failure logs - PR #33460
- 保留
get_combined_callback_list中的 callback 順序 - PR #33005 - 將 async
anthropic_messages與generate_content分類為 async - PR #33589 - 為自訂 callback 遮罩 async complete streaming response - PR #33106
- 在 spend logs 中遮罩 assistant tool call arguments - PR #33111
- 絕不在 key insertion debug output 中記錄原始 virtual keys - PR #33268
- 將使用者與團隊層級的 spend 和 budget 新增至
防護欄
- Straiker
- 新增 Straiker 防護欄整合 - PR #33781
- Compresr
- 新增用於具查詢感知內容壓縮的 Compresr 防護欄 - PR #33295
- Bedrock Guardrails
- 新增無需資源的
InvokeGuardrailChecks僅偵測模式 - PR #33299
- 新增無需資源的
- Model Armor
- Lasso
- 傳送
source.type以供 Used By 歸因 - PR #33090
- 傳送
- LLM Guard
- 將 moderation API 傳回的已清理 prompt 套用至請求 - PR #33331
- 一般
- 在
generic_guardrail_api中進行串流文字轉換 - PR #33110 - 在
POST /guardrails/apply_guardrail上傳遞可選 metadata - PR #33067 - 在 deployment hook 執行
apply_guardrail-style 的模型層級pre_call防護欄 - PR #33136 - 在 Guardrail Monitor 中顯示以 YAML 定義的防護欄 - PR #32853
- 在共用內容 helpers 中逐一處理
custom_tool_call_output項目 - PR #32969 - 在 xecguard logging hook 中使用
StandardLoggingGuardrailInformation,並在記錄前清理掃描結果 - PR #32911, PR #32935 - 移除 singulr 模組中多餘的 docstring,以保持一致 - PR #33800
- 在
支出追蹤、預算與速率限制
- 預算
- 速率限制
- 將
max_parallel_requests強制作為每個 slot 的並行度指標 - PR #32441
- 將
- 成本追蹤
- 對 OpenRouter 串流使用提供者回報的使用成本 - PR #32255
- 追蹤未受管理的 Bedrock 批次成本,並將此旗標泛化 - PR #32315
- 在支出記錄中追蹤未驗證的直通請求 - PR #32410
- 追蹤
/v1/rag/query的 LLM completion 使用量與支出 - PR #32438 - 當用戶端在串流中途中斷連線時,計費部分串流支出 - PR #33736
- 移除支出更新路徑中使用
None金鑰的無用使用者快取查找 - PR #33555 - 改為每日彙總工具支出,而非掃描
SpendLogs,並將/v1/tool/spend視窗限制為 30 天,且每次SpendLogs讀取都加上界限 - PR #34675, PR #34582 - 在每日支出彙總中追蹤 prompt 壓縮節省的 token - PR #33810
- 針對未使用
org_id建立的、與團隊關聯的憑證,歸屬組織支出 - PR #34577
MCP 閘道
- 用戶端轉送的憑證 (
dcr_bridge/oauth_delegate)- 為
dcr_bridgeoauth_delegateDCR 用戶端提供互動式 SSO 登入 - PR #32946 - 在 token 端點建立繫結至閘道的封套,並為此流程新增由用戶端持有的 refresh 封套 - PR #32828, PR #32980
- 將
dcr_bridgetoken 流程抽出到bridge_token_flow.py- PR #33141 - 將
config.yamlDCR 用戶端持久化到伺服器範圍的儲存,以便 refresh 在 token 到期後仍可存續 - PR #33768 - 將被拒絕的 delegate-auth 上游 token 以連線時的 401 顯示,並回傳上游 OAuth token 與 DCR 拒絕,而非一般性的 500 - PR #32741, PR #33113
- 讓預先 401 的 OAuth challenge 決策符合模式感知 - PR #33586
- 為
- OAuth 與身分識別
- 以 issuer 為錨點的 OAuth discovery(RFC 8414 §3.3)以避免 authorization-server mix-up - PR #33450
- 新增 ID-JAG(identity assertion authorization grant)支援以供 MCP egress 使用 - PR #31516
- 持久化已探索的 OAuth 端點,並在重新探索失敗時保留最後已知的良好集合 - PR #33286
- 當
authorization_url手動設定時,探索缺少的 OAuth scopes 與token_url- PR #33317 - 將每位使用者的 OAuth token 快取 TTL 上限設為 token 本身的生命週期 - PR #33346
- 工具與權限
效能 / 負載平衡 / 可靠性改善
- 路由
- 新增
Router(plugins=[...])routing-plugin 管線,從 proxy YAML 設定解析 auto-router routing plugins,並從已安裝套件解析router_settings.pluginsdotted paths - PR #32972, PR #33251, PR #33644 - 為 complexity router 提供 soft-floor adaptive 模式與 random-pick multi-model tiers - PR #32947, PR #32967
- 讓 complexity router 可選擇使用 session affinity,之後預設啟用,並將 session id 由 Anthropic
metadata.user_id衍生 - PR #33126, PR #33500, PR #33723 - 使用者觸發的升級關鍵字,以及在設定精靈中的每個 tier 語意關鍵字提示 - PR #33656, PR #33508
- 尊重來自 key/team
router_settings的每個請求routing_strategy,並套用 team/keyenable_tag_filtering以標記路由 - PR #33429, PR #33436 - 針對共享的
model_name進行具標籤感知的預路由策略選擇 - PR #33691 - 改為依每個模型解析 prompt cache 最低值,而非固定 1024 - PR #33637
- 對 Responses API 輸入強制執行 context-window 請求前檢查 - PR #33706
- 修正 Responses API
tool_choice結構,並在 auto router 中傳遞別名litellm_params- PR #32974 - 當 metadata 不存在時,從
_classifier_call_metadata回傳空字典 - PR #33452 - 將
model_info成本值轉型為 float 於_set_model_group_info中 - PR #33556
- 新增
- 可靠性
- 部署
- 在元件化 Helm chart 中新增每個元件的
PodDisruptionBudget與topologySpreadConstraints- PR #33430 - 將 Prisma CLI 與 engines 烘焙到固定路徑,使全新資料庫 migrations 可在離線狀態下對任何 uid 運作 - PR #33853
- 在執行階段映像中還原
litellm-proxy-extrassource dir - PR #33592 - 更新有標記的依賴套件:pypdf、pyasn1、gitpython,以及 dashboard 的 next、postcss、sharp、js-yaml 和 brace-expansion - PR #34640
- 在元件化 Helm chart 中新增每個元件的
文件更新
- 在 PR 範本中新增 QA runbook 區段 - PR #32965
- 新增 router plugin 參考目錄 - PR #33746
- 讓 e2e 的 skip 與 fail 文件與 hard-fail 合約一致,並限定 no-unit-tests 規則的範圍 - PR #33755
- 為 litellm-rust 新增提供者程式碼標準與提供者抽象標準,並在 agent 規則中要求官方 Rust Style Guide - PR #33833, PR #33865, PR #33867
依所有權區域彙整的 PR
依所有權區域分類的 PR(總計:263)
- 其他(CI / chore / tests / build / version bumps):76
- UI:48
- 效能 / 路由 / 可靠性:26
- 模型與提供者:23
- MCP:17
- 支出 / 預算 / 速率限制:16
- 防護欄:15
- 驗證與管理:14
- 記錄:13
- LLM API 端點:9
- 文件:6
端到端測試
我們正大力投入端到端測試,以減少迴歸並讓 LiteLLM 每次發佈都更加穩定。現在每個版本都會透過一套即時測試套件來驗證,該套件會對真實部署的 proxy 執行,並呼叫真實的提供者端點,而非模擬,因此我們驗證的行為就是您在正式環境中會得到的行為。我們的目標是在本週達到 95% 的涵蓋率,並在未來持續維持這個標準,讓更少的迴歸進入發佈版。
這次執行是針對 v1.94.0 release candidate,花了大約 58 分鐘,在一個涵蓋 Anthropic、Azure、Azure OpenAI、Amazon Bedrock(Converse 和 Invoke)、Google Vertex AI 以及 OpenAI 的即時閘道上執行了 264 項測試。
| 結果 | 數量 |
|---|---|
| 通過 | 263 |
| 失敗 | 1 |
涵蓋範圍包括存取控制、批次、Claude Code 介面(串流與非串流訊息、工具使用、視覺、思考、prompt caching、結構化輸出、PDF 輸入,以及網頁搜尋)、Realtime API、embeddings、rerank、影像生成、OCR、Responses API 與 /v1/messages、登入 Datadog、OpenTelemetry 與 Prometheus、金鑰/團隊/使用者/組織管理、MCP gateway、預算、速率限制、支出追蹤,以及路由。依據我們的內部涵蓋率登錄,這套測試目前覆蓋了 43.0% 的已追蹤儲存格(168/391),其中配額管理已達 95.0%,而核心 LLM 端點達到 72.4%。
唯一的失敗,test_sustains_throughput_slo_under_load,是一個負載生成情境,刻意將 proxy 推到超過其設定的吞吐量上限。這與功能正確性無關,且預期會在該流量下觸發。
完整執行報告附在這裡:v1.94.0rc1 e2e 報告。
新貢獻者
- @Napuh 在 PR #32667 中完成了首次貢獻
完整變更記錄
https://github.com/BerriAI/litellm/compare/v1.93.0...v1.94.0