一个基于 FastAPI 的 Qwen3 聊天 API 代理服务,支持多 Token 轮询、Docker 部署,并提供兼容 OpenAI 的接口。
注意:本项目使用
uv进行依赖管理,使用asdf进行 Python 版本管理。
- ✅ 兼容 OpenAI API 格式:可直接替换 OpenAI 客户端的 base_url
- ✅ 多 Token 轮询:支持配置多个 JWT Token,自动轮换使用避免限流
- ✅ Docker 支持:提供 Dockerfile 和 docker-compose.yml 一键部署
- ✅ 支持的模型:qwen3-235b-a22b、qwen3-coder-plus、qwen3-coder-30b-a3b-instruct
- ✅ 流式响应:支持 Server-Sent Events (SSE) 流式输出
- ✅ 自动会话管理:自动创建和管理 chat_id
- ✅ 深度思考模式:支持通过参数启用深度思考模式
# 安装 Python 插件(如果尚未安装)
asdf plugin add python
# 查看可用的 Python 版本
asdf list all python
# 安装项目所需的 Python 版本(替换 x.x.x 为具体版本号)
asdf install python x.x.x
# 设置项目 Python 版本
asdf set python x.x.x
# 验证 Python 版本
python --version# 创建并激活虚拟环境
uv venv -p $(asdf which python) .venv
source .venv/bin/activate
# 安装项目依赖
uv pip install -e .推荐使用 YAML 配置文件,更加清晰优雅:
-
复制配置文件模板:
cp config.example.yaml config.yaml
-
编辑
config.yaml文件,填入你的完整鉴权信息:qwen_token_groups: - token: "your_jwt_token_1" - token: "your_jwt_token_2" port: 8220
如果仍想使用环境变量配置,请参考 .env.example 文件。
python main.pydocker-compose up --build服务启动后,访问 http://localhost:8220/docs 查看 API 文档。
curl http://localhost:8220/v1/modelscurl -X POST http://localhost:8220/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_token" \
-d '{
"model": "qwen3-coder-plus",
"messages": [{"role": "user", "content": "你好"}]
}'# 方式1:使用 thinking_mode 参数(推荐)
curl -X POST http://localhost:8220/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_token" \
-d '{
"model": "qwen3-coder-plus",
"thinking_mode": {
"enabled": true
},
"messages": [{"role": "user", "content": "请深度思考这个问题"}]
}'
# 方式2:使用模型名称后缀-thinking
curl -X POST http://localhost:8220/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_token" \
-d '{
"model": "qwen3-coder-plus-thinking",
"messages": [{"role": "user", "content": "请深度思考这个问题"}]
}'curl -N -X POST http://localhost:8220/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_token" \
-d '{
"model": "qwen3-coder-plus-search",
"stream": true,
"messages": [{"role": "user", "content": "搜索最新AI新闻"}]
}'| 配置项 | 描述 | 默认值 |
|---|---|---|
qwen_token_groups |
Token组配置列表 | 必填 |
port |
服务端口 | 8220 |
qwen_source |
来源标识 | web |
qwen_timezone |
时区设置 | Asia/Shanghai |
| 变量名 | 描述 | 默认值 |
|---|---|---|
CONFIG_FILE |
YAML配置文件路径 | config.yaml |
QWEN_TOKEN_GROUPS |
Token组配置(格式:token) | 可选 |
QWEN_TOKENS |
JWT Token列表(逗号分隔,不推荐) | 可选 |
PORT |
服务端口 | 8220 |
QWEN_API_BASE_URL |
Qwen API基础URL | https://chat.qwen.ai |
QWEN_SOURCE |
来源标识 | web |
QWEN_TIMEZONE |
时区设置 | Asia/Shanghai |
- 访问 https://chat.qwen.ai
- 登录你的账号
- 打开浏览器开发者工具 (F12)
- 在 Network 面板中,找到任意 API 请求
- 复制以下值到
config.yaml文件中:- token: 从请求头的
Authorization中提取(去掉Bearer前缀)
- token: 从请求头的
qwen3api/
├── app/ # 应用代码
│ ├── __init__.py
│ ├── api.py # API 路由
│ ├── client.py # Qwen 客户端
│ └── config.py # 配置管理
├── tests/ # 测试代码
│ └── test_api.py
├── main.py # 主程序入口
├── Dockerfile # Docker 镜像构建文件
├── docker-compose.yml # Docker Compose 配置
├── pyproject.toml # 项目元数据和依赖配置
├── .python-version # asdf Python 版本配置
└── docs/ # 文档
└── Qwen_API_analysis.md # API 分析文档
确保已激活虚拟环境:
source .venv/bin/activateuv pip install -e ".[dev]"uvicorn main:app --reload --host 0.0.0.0 --port 8220# 运行测试
uv run pytest
# 代码格式化
uv run black .
uv run isort .
# 静态类型检查
uv run mypy .MIT License