如何使用AI 网关(LiteLLM): 统一管理AI大语言模型接入
Table of Contents
什么是 LiteLLM gateway Server? #
LiteLLM是一个开源的统一接口工具,用于简化与各种大语言模型(如OpenAI、Anthropic、Google等)的交互。它作为一个代理层,提供标准化的API接口,帮助企业集中管理多个AI服务提供商的访问、监控使用情况、控制成本,并简化技术集成。LiteLLM特别适合需要同时使用多个LLM服务的企业环境,能够显著降低管理复杂性和提高安全性。
企业痛点 #
在当今AI大语言模型(LLM)快速发展的时代,企业面临着诸多挑战:
多供应商管理困境
- 不同AI服务提供商(如OpenAI、Anthropic、Google等)需要不同的API密钥
- 每个供应商都有独立的计费系统和用量统计
- 团队需要管理多个平台的账号和密钥
成本控制难题
- 难以追踪各个团队的实际API使用量
- 缺乏统一的成本核算和预算管理
- 无法有效监控和优化API调用成本
技术集成复杂性
- 不同供应商的API接口格式各异
- 需要为每个供应商维护独立的集成代码
- 模型参数和调用方式不统一
安全与合规挑战
- API密钥分散存储,增加安全风险
- 难以实现统一的访问控制和权限管理
- 缺乏完整的审计日志和合规记录
快速开始 #
1. 环境准备 #
在开始之前,请确保您的系统满足以下要求:
- Docker 和 Docker Compose 已安装
- 已获取所需的 API 密钥(如 OpenRouter API Key 或 openai Key)
2. 安装步骤 #
mkdir litellm-server
cd litellm-server
echo 'LITELLM_MASTER_KEY="sk-1234"' > .env
echo 'LITELLM_SALT_KEY="sk-1234"' > .env
source .env
2. 配置 LiteLLM #
vi config.yaml
model_list:
- model_name: gpt-4o-mini
litellm_params:
model: gpt-4o-mini
api_key: os.environ/OPENROUTER_API_KEY
api_base: https://openrouter.ai/api/v1
- model_name: "gpt-4o"
litellm_params:
model: "openrouter/openai/gpt-4o"
api_base: "https://openrouter.ai/api/v1"
api_key: "os.environ/OPENROUTER_API_KEY"
general_settings:
store_model_in_db: true
store_prompts_in_spend_logs: true
3. 配置 Docker Compose #
version: "3.11"
services:
litellm:
build:
context: .
args:
target: runtime
image: ghcr.io/berriai/litellm:main-stable
#########################################
## Uncomment these lines to start proxy with a config.yaml file ##
volumes:
- ./config.yaml:/app/config.yaml #<<- this is missing in the docker-compose file currently
command:
- "--config=/app/config.yaml"
##############################################
ports:
- "4000:4000" # Map the container port to the host, change the host port if necessary
environment:
DATABASE_URL: "postgresql://llmproxy:dbpassword9090@db:5432/litellm"
STORE_MODEL_IN_DB: "True" # allows adding models to proxy via UI
env_file:
- .env # Load local .env file
depends_on:
- db # Indicates that this service depends on the 'db' service, ensuring 'db' starts first
healthcheck: # Defines the health check configuration for the container
test: [ "CMD", "curl", "-f", "http://localhost:4000/health/liveliness || exit 1" ] # Command to execute for health check
interval: 30s # Perform health check every 30 seconds
timeout: 10s # Health check command times out after 10 seconds
retries: 3 # Retry up to 3 times if health check fails
start_period: 40s # Wait 40 seconds after container start before beginning health checks
db:
image: postgres:16
restart: always
environment:
POSTGRES_DB: litellm
POSTGRES_USER: llmproxy
POSTGRES_PASSWORD: dbpassword9090
ports:
- "54321:5432"
volumes:
- postgres_data:/var/lib/postgresql/data # Persists Postgres data across container restarts
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 1s
timeout: 5s
retries: 10
prometheus:
image: prom/prometheus
volumes:
- prometheus_data:/prometheus
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9099:9090"
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=15d'
restart: always
volumes:
prometheus_data:
driver: local
postgres_data:
name: litellm_postgres_data # Named volume for Postgres data persistence
4. 启动服务 #
# 启动服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
5. API 调用示例 #
创建虚拟密钥:访问 http://localhost:4000/ui/?userID=default_user_id&page=api-keys
调用示例:
export $LITELLM_API_KEY=xxxx
curl http://localhost:4000/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LITELLM_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "你是一个助手. 叫 李四三"
},
{
"role": "user",
"content": "how are you? what your name?"
}
]
}'
6. 管理界面 #
访问 LiteLLM 管理界面:http://localhost:4000/ui
主要功能:
- 模型管理:查看和配置可用的模型
- 用量统计:监控 API 调用情况和成本
- 密钥管理:创建和管理虚拟密钥
- 日志查看:查看详细的调用日志
界面预览:
总结 #
LiteLLM作为一个统一的LLM代理层,为企业提供了一个优雅的解决方案:
统一的API接口
- 提供标准化的接口,简化集成工作
- 无需修改现有代码即可切换不同的AI服务提供商
- 统一的模型参数和调用方式
集中的密钥管理
- 虚拟密钥系统,保护原始API密钥
- 统一的密钥管理和轮换机制
- 细粒度的访问控制和权限管理
完整的监控和分析
- 统一的用量统计和成本分析
- 详细的调用日志和性能监控
- 支持多团队资源分配和计费
灵活的部署选项
- 支持本地部署和云服务
- 可扩展的架构设计
- 丰富的集成选项