yym68686/uni-api
This is a project that unifies the management of LLM APIs. It can call multiple backend services through a unified API interface, convert them to the OpenAI format uniformly, and support load balancing. Currently supported backend services include: OpenAI, Anthropic, DeepBricks, OpenRouter, Gemini, Vertex, etc.
uni‑api – 一个统一的、自托管的网关,支持多种 LLM 提供商
它是什么
- 一个开源服务器,暴露标准的 OpenAI HTTP 端点(例如
/v1/chat/completions、/v1/images/generations、/v1/embeddings等),但将请求转发到可配置的后端 LLM 服务列表。 - 它允许您运行单一 API 表面,同时混合搭配提供商,如 OpenAI、Anthropic、Gemini、Vertex AI、Azure、AWS Bedrock、Cohere、Groq、Cloudflare Workers AI、OpenRouter 等。
- 所有配置均通过纯
api.yaml文件(或CONFIG_URL中提供的 URL)完成,因此无需单独的 UI。
关键功能
- 提供商无关的路由 – 将任何 OpenAI 风格的请求映射到适当的后端 URL 和 API 密钥。
- 负载均衡 – 三种模式:
- 按渠道加权均衡。
- 按渠道轮询(顺序)均衡。
- 在渠道内的多个 API 密钥之间自动轮询。
- 自动重试与冷却 – 如果后端返回错误,请求将在下一个渠道上重试;失败的渠道将暂时“冷却”并被排除,直到冷却期结束。
- 细粒度超时 – 为每个模型设置不同的请求超时。
- 权限与速率限制控制 – 每个 API 密钥的模型白名单、通配符模式以及可配置的请求上限(例如
2/min、5/hour)。 - 工具和图像支持 – 对于支持它们的提供商(Anthropic、Gemini、Vertex 等),原生传递工具调用和图像生成端点。
- 内容审核 – 可选的 OpenAI 风格内容审核,可在用户消息到达后端之前阻止不允许的内容。
- 自定义请求调整 – 每个模型的请求体字段覆盖、头部注入、代理设置和最大负载大小。
如何运行
- 准备
api.yaml– 列出您的提供商、其基础 URL、API 密钥以及您想暴露的模型。README 中包含一个最小示例和一个非常详细的进阶示例。 - 部署 – 任选其一:
- 将文件挂载到 Docker 容器中作为
api.yaml,或 - 设置
CONFIG_URL指向远程 YAML 文件;容器将在启动时下载它。
- 将文件挂载到 Docker 容器中作为
- 启动容器 – 镜像已发布在 Docker Hub(
yym68686/uni-api)上。提供了一键“部署到 Fugue”按钮,方便快速云部署。 - 使用 API – 使用您在
api_keys部分定义的任何 API 密钥,调用主机上的常规 OpenAI 端点(例如http://localhost:8000/v1/chat/completions)。
适用人群
- 希望拥有个人“代理”来聚合多个付费 LLM 服务而无需构建自定义 UI 的个人或小团队。
- 需要在尝试不同提供商或回退策略时保持一致的 OpenAI 兼容接口的开发人员。
- 任何希望使用简单的基于 YAML 的配置来实现负载均衡、速率限制和模型特定调整的人。
链接
- Telegram 讨论组:https://t.me/uni_api
- Docker Hub 页面(拉取次数、标签):https://hub.docker.com/repository/docker/yym68686/uni-api
- 一键部署:https://fugue.pro/new/repository?repository-url=https%3A%2F%2Fgithub.com%2Fyym68686%2Funi-api
以上所有细节均直接取自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目