使用 LiteLLM 将本地 Ollama 代理成 OpenAI API
发布日期:2024 年 8 月 4 日 最后更新:2026 年 3 月 8 日
简介
LiteLLM 是一个轻量级的 LLM 网关工具,可以将本地运行的 Ollama 模型(以及其他 100+ 大模型提供商)统一代理成 OpenAI 兼容 API 格式。这使得大量依赖 OpenAI API 标准的应用程序(如 ChatDev、AutoGen、LangChain 等)能够无缝切换使用本地大模型,无需修改代码。
为什么需要 LiteLLM 而不是直接调用 Ollama?
| 特性 | 直接调用 Ollama | LiteLLM 代理 |
|---|---|---|
| API 格式 | Ollama 自有格式 | OpenAI 兼容格式 |
| 多模型支持 | 仅 Ollama 模型 | 100+ 提供商统一接口 |
| 密钥管理 | 无 | 支持多密钥、虚拟密钥 |
| 速率限制 | 无 | 内置 Rate Limiting |
| 成本追踪 | 无 | 详细的 Token 统计 |
| 缓存支持 | 无 | Redis/本地缓存 |
| Fallback 机制 | 无 | 自动故障转移 |
| 负载均衡 | 无 | 多模型实例负载分发 |
安装步骤
1. 安装 Python 环境
确保你的系统中已经安装了 Python 3.8+。推荐使用 conda 创建独立环境:
conda create -n litellm python=3.10 -y conda activate litellm
2. 安装 LiteLLM
# 基础安装(包含 Proxy 功能) pip install 'litellm[proxy]' # 或者使用 uv 加速安装(推荐) pip install uv uv pip install 'litellm[proxy]'
💡 提示:LiteLLM Proxy 是独立运行的服务,安装后会自动提供 Web 管理界面和 API 端点。
3. 配置 Ollama 模型
确保你已经在本地安装并配置好了 Ollama:
# 下载模型(以 llama3.2 为例) ollama pull llama3.2 # 启动 Ollama 服务(默认端口 11434) ollama serve
验证 Ollama 正常运行:
curl http://localhost:11434/api/tags
启动方式
LiteLLM 提供两种启动方式:命令行快速启动 和 配置文件启动。
方式一:命令行快速启动(适合测试)
litellm --model ollama/llama3.2 \
--api_base http://localhost:11434 \
--drop_params
启动后,LiteLLM Proxy 默认监听 http://0.0.0.0:4000
常用参数说明:
| 参数 | 说明 |
|---|---|
--model | 指定模型名称(格式:提供商/模型名) |
--api_base | Ollama 服务地址 |
--drop_params | 丢弃不支持的参数,提高兼容性 |
--add_key | 添加虚拟 API 密钥 |
--port | 自定义端口(默认 4000) |
方式二:配置文件启动(推荐,适合生产)
创建 config.yaml 文件:
model_list:
- model_name: llama3.2
litellm_params:
model: ollama/llama3.2
api_base: http://localhost:11434
drop_params: true
# 添加备用模型实现 fallback
- model_name: llama3.2-backup
litellm_params:
model: ollama/llama3:latest
api_base: http://localhost:11434
drop_params: true
# 通用设置
general_settings:
master_key: sk-litellm-master-key # 主密钥(生产环境请修改)
# 虚拟密钥配置
litellm_settings:
drop_params: true
set_verbose: true
# 用户和配额管理(可选)
user_api_key_auth:
- key: sk-user-001
max_budget: 100 # 预算上限(美元)
models: ["llama3.2"]
启动命令:
litellm --config config.yaml
测试代理
# 使用 curl 测试
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-litellm-master-key" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello!"}]
}'
# 或使用 OpenAI SDK 测试
python -c "
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:4000/v1',
api_key='sk-litellm-master-key'
)
response = client.chat.completions.create(
model='llama3.2',
messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response.choices[0].message.content)
"
在 ChatDev 中使用本地大模型
1. 克隆 ChatDev 仓库
git clone https://github.com/OpenBMB/ChatDev.git cd ChatDev
2. 安装依赖
pip install -r requirements.txt
3. 通过 LiteLLM 代理启动
export OPENAI_API_KEY=sk-litellm-master-key export OPENAI_API_BASE=http://localhost:4000/v1 python3 run.py --task "make a greedy snake game, use html,js" --name "greedy snake"
或者单行命令:
BASE_URL=http://localhost:4000/v1 OPENAI_API_KEY=sk-litellm-master-key python3 run.py \ --task "make a greedy snake game" \ --name "greedy snake"
其他应用场景
1. LangChain 集成
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="llama3.2",
openai_api_key="sk-litellm-master-key",
openai_api_base="http://localhost:4000/v1",
temperature=0.7
)
2. AutoGen 集成
from autogen import AssistantAgent
assistant = AssistantAgent(
name="assistant",
llm_config={
"config_list": [{
"model": "llama3.2",
"api_key": "sk-litellm-master-key",
"base_url": "http://localhost:4000/v1",
}]
}
)
3. 多模型路由配置
# config.yaml - 根据请求自动路由到不同模型
model_list:
- model_name: gpt-4
litellm_params:
model: ollama/llama3.2 # 用本地模型替代 GPT-4
- model_name: gpt-3.5-turbo
litellm_params:
model: ollama/mistral # 用本地模型替代 GPT-3.5
高级功能
1. 缓存配置(减少重复计算)
litellm_settings:
set_verbose: true
cache: true
cache_params:
type: redis
host: localhost
port: 6379
2. Fallback 和重试
model_list:
- model_name: my-model
litellm_params:
model: ollama/llama3.2
api_base: http://localhost:11434
model_info:
fallbacks: ["ollama/mistral", "ollama/phi3"]
max_retries: 3
3. 速率限制
# 限制每个密钥的请求频率
litellm_settings:
rate_limit:
- key: sk-user-001
requests_per_minute: 60
Docker 部署(生产环境推荐)
# 使用官方镜像 docker run \ -p 4000:4000 \ -v $(pwd)/config.yaml:/app/config.yaml \ ghcr.io/berriai/litellm:latest \ --config /app/config.yaml
Docker Compose 配置:
version: '3.8'
services:
litellm:
image: ghcr.io/berriai/litellm:latest
ports:
- "4000:4000"
volumes:
- ./config.yaml:/app/config.yaml
command: ["--config", "/app/config.yaml"]
depends_on:
- redis
redis:
image: redis:alpine
ports:
- "6379:6379"
故障排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
Connection refused | Ollama 未启动 | 运行 ollama serve |
Invalid API key | 密钥不匹配 | 检查 --add_key 或配置文件中的密钥 |
Model not found | 模型名错误 | 确保 model_name 与请求一致 |
| 响应超时 | 模型加载慢 | 增加 request_timeout 参数 |
| 参数不支持 | 某些参数 Ollama 不支持 | 添加 --drop_params 标志 |
查看日志:
# 启用详细日志 litellm --config config.yaml --detailed_debug
参考资源
总结
LiteLLM 作为 LLM 网关的核心价值在于:
- 统一接口 – 一套代码对接 100+ 模型提供商
- 零代码迁移 – OpenAI 应用无需修改即可使用本地模型
- 企业级功能 – 密钥管理、速率限制、成本追踪
- 生产就绪 – 支持 Docker、K8s、负载均衡部署
对于需要频繁切换模型或同时使用多个模型提供商的团队,LiteLLM 是不可或缺的基础设施。
工具站推荐
TINYASH TOOL HUB
效率工具,一站直达
常用工具都在这里,打开即用 www.tinyash.com/tool
Markdown
图片处理
开发调试
效率工具