Files
homelab-wiki/services/litellm-gateway.md
T

3.3 KiB
Raw Blame History

title, lifecycle, evidence, last_reviewed, last_verified
title lifecycle evidence last_reviewed last_verified
LiteLLM 网关使用指南 unknown configuration 2026-09-16 null

LiteLLM gateway

为客户端提供模型 API 代理。维护者于 2026-09-16 表示没有需要补充的动态改动或退役事项; 本页依据 apps/litellm-gateway/docker-compose.ymlconfig.yaml 整理,不代表已验证运行状态。

接入参数

Compose 映射宿主 TCP 4000 到网关 4000,没有在这些文件中记录统一访问域名。 先由维护者提供实际 base URL、客户端认证要求及可用模型;不能把宿主端口自动当成公网入口。 网关客户端的认证与网关访问上游模型的认证是两层配置,不能把服务端认证文件交给消费者。

配置中的模型别名包括 chatgpt/gpt-5.4hf/google/embeddinggemma-300m 等, 分别面向聊天和 embedding;这里只表示路由声明,不保证上游账号有权限或模型当下可用。 完整别名以 config.yaml 为准。不要因名字含有 codex,就把这个网关与已退役的 codex-proxy 混为一体。

第一次聊天请求

在已获授权的客户端环境中,将 LITELLM_BASE_URL 设置为维护者提供的 API 根地址, LITELLM_MODEL 设置为获准使用的聊天模型别名。 如果该入口要求 Bearer key,通过既有秘密注入方式提供 LITELLM_API_KEY;是否需要 key 以实际接入约定为准。 下面使用 Python 标准库,token 不放在命令行中;请求会调用上游模型并消耗对应配额。

import json
import os
import urllib.request

base = os.environ["LITELLM_BASE_URL"].rstrip("/")
headers = {"Content-Type": "application/json"}
key = os.environ.get("LITELLM_API_KEY")
if key:
    headers["Authorization"] = "Bearer " + key
payload = {
    "model": os.environ["LITELLM_MODEL"],
    "messages": [{"role": "user", "content": "Reply with OK."}],
}
request = urllib.request.Request(
    base + "/chat/completions",
    data=json.dumps(payload).encode(),
    headers=headers,
    method="POST",
)
with urllib.request.urlopen(request, timeout=60) as response:
    result = json.load(response)
print(result["choices"][0]["message"]["content"])

预期收到模型回复。接口结构参考 LiteLLM 客户端文档, 本轮没有执行请求。该示例面向聊天模型,不能直接拿 embedding 模型替换。

依赖与排障

这套 Compose 包含独立的 PostgreSQL 16 和 Prometheus,数据库卷为 postgres_data 指标卷为 prometheus_data;这里的数据库不是集群共享 PostgreSQL。 Compose 还挂载配置文件及宿主 auth.json,后者属于上游认证材料,不进入 wiki、日志或 AI 上下文。 镜像配置使用 dev 标签,接入行为需与实际部署版本相符,不能仅凭最新上游文档认定功能已启用。

连接失败先核对宿主与端口;401/403 需区分网关认证和上游认证;模型错误先核对别名及上游权限; 超时或限额错误再检查上游响应。不要通过打印认证文件或完整带鉴权请求排障。 部署来源为 homelab-infra apps/litellm-gateway/;消费者清单与备份情况未在所读文件中记录。

来源文件的固定版本与工作区差异见来源追溯