LiteLLM 免费开源自托管,多平台密钥统一为 OpenAI 兼容接口
免费额度
开源免费,自行部署后额度取决于所接入的上游模型服务
注意事项
教程
LiteLLM 是开源项目,没有「注册领额度」这一环,它的额度来自你在配置里填写的各家上游模型服务。下面从零把本地代理跑通。
- 从官网进入文档。打开
https://litellm.ai/,点导航里的文档入口进入快速开始页,或跳到 GitHub 仓库按说明操作。全程不需要注册账号,也不需要实名认证或绑定银行卡。 - 安装代理组件。准备 Python 3.9 及以上环境,安装带代理功能的版本:
pip install 'litellm[proxy]' - 写配置文件登记上游密钥。新建
config.yaml,按「模型别名 + 供应商前缀」的写法把各家 key 登记进去,密钥建议走环境变量,别写死在文件里:model_list: - model_name: gpt-4o-mini litellm_params: model: openai/gpt-4o-mini api_key: os.environ/OPENAI_API_KEY - model_name: claude-3-5-haiku litellm_params: model: anthropic/claude-3-5-haiku-20241022 api_key: os.environ/ANTHROPIC_API_KEY general_settings: master_key: sk-1234 - 启动服务并确认端口。默认监听 4000 端口,对外暴露 OpenAI 兼容接口,启动命令如下:
启动后浏览器打开litellm --config config.yaml --port 4000http://localhost:4000/ui可进入管理页,查看已登记的模型和每次调用的记录。 - 核对额度与有效期。代理本身不发放额度,实际可用量取决于所接入上游服务的免费配额,用量可同时在本站管理页和各家上游控制台查看,具体额度与重置时间以控制台实际显示为准。
下面是该平台的产品概览图,部署完成后对应的管理页会展示模型列表与调用日志,可以对照着确认服务是否正常。

常见坑:一是 yaml 缩进写错导致启动即报错;二是 model_name 与实际调用的模型名不一致;三是密钥写进配置文件后又提交到公开仓库;四是部署在云服务器却忘了放通 4000 端口,本机 curl 能通、外网不通。
服务跑起来后,任何兼容 OpenAI 的 SDK 只要把 base_url 指向本机代理即可。地址形如 http://localhost:4000,带版本号写 http://localhost:4000/v1;远程调用把 localhost 换成服务器 IP,并确认端口已放通。
模型名就是你写在 config.yaml 里 model_name 字段的别名;不确定有哪些可用模型时,先请求 http://localhost:4000/v1/models 列出全部。上游前缀写法(如 openai/、anthropic/)可在官方文档的供应商页面查到。
先看一条最小可用的 curl 调用,注意请求头里的 Bearer 值就是配置中的 master key:
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "user", "content": "用一句话解释什么是统一代理"}
],
"temperature": 0.7,
"max_tokens": 256,
"stream": false
}'关键参数说明:model 填配置里的模型别名;messages 是对话数组,role 取 user、assistant、system;temperature 控制随机程度;max_tokens 限制回答长度;stream 为 true 时按流式分块返回。
用 Python 官方 SDK 时,只需改两个参数,其余代码与直连官方接口完全一致:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:4000/v1",
api_key="sk-1234",
)
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "你好"}],
temperature=0.7,
max_tokens=256,
)
print(resp.choices[0].message.content)想不改代码就全局切换,也可以直接设环境变量,让已有的脚本自动走代理:
export OPENAI_BASE_URL="http://localhost:4000/v1"
export OPENAI_API_KEY="sk-1234"额度耗尽与限流的排查顺序
- 先看返回码。401 多为请求头里的 key 与 master key 不一致;404 多为 base_url 少了
/v1,或模型别名拼错;429 多为上游免费额度用尽、并发过高或触发速率限制。 - 再看返回体与代理日志。错误通常会把上游原文透传出来,流式请求的典型表现是回答中途断开,此时切回非流式复现一次更容易看清报错。
- 到对应上游控制台核对余额、速率上限和重置时间,具体数值以控制台实际显示为准。
- 检查该模型对应的环境变量是否在启动进程之前导出,容器里尤其容易漏;改完配置需重启服务才生效。
- 若仍无解,把请求临时切到另一家供应商的模型别名,能通说明代理正常、问题在上游账号。
这个还能用吗?点一下告诉我们
只能从下方固定选项中选择,无法自由输入,避免垃圾信息与安全隐患。
留言区 0
真实访客可自由留言,提交后先经内容安全审核(本地 + 可选远程 API)再展示;违规内容会被拦截,不会出现在此处。示例留言均带「示例」标识,不冒充真实用户。