嗨大家,我是 Debuguy。
還記得 Day 12 我們談到成本透明化的重要性嗎?當時我們讓使用者看到每次對話的花費,但其實錢的問題不只是透明化這麼簡單。
今天我們要面對一個更根本的問題:當你把 API Key 直接給團隊使用時,你實際上是把公司的信用卡交給了每一個開發者。這不只是安全性問題,更是預算控制的大漏洞。
// src/index.ts - 目前的危險架構
const ai = genkit({
plugins: [
googleAI({
apiKey: process.env['GEMINI_API_KEY']! // 💀 所有人共用真實 Key
}),
],
});
# .env - 每個開發者都需要這個
GEMINI_API_KEY=AIzaSyC_your_precious_24_chars_that_cost_money
無法控制預算
無法撤銷權限
無法追蹤使用
「給每個開發者真實的 API Key,就像給每個員工公司金庫的鑰匙」
LiteLLM 的設計思路很簡單:在真實 API 和開發者之間加一層代理
[開發者A] -- Virtual Key --> ┐
[開發者B] -- Virtual Key --> │ [LiteLLM Proxy] -- Real Key --> [Gemini API]
[開發者C] -- Virtual Key --> ┘ ↑
權限控制、監控、預算管理
1. 與現有架構相容性高
LiteLLM 相容 OpenAI API 格式,這意味著我們只需要改一行設定:
// Before: 直接連 Gemini
const ai = genkit({
plugins: [googleAI({ apiKey: process.env['GEMINI_API_KEY']! })],
});
// After: 透過 LiteLLM
const ai = genkit({
plugins: [
openAI({ // LiteLLM 支援 OpenAI API 格式
apiKey: process.env['LITELLM_API_KEY']!, // 代用 Key
baseURL: process.env['LITELLM_BASE_URL']! // LiteLLM 服務位址
}),
],
});
2. 多模型統一管理
一個 LiteLLM instance 可以代理多個模型提供商:
# LiteLLM 設定範例
model_list:
- model_name: gemini-flash
litellm_params:
model: gemini-2.5-flash-lite
api_key: env/GEMINI_API_KEY
- model_name: claude-sonnet
litellm_params:
model: claude-3-sonnet-20240229
api_key: env/ANTHROPIC_API_KEY
- model_name: local-llama
litellm_params:
model: ollama/llama3
api_base: http://localhost:11434
3. 企業級功能內建
公司總預算: $2000/月
├── 開發團隊: $800/月
│ ├── Senior Dev: $200/月
│ ├── Junior Dev: $100/月
│ └── Intern: $50/月
├── 測試環境: $500/月
└── 生產環境: $700/月
即時監控指標:
開發階段:
生產階段:
管理階段:
今天我們把原本的「共用真實 Key」架構,升級為「企業級代理層」架構。
核心改變:安全左移(Shift Left Security)
LiteLLM 的價值:
不只是解決了安全問題,更重要的是建立了一套可擴展、可管理、可監控的 LLM 存取架構。當你的 AI 專案從實驗階段進入生產階段時,這套架構會成為你最重要的基礎設施。
「安全不是限制,而是讓你能更大膽地創新」
明天我們要來談 Day 2 思維的另一個關鍵:可觀測性。開發的時候用 GenKit 那上線後要用什麼呢?
LLM 的發展變化很快,目前這個想法以及專案也還在實驗中。但也許透過這個過程大家可以有一些經驗和想法互相交流,歡迎大家追蹤這個系列。
也歡迎追蹤我的 Threads @debuguy.dev