前言
随着大语言模型(LLM)应用场景的不断扩展,管理和统一调用多个 AI 模型接口的需求日益突出。目前市面上有多种解决方案,每个都有其独特的优势和适用场景:
- one-api/new-api: 这类项目提供完整的 Web UI 界面,支持多用户管理、使用量统计等功能,适合团队或小型组织使用。
- uni-api: 采用 Provider-First 的配置思路,通过简单的配置文件启动,特别适合个人用户快速配置多个模型服务。
- openrouter: 作为一个集中式的 AI 模型网关,支持多个主流服务商,但对某些区域性服务(如国内的 siliconflow)支持有限,且无法配置同一服务商的多个账号。
- LiteLLM: 既可作为 SDK 使用,也可作为独立的 LLM Gateway 部署。采用 Model-First 的配置方式,虽然在多模型配置上略显繁琐,但提供了更细粒度的模型控制能力,而且代码质量也比 uni-api 更好。
所以我使用了一段时间的 new-api 和 uni-api 之后,现在切换到 LiteLLM。本文将介绍 LiteLLM 的部署方案和一些实用的配置技巧。
Docker Compose 部署
LiteLLM 支持多种部署方式,使用 Docker Compose 是最简单和可靠的方案之一。以下是一个基础的部署配置:
name: litellm
services:
litellm:
image: ghcr.io/berriai/litellm:main-latest # 或者选用 stable
volumes:
- ./config.yaml:/app/config.yaml
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
db:
image: postgres
restart: always
environment:
POSTGRES_DB: litellm
POSTGRES_USER: llmproxy
POSTGRES_PASSWORD: dbpassword9090
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 1s
timeout: 5s
retries: 10
配置技巧
LiteLLM 采用 Model-First 的配置方式,这在配置多个相同提供商的模型时可能会显得重复。虽然官方推荐使用环境变量来复用配置:
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-e
api_base: https://my-endpoint-europe-berri-992.openai.azure.com/
api_key: "os.environ/AZURE_API_KEY_EU"
但这种方式会导致配置信息分散在配置文件和环境变量中。对于个人用户来说,我们可以利用 YAML 的锚点(anchor)特性来实现更优雅的配置:
my_providers:
gemini_1: &gemini_1
api_key: xxx
gemini_2: &gemini_2
api_key: yyy
provider_1: &provider_1
api_key: zzz
api_base: 'http://example.com/v1/chat/completions'
model_list:
- model_name: gemini-1.5-pro
litellm_params:
model: gemini/gemini-1.5-pro
<<: *gemini_1
- model_name: gemini-1.5-pro
litellm_params:
model: gemini/gemini-1.5-pro
<<: *gemini_2
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
<<: *provider_1
这种配置方式有以下优势:
- 配置集中管理,易于维护
- 减少重复代码,提高配置效率
- 方便快速切换或更新 API 密钥
- 清晰的配置结构,便于理解和修改
结语
LiteLLM 作为一个灵活的 LLM 网关解决方案,能够很好地满足个人用户和小型团队的需求。通过合理使用 YAML 的高级特性,我们可以构建出更加优雅和易维护的配置。在选择 LLM 网关工具时,建议根据实际使用场景、规模和管理需求来权衡不同方案的优劣。