轻量级、持久化、零配置的 OpenAI API 统一网关
一键聚合 vLLM、SGLang、lmdeploy、Ollama…
- 将不同推理框架(vLLM、SGLang、lmdeploy、Ollama… )、不同
Host、不同Port的OpenAIAPI接口统一聚合到同一个base_url上,实现更便捷的模型调用。
| Feature | Description |
|---|---|
| 🌍 统一入口 | /chat/completions、/embeddings、/images/generations… 全部转发 |
| 🧩 多后端 | vLLM、SGLang、lmdeploy、Ollama… 任意组合 |
| 💾 持久化 | SQLite + SQLModel 零配置存储路由 |
| ⚡ 负载均衡 | 可配置多个同名模型,自动进行轮询式负载均衡(暂不支持异常踢出机制) |
| 🎨 Web UI | Gradio 即用的管理面板 |
| 🔍 兼容 OpenAI | SDK / LangChain / AutoGen / LlamaIndex / CrewAI …等 一行代码都不用改 |
uv add openai-router -U或者
pip install openai-router -Uopenai-router --host localhost --port 8000 浏览器自动打开
📍 UI:http://localhost:8000
📍 API 文档:http://localhost:8000/docs
在 Web UI 「添加 / 更新」填入:
- 模型名:
gpt-4 - 后端 URL:
http://localhost:8082/v1 - 后端 API 密钥 (可选) : 如果提供,路由器将使用此密钥覆盖原始请求中的 Authorization 标头。如果留空,将透传原始请求的密钥。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="sk-dummy"
)
resp = client.chat.completions.create(
model="gpt-4",
messages=[{"role":"user","content":"hello"}],
stream=True
)
for chunk in resp:
print(chunk.choices[0].delta.content or "", end="")cURL
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4","messages":[{"role":"user","content":"hi"}],"stream":true}'| Method | Path | Description |
|---|---|---|
GET |
/ |
Gradio Admin UI |
GET |
/docs |
OpenAPI Swagger |
GET |
/v1/models |
List available models |
POST |
/v1/responses |
Responses API |
POST |
/v1/chat/completions |
Chat completion |
POST |
/v1/embeddings |
Text embeddings |
POST |
/v1/images/generations |
DALL·E style |
POST |
/v1/audio/transcriptions |
Whisper |
| … | … | All OpenAI endpoints supported |
CLI Options
openai-router --help | Flag | Default | Description |
|---|---|---|
--host |
localhost |
Bind address |
--port |
8000 |
Bind port |

