轻量级、持久化、零配置的 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 |

