简介
LiteLLM 的成本跟踪层把每次 LLM 调用归属到项目、用户、tag,在自带仪表盘里露出。给每个团队设硬预算 —— 超预算 proxy 直接返 429,不再转发。适合任何「谁在烧我们 LLM 预算」反复出现的团队。需要 LiteLLM Proxy(自托管)或 LiteLLM Cloud(托管)。装机时间 5 分钟(Postgres + Redis + .env)。
在 proxy 配置里启用
# config.yaml
general_settings:
master_key: sk-master
database_url: postgresql://litellm:pass@db:5432/litellm
store_model_in_db: true
spend_logs_max_age: "90d" # 自动清理
litellm_settings:
callbacks: ["langfuse", "prometheus"] # 可选,发到你的可观测性docker compose up -d # 起 proxy + Postgres生成带预算的 key
# 团队级
curl -X POST http://localhost:4000/team/new \
-H "Authorization: Bearer sk-master" \
-d '{"team_alias": "frontend-team", "max_budget": 1000, "budget_duration": "30d"}'
# 用户级(团队内)
curl -X POST http://localhost:4000/user/new \
-H "Authorization: Bearer sk-master" \
-d '{"user_id": "alice@acme.com", "team_id": "frontend-team", "max_budget": 50}'
# 给该用户生成 key
curl -X POST http://localhost:4000/key/generate \
-H "Authorization: Bearer sk-master" \
-d '{"user_id": "alice@acme.com", "max_budget": 50}'alice@acme.com 烧到 $50 之后,所有后续调用返 429。
给每个请求打 tag
client.chat.completions.create(
model="claude-3-5-sonnet",
messages=[...],
extra_body={
"tags": ["feature:onboarding", "env:prod", "user-tier:enterprise"],
},
)仪表盘就能按任意 tag 组合分组看花费 —— "上周 onboarding 花了多少?" "Enterprise 跟 free 花费比?"
自带仪表盘
访问 http://localhost:4000/ui(默认密码取自 UI_USERNAME / UI_PASSWORD)。Tab:
- Spend —— 按团队 / 用户 / 模型 / tag / 日期
- Keys —— 生成、轮换、撤销
- Models —— 健康状态、消耗的 RPM/TPM
- Logs —— 每次调用带 prompt + 响应(可配置保留期)
导出到数仓
litellm_settings:
callbacks: ["s3"]
s3_callback_params:
s3_bucket_name: my-llm-logs
s3_region_name: us-east-1每次调用作为一行 JSON 落 S3 —— 用 Athena / DuckDB 查。
FAQ
Q: 这功能需要 LiteLLM Pro 吗? A: 不需要 —— 成本跟踪、仪表盘、团队级预算、S3 导出都在开源 proxy 里。Pro 加的是 SOC2 认证、SSO/SAML、托管部署。
Q: 成本跟踪准吗?
A: LiteLLM 用每个 provider 官方的 token 计数 + 单模型价格表算每次调用成本。没公开价格的模型(比如本地 Ollama),在 config.yaml 里设 input_cost_per_token / output_cost_per_token,否则记成 $0。
Q: 能在发到 provider 前拦 PII 吗? A: 能 —— LiteLLM 有 Guardrails 层(正则或接 Presidio / Lakera),请求上游前先跑一遍。配合成本跟踪还能阻止特定 tag 去到特定 provider。