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 密钥。
  • 负载均衡 – 三种模式:
    1. 按渠道加权均衡。
    2. 按渠道轮询(顺序)均衡。
    3. 在渠道内的多个 API 密钥之间自动轮询。
  • 自动重试与冷却 – 如果后端返回错误,请求将在下一个渠道上重试;失败的渠道将暂时“冷却”并被排除,直到冷却期结束。
  • 细粒度超时 – 为每个模型设置不同的请求超时。
  • 权限与速率限制控制 – 每个 API 密钥的模型白名单、通配符模式以及可配置的请求上限(例如 2/min、5/hour)。
  • 工具和图像支持 – 对于支持它们的提供商(Anthropic、Gemini、Vertex 等),原生传递工具调用和图像生成端点。
  • 内容审核 – 可选的 OpenAI 风格内容审核,可在用户消息到达后端之前阻止不允许的内容。
  • 自定义请求调整 – 每个模型的请求体字段覆盖、头部注入、代理设置和最大负载大小。

如何运行

  1. 准备 api.yaml – 列出您的提供商、其基础 URL、API 密钥以及您想暴露的模型。README 中包含一个最小示例和一个非常详细的进阶示例。
  2. 部署 – 任选其一:
    • 将文件挂载到 Docker 容器中作为 api.yaml,或
    • 设置 CONFIG_URL 指向远程 YAML 文件;容器将在启动时下载它。
  3. 启动容器 – 镜像已发布在 Docker Hub(yym68686/uni-api)上。提供了一键“部署到 Fugue”按钮,方便快速云部署。
  4. 使用 API – 使用您在 api_keys 部分定义的任何 API 密钥,调用主机上的常规 OpenAI 端点(例如 http://localhost:8000/v1/chat/completions)。

适用人群

  • 希望拥有个人“代理”来聚合多个付费 LLM 服务而无需构建自定义 UI 的个人或小团队。
  • 需要在尝试不同提供商或回退策略时保持一致的 OpenAI 兼容接口的开发人员。
  • 任何希望使用简单的基于 YAML 的配置来实现负载均衡、速率限制和模型特定调整的人。

链接


以上所有细节均直接取自仓库的 README;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目