2024年8月4日 3 分钟阅读

使用 LiteLLM 将本地 Ollama 代理成 OpenAI API

tinyash 0 条评论
tianyuan min

发布日期:2024 年 8 月 4 日 最后更新:2026 年 3 月 8 日

简介

LiteLLM 是一个轻量级的 LLM 网关工具,可以将本地运行的 Ollama 模型(以及其他 100+ 大模型提供商)统一代理成 OpenAI 兼容 API 格式。这使得大量依赖 OpenAI API 标准的应用程序(如 ChatDev、AutoGen、LangChain 等)能够无缝切换使用本地大模型,无需修改代码。

为什么需要 LiteLLM 而不是直接调用 Ollama?

特性直接调用 OllamaLiteLLM 代理
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_baseOllama 服务地址
--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 refusedOllama 未启动运行 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 网关的核心价值在于:

  1. 统一接口 – 一套代码对接 100+ 模型提供商
  2. 零代码迁移 – OpenAI 应用无需修改即可使用本地模型
  3. 企业级功能 – 密钥管理、速率限制、成本追踪
  4. 生产就绪 – 支持 Docker、K8s、负载均衡部署

对于需要频繁切换模型或同时使用多个模型提供商的团队,LiteLLM 是不可或缺的基础设施。

精选推荐 RECOMMEND
阿里云
前往领券

☁️ 阿里云新客专享

🎁 新用户 8 折优惠,云服务器、建站套餐都能省一笔

新用户专享,个人建站从这里开始

腾讯云
点击查看

🚀 腾讯云活动专区

💻 4核4G服务器新客 38元/年起,香港地域低至 6.5 折/月

活动价格以官网为准

🙋 AI焕新季,马上用千问

🧩 AI 大模型入门套餐首购低至 4.5 折

领1728元礼包

阿里云
领养龙虾

🦞 OpenClaw

⚡ 分钟级部署 OpenClaw,低至 68 元 1 年,专属你的 AI 管家

自动帮你干活,适合个人和团队

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。

工具站推荐 TINYASH TOOL HUB

效率工具,一站直达

常用工具都在这里,打开即用 www.tinyash.com/tool

Markdown 图片处理 开发调试 效率工具