openai-router
Project description
🚀 OpenAI Router
轻量级、持久化、零配置的 OpenAI API 统一网关
一键聚合 vLLM、SGLang、lmdeploy、Ollama…
- 将不同推理框架(vLLM、SGLang、lmdeploy、Ollama… )、不同
Host、不同Port的OpenAIAPI接口统一聚合到同一个base_url上,实现更便捷的模型调用。
✨ Features
| Feature | Description |
|---|---|
| 🌍 统一入口 | /chat/completions、/embeddings、/images/generations… 全部转发 |
| 🧩 多后端 | vLLM、SGLang、lmdeploy、Ollama… 任意组合 |
| 💾 持久化 | SQLite + SQLModel 零配置存储路由 |
| ⚡ 负载均衡 | 可配置多个同名模型,自动进行轮询式负载均衡(暂不支持异常踢出机制) |
| 🎨 Web UI | Gradio 即用的管理面板 |
| 🔍 兼容 OpenAI | SDK / LangChain / AutoGen / LlamaIndex / CrewAI …等 一行代码都不用改 |
📦 Quick Start
Step-1:安装
PyPI(推荐)
uv add openai-router -U
或者
pip install openai-router -U
Step-2:启动
openai-router --host localhost --port 8000
浏览器自动打开
📍 UI:http://localhost:8000
📍 API 文档:http://localhost:8000/docs
Step-3:添加后端样例
在 Web UI 「添加 / 更新」填入:
- 模型名:
gpt-4 - 后端 URL:
http://localhost:8082/v1 - 后端 API 密钥 (可选) : 如果提供,路由器将使用此密钥覆盖原始请求中的 Authorization 标头。如果留空,将透传原始请求的密钥。
🔧 API Usage
像官方 OpenAI SDK一样调用
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}'
🗂️ Endpoints
| 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 |
⚙️ Configuration
CLI Options
openai-router --help
| Flag | Default | Description |
|---|---|---|
--host |
localhost |
Bind address |
--port |
8000 |
Bind port |
🏗️ Architecture
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openai_router-0.1.3.tar.gz.
File metadata
- Download URL: openai_router-0.1.3.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b08e125f2147a61d24aa148fb71ed72df9c57b171ab5ca7714199074294ead5
|
|
| MD5 |
fefb73a32f1d4ce79b6fc9128f3b13c2
|
|
| BLAKE2b-256 |
2a1df55bc1bdc7c66424dbb93bf035fdacf99721ccb900487ce37e7f4d4bd146
|
Provenance
The following attestation bundles were made for openai_router-0.1.3.tar.gz:
Publisher:
pypi.yml on shell-nlp/openai_router
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openai_router-0.1.3.tar.gz -
Subject digest:
1b08e125f2147a61d24aa148fb71ed72df9c57b171ab5ca7714199074294ead5 - Sigstore transparency entry: 675991764
- Sigstore integration time:
-
Permalink:
shell-nlp/openai_router@e55e507e99ca648271cc1f3d7eda31a17b0a6a9a -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/shell-nlp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@e55e507e99ca648271cc1f3d7eda31a17b0a6a9a -
Trigger Event:
push
-
Statement type:
File details
Details for the file openai_router-0.1.3-py3-none-any.whl.
File metadata
- Download URL: openai_router-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0c550027ff2e48de284aa48ab3758dc6add6811841ae0c877015964f75d8299
|
|
| MD5 |
a5857967813a012999cad77e461fe959
|
|
| BLAKE2b-256 |
e062e1514e9618a1e527589e689dd755f1e851eac773392ccce60830ca7b922f
|
Provenance
The following attestation bundles were made for openai_router-0.1.3-py3-none-any.whl:
Publisher:
pypi.yml on shell-nlp/openai_router
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openai_router-0.1.3-py3-none-any.whl -
Subject digest:
b0c550027ff2e48de284aa48ab3758dc6add6811841ae0c877015964f75d8299 - Sigstore transparency entry: 675991770
- Sigstore integration time:
-
Permalink:
shell-nlp/openai_router@e55e507e99ca648271cc1f3d7eda31a17b0a6a9a -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/shell-nlp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@e55e507e99ca648271cc1f3d7eda31a17b0a6a9a -
Trigger Event:
push
-
Statement type: