🚀 Qwen Code API Server - 基于FastAPI的Qwen模型API服务器,完全兼容OpenAI API格式
English Version | 中文版本
- 🔐 密码保护访问 - 支持环境变量配置的访问控制
- 🔑 OAuth设备码授权 - 一键获取和刷新Token
- 💬 OpenAI兼容API - 100%兼容OpenAI客户端
- 🔄 自动Token管理 - 智能Token刷新和状态监控
- 📊 实时用量统计 - 按日期统计API调用量
- 🐳 Docker化部署 - 支持Docker和Docker Compose
- 🌐 Web管理界面 - 直观的Token管理界面
- 🏗️ 模块化架构 - 清晰的代码结构,易于扩展
- 📈 性能优化 - 流式响应去重,减少带宽消耗
# 克隆项目 git clone https://github.com/Water008/QwenAPI.git cd QwenAPI # 一键启动(自动创建虚拟环境) ./run.sh # Linux/macOS run.bat # Windows
# 使用Docker Compose(推荐) docker-compose up -d # 或使用Docker命令 docker run -d \ --name qwen-api \ -p 8000:8000 \ -e API_PASSWORD=your_secure_password \ -v $(pwd)/data:/app/data \ ghcr.io/water008/qwenapi:latest
# 创建虚拟环境 python3 -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 启动服务 uvicorn src.main:app --host 0.0.0.0 --port 8000
创建 .env 文件(推荐):
cp .env.example .env
编辑 .env 文件:
# 服务器配置 PORT=8000 # 服务端口 HOST=0.0.0.0 # 监听地址 API_PASSWORD=qwen123 # 访问密码(务必修改) DATABASE_URL=data/tokens.db # 数据库路径 DEBUG=false # 调试模式 # Qwen API配置 QWEN_API_ENDPOINT=https://portal.qwen.ai/v1/chat/completions QWEN_OAUTH_BASE_URL=https://chat.qwen.ai QWEN_OAUTH_CLIENT_ID=f0304373b74a44d2b584a3fb70ca9e56 QWEN_OAUTH_SCOPE=openid profile email model.completion # 自动刷新配置(秒,默认4小时=14400秒) TOKEN_REFRESH_INTERVAL=14400
访问 http://localhost:8000,输入配置的密码登录。
方式A:OAuth授权(推荐)
- 点击"OAuth登录获取Token"
- 扫描二维码或访问链接完成授权
- 系统自动保存Token
方式B:手动上传
- 准备oauth_creds.json文件
- 在Web界面上传文件
- 系统自动解析并保存
import openai client = openai.OpenAI( api_key="yourpassword", base_url="http://localhost:8000/v1" ) # 聊天对话 response = client.chat.completions.create( model="qwen3-coder-plus", messages=[ {"role": "user", "content": "请写一个Python快速排序算法"} ] ) print(response.choices[0].message.content) # 流式输出 response = client.chat.completions.create( model="qwen3-coder-plus", messages=[{"role": "user", "content": "讲个笑话"}], stream=True ) for chunk in response: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="")
# 获取Token状态 curl -X GET http://localhost:8000/api/token-status \ -H "Authorization: Bearer yourpassword" # 聊天API curl -X POST http://localhost:8000/api/chat \ -H "Content-Type: application/json" \ -H "Authorization: Bearer yourpassword" \ -d '{ "messages": [{"role": "user", "content": "你好"}], "model": "qwen3-coder-plus" }' # 流式聊天 curl -X POST http://localhost:8000/api/chat \ -H "Content-Type: application/json" \ -H "Authorization: Bearer yourpassword" \ -d '{ "messages": [{"role": "user", "content": "你好"}], "model": "qwen3-coder-plus", "stream": true }'
| 端点 | 方法 | 描述 |
|---|---|---|
/v1/chat/completions |
POST | 聊天完成 |
/v1/models |
GET | 获取模型列表 |
| 端点 | 方法 | 描述 |
|---|---|---|
/api/login |
POST | 用户登录 |
/api/upload-token |
POST | 上传Token |
/api/token-status |
GET | Token状态 |
/api/refresh-token |
POST | 刷新所有Token |
/api/chat |
POST | 聊天API |
/api/health |
GET | 健康检查 |
/api/metrics |
GET | 性能指标 |
# 直接运行预构建镜像 docker run -d \ --name qwen-api \ -p 8000:8000 \ -e API_PASSWORD=your_secure_password \ -v $(pwd)/data:/app/data \ ghcr.io/water008/qwenapi:latest # 使用Docker Compose docker-compose up -d
# 本地构建镜像 docker build -t qwen-api . # 运行本地构建的镜像 docker run -d \ --name qwen-api \ -p 8000:8000 \ -e API_PASSWORD=yourpassword \ -v $(pwd)/data:/app/data \ qwen-api
QwenAPI/
├── src/
│ ├── main.py # 主应用入口
│ ├── api/ # API路由
│ ├── auth/ # 认证模块
│ ├── config/ # 配置管理
│ ├── database/ # 数据库操作
│ ├── models/ # 数据模型
│ ├── oauth/ # OAuth认证
│ ├── utils/ # 工具函数
│ └── web/ # Web界面
├── static/ # 静态资源
├── templates/ # HTML模板
├── data/ # 数据存储
├── requirements.txt # 依赖列表
├── Dockerfile # Docker配置
├── docker-compose.yml # Docker Compose配置
├── run.sh # Linux启动脚本
├── run.bat # Windows启动脚本
└── .env.example # 环境变量示例
# 安装开发依赖 pip install -r requirements.txt # 运行开发服务器 uvicorn src.main:app --reload --host 0.0.0.0 --port 8000 # 代码检查 find src -name "*.py" -exec python -m py_compile {} \;
- 安全第一:务必修改默认密码
- 数据备份:定期备份
data/tokens.db数据库 - 环境隔离:生产环境使用Docker部署
- 日志监控:关注应用日志和性能指标
- Token安全:Token信息加密存储,勿泄露
- Fork本项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
本项目采用 MIT 许可证
- Issues: GitHub Issues
- Discussions: GitHub Discussions
⭐ 如果这个项目对你有帮助,请给个Star支持一下!