SuperAPI AI 工具集

llm-gateway

部署与运维

查看项目

更新于 10-15 14:23

技能介绍

用途

LLM Gateway 是一个统一的 API 网关,用于在多个 LLM 供应商与自托管模型之间路由请求,并提供速率限制、成本追踪、缓存与故障转移能力。

适用场景包括:

  • 在单一端点后运行多个 LLM 后端(OpenAI、Anthropic、vLLM、Ollama)
  • 对每个团队或用户强制执行速率限制与支出预算
  • 在供应商宕机时实现自动回退
  • 添加语义缓存以降低 API 成本
  • 集中管理 API 密钥,而不是将密钥分发到每个应用

主要能力

  • 多后端路由与负载均衡:支持 OpenAI、Anthropic 以及自托管 vLLM 实例,同一 model_name 配置多个副本可自动负载均衡。
  • 路由策略:支持 least-busy、latency-based、simple-shuffle 等策略,并可配置重试次数、重试间隔、允许失败次数与冷却时间。
  • 故障回退:通过 fallbacks 配置在主模型失败时切换到备用模型。
  • 语义缓存:基于 Redis 的缓存,可设置相似度阈值(如 0.90),资料称可降低 API 成本 20–50%。
  • 虚拟密钥与预算控制:可为团队生成虚拟 API 密钥,限制可用模型、最大预算、预算周期、RPM 与 TPM。
  • 成本追踪:提供按密钥、按模型的支出查询接口。
  • 日志与可观测性:支持将成功与失败回调发送到 Langfuse。
  • Nginx 负载均衡补充方案:提供基于 least_conn 的 vLLM 副本轮询、按密钥限流以及 SSE 流式传输所需的 proxy_buffering off 配置。

使用方式

前置条件:Docker 与 Docker Compose;PostgreSQL 或 SQLite 数据库(用于 LiteLLM 状态);LLM API 密钥或自托管 vLLM 端点;可选 Redis 用于缓存与限流。

快速启动(Docker):

docker run -d \
  --name litellm-proxy \
  -p 4000:4000 \
  -e OPENAI_API_KEY=$OPENAI_API_KEY \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -v $(pwd)/litellm-config.yaml:/app/config.yaml \
  ghcr.io/berriai/litellm:main-latest \
  --config /app/config.yaml \
  --detailed_debug

配置文件 litellm-config.yaml 中定义 model_list(模型名称、litellm_params、api_key、rpm、tpm、api_base 等)、router_settings(routing_strategy、num_retries、retry_after、allowed_fails、cooldown_time、fallbacks)、litellm_settings(cache、cache_params、success_callback、failure_callback、langfuse 密钥)以及 general_settings(master_key、database_url、store_model_in_db)。

完整网关栈可通过 Docker Compose 部署,包含 litellm、postgres、redis 三个服务,并配置健康检查与数据卷。

虚拟密钥与限流示例:

curl -X POST http://localhost:4000/key/generate \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "team_id": "team-backend",
    "key_alias": "backend-team-key",
    "models": ["gpt-4o-mini", "llama-3.1-8b"],
    "max_budget": 100,
    "budget_duration": "monthly",
    "rpm_limit": 100,
    "tpm_limit": 500000
  }'

查看支出:

curl http://localhost:4000/spend/keys \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY"

健康监控接口:

curl http://localhost:4000/health
curl http://localhost:4000/health/liveliness
curl http://localhost:4000/spend/models \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY"
curl http://localhost:4000/key/list \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY"

Nginx 可作为替代或补充的负载均衡层,配置 upstream 使用 least_conn、max_fails、fail_timeout、keepalive,并设置 limit_req_zone 按 Authorization 头限流,location /v1/ 中设置 proxy_read_timeout 300s、proxy_buffering off 以支持 SSE 流式传输。

适用场景

  • 多团队或多应用共享 LLM 资源,需要按团队分配密钥与预算。
  • 自托管 vLLM 多副本部署,需要负载均衡与故障转移。
  • 需要降低重复或相似查询的 API 成本。
  • 需要集中审计与成本归因。

限制与注意事项

  • 资料未提供具体收费、价格或平台信息。
  • 常见问题包括:后端不可达导致 ConnectionRefusedError;超出预算或 RPM 导致 429;Nginx 开启 proxy_buffering 导致流式响应变慢;相似度阈值过严导致缓存命中率低;Postgres 未就绪导致连接错误。
  • 最佳实践:为每个团队或应用使用虚拟密钥,不暴露原始供应商密钥;启用 Redis 缓存;设置重试与回退;将请求日志发送到 Langfuse 或 OpenTelemetry;自托管模型使用 least-busy 路由策略以避免 GPU 饱和。
  • 相关技能:vllm-server、llm-inference-scaling、llm-caching、llm-cost-optimization。