---
title: Qwen2API-A
emoji: 🚀
colorFrom: blue
colorTo: yellow
sdk: docker
pinned: false
---
## ✨ 本次重构亮点
当前仓库在保留原项目能力的基础上,已经完成一轮面向生产使用的管理后台重构与增强,重点集中在 **控制台体验**、**可观测性** 和 **Hugging Face 部署适配**。
#### 控制台界面预览
第一组:整体仪表盘与左侧导航布局
第二组:模型面板、日志面板与统计能力展示
第三组:控制台顶部状态栏与细节交互展示
### 新控制台能力
- 全站管理后台已重构为更统一的 **Vercel 风格控制台 UI**
- 仪表盘从顶部按钮区改为 **左侧导航 + 右侧内容区** 的控制台布局
- 顶部新增统一标题栏,支持:
- 项目标题 `Qwen2API Token Manager`
- 当前站点连接状态显示
- 自动读取当前服务 URL
- 一键刷新连接状态
- 一键退出登录
- 可用模型面板支持:
- 分类浏览
- 强度排序
- 推荐用途提示
- 模型 ID / 名称 / OpenAI 请求示例一键复制
- 系统设置已并入主控制台右侧区域,不再依赖独立页面跳转
### 新增运维与统计能力
- 新增 **日志查看面板**,支持:
- 刷新日志
- 自动刷新
- 下载日志
- 复制日志
- 清空日志
- 日志级别筛选
- 模块筛选
- 关键词搜索
- 最近 N 条查看
- 运行日志启用/关闭
- 自动滚动到底部
- 新增 **使用统计面板**,支持:
- 总请求数 / 成功数 / 失败数 / 总 Token / 成功率
- 今日请求 / 今日 Token
- 各模型请求统计
- 按总 Token 排序
- 按请求次数排序
- 仅看今天
- 仅看失败模型
- 模型关键字搜索
- 今日请求趋势图
- 今日 Token 趋势图
### 新增部署与数据能力
- 已适配 **Hugging Face Docker Space** 部署
- 已支持 **GitHub -> Hugging Face Space 自动同步**
- 已支持 **HF Bucket 持久化**:
- 启动时自动恢复数据
- 运行中自动同步数据
- 已支持:
- `DATA_DIR`
- `CACHE_DIR`
- `LOG_DIR`
这些目录级环境变量配置
### 文档说明
- 原始文档内容已完整保存在:`README.original.md`
- 当前 `README.md` 为增强版说明文档
- 原作者相关链接、技术参数、部署说明与 API 文档仍然保留
## 🛠️ 快速开始
### 项目说明
Qwen-Proxy 是一个将 `https://chat.qwen.ai` 和 `Qwen Code / Qwen Cli` 转换为 OpenAI 兼容 API 的代理服务。通过本项目,您只需要一个账户,即可以使用任何支持 OpenAI API 的客户端(如 ChatGPT-Next-Web、LobeChat 等)来调用 `https://chat.qwen.ai` 和 `Qwen Code / Qwen Cli`的各种模型。其中 `/cli` 端点下的模型由 `Qwen Code / Qwen Cli` 提供,支持256k上下文,原生 tools 参数支持
**主要特性:**
- 兼容 OpenAI API 格式,无缝对接各类客户端
- 支持多账户轮询,提高可用性
- 支持流式/非流式响应
- 支持多模态(图片识别、图片生成)
- 支持智能搜索、深度思考等高级功能
- 支持 CLI 端点,提供 256K 上下文和工具调用能力
- 提供 Web 管理界面,方便配置和监控
### ⚠️ 高并发说明
> **重要提示**: `chat.qwen.ai` 对单 IP 有限速策略,目前已知该限制与 Cookie 无关,仅与 IP 相关。
**解决方案:**
如需高并发使用,建议配合代理池实现 IP 轮换:
| 方案 | 配置方式 | 说明 |
|------|----------|------|
| **方案一** | `PROXY_URL` + [ProxyFlow](https://github.com/Rfym21/ProxyFlow) | 直接配置代理地址,所有请求通过代理池轮换 IP |
| **方案二** | `QWEN_CHAT_PROXY_URL` + [UrlProxy](https://github.com/Rfym21/UrlProxy) + [ProxyFlow](https://github.com/Rfym21/ProxyFlow) | 通过反代 + 代理池组合,实现更灵活的 IP 轮换 |
**配置示例:**
```bash
# 方案一:直接使用代理池
PROXY_URL=http://127.0.0.1:8282 # ProxyFlow 代理地址
# 方案二:反代 + 代理池组合
QWEN_CHAT_PROXY_URL=http://127.0.0.1:8000/qwen # UrlProxy 反代地址(UrlProxy 配置 HTTP_PROXY 指向 ProxyFlow)
```
### 环境要求
- Node.js 18+ (源码部署时需要)
- Docker (可选)
- Redis (可选,用于数据持久化)
### ⚙️ 环境配置
创建 `.env` 文件并配置以下参数:
```bash
# 🌐 服务配置
LISTEN_ADDRESS=localhost # 监听地址
SERVICE_PORT=3000 # 服务端口
# 🔐 安全配置
API_KEY=sk-123456,sk-456789 # API 密钥 (必填,支持多密钥)
ACCOUNTS= # 账户配置 (格式: user1:pass1,user2:pass2)
# 🚀 PM2 多进程配置
PM2_INSTANCES=1 # PM2进程数量 (1/数字/max)
PM2_MAX_MEMORY=1G # PM2内存限制 (100M/1G/2G等)
# 注意: PM2集群模式下所有进程共用同一个端口
# 🔍 功能配置
SEARCH_INFO_MODE=table # 搜索信息展示模式 (table/text)
OUTPUT_THINK=true # 是否输出思考过程 (true/false)
SIMPLE_MODEL_MAP=false # 简化模型映射 (true/false)
# 🌐 代理与反代配置
QWEN_CHAT_PROXY_URL= # 自定义 Chat API 反代URL (默认: https://chat.qwen.ai)
QWEN_CLI_PROXY_URL= # 自定义 CLI API 反代URL (默认: https://portal.qwen.ai)
PROXY_URL= # HTTP/HTTPS/SOCKS5 代理地址 (例如: http://127.0.0.1:7890)
# 🗄️ 数据存储
DATA_SAVE_MODE=none # 数据保存模式 (none/file/redis)
REDIS_URL= # Redis 连接地址 (可选,使用TLS时为rediss://)
# 📸 缓存配置
CACHE_MODE=default # 图片缓存模式 (default/file)
```
#### 📋 配置说明
| 参数 | 说明 | 示例 |
|------|------|------|
| `LISTEN_ADDRESS` | 服务监听地址 | `localhost` 或 `0.0.0.0` |
| `SERVICE_PORT` | 服务运行端口 | `3000` |
| `API_KEY` | API 访问密钥,支持多密钥配置。第一个为管理员密钥(可访问前端管理页面),其他为普通密钥(仅可调用API)。多个密钥用逗号分隔 | `sk-admin123,sk-user456,sk-user789` |
| `PM2_INSTANCES` | PM2进程数量 | `1`/`4`/`max` |
| `PM2_MAX_MEMORY` | PM2内存限制 | `100M`/`1G`/`2G` |
| `SEARCH_INFO_MODE` | 搜索结果展示格式 | `table` 或 `text` |
| `OUTPUT_THINK` | 是否显示 AI 思考过程 | `true` 或 `false` |
| `SIMPLE_MODEL_MAP` | 简化模型映射,只返回基础模型不包含变体 | `true` 或 `false` |
| `QWEN_CHAT_PROXY_URL` | 自定义 Chat API 反代地址 | `https://your-proxy.com` |
| `QWEN_CLI_PROXY_URL` | 自定义 CLI API 反代地址 | `https://your-cli-proxy.com` |
| `PROXY_URL` | 出站请求代理地址,支持 HTTP/HTTPS/SOCKS5 | `http://127.0.0.1:7890` |
| `DATA_SAVE_MODE` | 数据持久化方式 | `none`/`file`/`redis` |
| `REDIS_URL` | Redis 数据库连接地址,使用TLS加密时需使用 `rediss://` 协议 | `redis://localhost:6379` 或 `rediss://xxx.upstash.io` |
| `CACHE_MODE` | 图片缓存存储方式 | `default`/`file` |
| `LOG_LEVEL` | 日志级别 | `DEBUG`/`INFO`/`WARN`/`ERROR` |
| `ENABLE_FILE_LOG` | 是否启用文件日志 | `true` 或 `false` |
| `LOG_DIR` | 日志文件目录 | `./logs` |
| `MAX_LOG_FILE_SIZE` | 最大日志文件大小(MB) | `10` |
| `MAX_LOG_FILES` | 保留的日志文件数量 | `5` |
> 💡 **提示**: 可以在 [Upstash](https://upstash.com/) 免费创建 Redis 实例,使用 TLS 协议时地址格式为 `rediss://...`
#### 🔑 多API_KEY配置说明
`API_KEY` 环境变量支持配置多个API密钥,用于实现不同权限级别的访问控制:
**配置格式:**
```bash
# 单个密钥(管理员权限)
API_KEY=sk-admin123
# 多个密钥(第一个为管理员,其他为普通用户)
API_KEY=sk-admin123,sk-user456,sk-user789
```
**权限说明:**
| 密钥类型 | 权限范围 | 功能描述 |
|----------|----------|----------|
| **管理员密钥** | 完整权限 | • 访问前端管理页面
• 修改系统设置
• 调用所有API接口
• 添加/删除普通密钥 |
| **普通密钥** | API调用权限 | • 仅可调用API接口
• 无法访问前端管理页面
• 无法修改系统设置 |
**使用场景:**
- **团队协作**: 为不同团队成员分配不同权限的API密钥
- **应用集成**: 为第三方应用提供受限的API访问权限
- **安全隔离**: 将管理权限与普通使用权限分离
**注意事项:**
- 第一个API_KEY自动成为管理员密钥,拥有最高权限
- 管理员可以通过前端页面动态添加或删除普通密钥
- 所有密钥都可以正常调用API接口,权限差异仅体现在管理功能上
#### 📸 CACHE_MODE 缓存模式说明
`CACHE_MODE` 环境变量控制图片缓存的存储方式,用于优化图片上传和处理性能:
| 模式 | 说明 | 适用场景 |
|------|------|----------|
| `default` | 内存缓存模式 (默认) | 单进程部署,重启后缓存丢失 |
| `file` | 文件缓存模式 | 多进程部署,缓存持久化到 `./caches/` 目录 |
**推荐配置:**
- **单进程部署**: 使用 `CACHE_MODE=default`,性能最佳
- **多进程/集群部署**: 使用 `CACHE_MODE=file`,确保进程间缓存共享
- **Docker 部署**: 建议使用 `CACHE_MODE=file` 并挂载 `./caches` 目录
**文件缓存目录结构:**
```
caches/
├── [signature1].txt # 缓存文件,包含图片URL
├── [signature2].txt
└── ...
```
---
## 🚀 部署方式
### 🐳 Docker 部署
#### 方式一:直接运行
```bash
docker run -d \
-p 3000:3000 \
-e API_KEY=sk-admin123,sk-user456,sk-user789 \
-e DATA_SAVE_MODE=none \
-e CACHE_MODE=file \
-e ACCOUNTS= \
-v ./caches:/app/caches \
--name qwen2api \
rfym21/qwen2api:latest
```
#### 方式二:Docker Compose
```bash
# 下载配置文件
curl -o docker-compose.yml https://raw.githubusercontent.com/Rfym21/Qwen2API/refs/heads/main/docker/docker-compose.yml
# 启动服务
docker compose pull && docker compose up -d
```
### 📦 本地部署
```bash
# 克隆项目
git clone https://github.com/Rfym21/Qwen2API.git
cd Qwen2API
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件
# 智能启动 (推荐 - 自动判断单进程/多进程)
npm start
# 开发模式
npm run dev
```
### 🚀 PM2 多进程部署
使用 PM2 进行生产环境多进程部署,提供更好的性能和稳定性。
**重要说明**: PM2 集群模式下,所有进程共用同一个端口,PM2 会自动进行负载均衡。
### 🤖 智能启动模式
使用 `npm start` 可以自动判断启动方式:
- 当 `PM2_INSTANCES=1` 时,使用单进程模式
- 当 `PM2_INSTANCES>1` 时,使用 Node.js 集群模式
- 自动限制进程数不超过 CPU 核心数
### ☁️ Hugging Face 部署
推荐使用 **Docker Space + GitHub 自动同步** 的方式部署。这个项目本身已经提供 `docker/Dockerfile`,因此在 Hugging Face 上使用 Docker Space 是最稳妥的方案。
[](https://huggingface.co/spaces/devme/q2waepnilm)
#### 推荐部署方式
部署链路如下:
```text
本地修改代码 -> Push 到 GitHub main -> GitHub Actions 自动同步到 Hugging Face Space -> Hugging Face 自动重建并启动
```
#### 第一步:创建 Hugging Face Space
- 在 Hugging Face 新建 Space
- **SDK 请选择 `Docker`**
- Space 名称示例:`DanielleNguyen/Qwen2API-A`
#### 第二步:在 GitHub 配置自动同步变量
仓库中已提供自动同步工作流:`.github/workflows/huggingface-sync.yml`
请在 GitHub 仓库中配置以下内容:
**GitHub Actions Secrets:**
```bash
HF_TOKEN=你的_huggingface_token
```
**GitHub Actions Variables:**
```bash
HF_SPACE_ID=DanielleNguyen/Qwen2API-A
```
配置位置:`GitHub 仓库 -> Settings -> Secrets and variables -> Actions`
> ⚠️ 注意:`HF_TOKEN` 必须放在 `Secrets` 中,不要写入仓库文件,也不要提交到 `.env` 中。
#### 第三步:在 Hugging Face Space 配置运行时变量
进入:`Hugging Face Space -> Settings -> Variables and secrets`
如果你采用 **HF Bucket 持久化**,建议至少配置以下变量:
```bash
SERVICE_PORT=7860
LISTEN_ADDRESS=0.0.0.0
PM2_INSTANCES=1
PM2_MAX_MEMORY=4G
NODE_ENV=production
OUTPUT_THINK=true
SEARCH_INFO_MODE=table
SIMPLE_MODEL_MAP=false
DATA_SAVE_MODE=file
DATA_DIR=/data/qwen2api/data
CACHE_DIR=/data/qwen2api/caches
LOG_DIR=/data/qwen2api/logs
HF_BUCKET_REPO=DanielleNguyen/Qwen2API-A-Storage
HF_BUCKET_LOCAL_DIR=/data/qwen2api
HF_BUCKET_REMOTE_DIR=runtime
HF_BUCKET_SYNC_INTERVAL=300
LOG_LEVEL=INFO
ENABLE_FILE_LOG=false
CACHE_MODE=file
```
建议作为 Secret 配置的敏感项:
```bash
API_KEY=sk-admin-yourkey,sk-user-yourkey
HF_TOKEN=hf_xxx
HF_BUCKET_TOKEN=
REDIS_URL=
ACCOUNTS=
PROXY_URL=
QWEN_CHAT_PROXY_URL=
QWEN_CLI_PROXY_URL=
```
> 💡 项目中已提供 Hugging Face 示例模板:`.env.hf.example`
#### 第四步:HF Bucket 持久化工作方式
当前项目已适配如下持久化链路:
```text
容器启动 -> 从 HF Bucket 拉取 /data/qwen2api -> 应用用 file 模式读写本地文件 -> 后台定时同步回 HF Bucket
```
默认会持久化这些目录:
```bash
DATA_DIR=/data/qwen2api/data
CACHE_DIR=/data/qwen2api/caches
LOG_DIR=/data/qwen2api/logs
```
推荐的 Bucket 名称:
```bash
HF_BUCKET_REPO=DanielleNguyen/Qwen2API-A-Storage
```
#### 第五步:端口与监听地址说明
为兼容 Hugging Face Docker Space,推荐固定使用:
```bash
SERVICE_PORT=7860
LISTEN_ADDRESS=0.0.0.0
```
原因:
- `7860` 是 Hugging Face Space 常见服务端口
- `0.0.0.0` 可确保容器外部可以访问到服务
- 项目实际启动端口由环境变量 `SERVICE_PORT` 控制
#### 第六步:推送代码触发自动部署
当你推送代码到 `main` 分支后:
- GitHub Actions 会自动执行 `.github/workflows/huggingface-sync.yml`
- 自动将仓库代码同步到 Hugging Face Space
- Hugging Face 收到新代码后会自动重建容器并启动服务
#### 推荐的 Hugging Face 配置
如果你只是先跑通服务并启用 Bucket 持久化,建议使用:
```bash
SERVICE_PORT=7860
LISTEN_ADDRESS=0.0.0.0
PM2_INSTANCES=1
DATA_SAVE_MODE=file
CACHE_MODE=file
DATA_DIR=/data/qwen2api/data
CACHE_DIR=/data/qwen2api/caches
LOG_DIR=/data/qwen2api/logs
HF_BUCKET_REPO=DanielleNguyen/Qwen2API-A-Storage
ENABLE_FILE_LOG=false
```
如果你要让运行数据真正可恢复,请再补上 Secret:
```bash
HF_TOKEN=你的_huggingface_token
```
> Space 访问 Bucket 时可以直接使用 Hugging Face 账号 Token。若你希望和 GitHub Actions 用途隔离,也可以额外配置 `HF_BUCKET_TOKEN` 专供 Bucket 读写使用。
#### 常见问题
**1. 为什么不建议在仓库里提交真实 `.env`?**
因为 `API_KEY`、`HF_TOKEN`、`HF_BUCKET_TOKEN`、`REDIS_URL` 等都属于敏感信息,应该放在 GitHub Secrets 或 Hugging Face Secrets 中。
**2. 为什么推荐 Docker Space?**
因为本项目是完整的 Node.js 服务,并且已经自带 `docker/Dockerfile`,使用 Docker Space 可以直接复用现有构建和启动流程。
**3. 如果 GitHub 已经配置了 `HF_TOKEN` 和 `HF_SPACE_ID`,还需要在 HF 里配置它们吗?**
不需要。
- `HF_TOKEN` 和 `HF_SPACE_ID` 只用于 **GitHub -> Hugging Face 同步代码**
- Hugging Face Space 内只需要配置项目运行时环境变量,例如 `API_KEY`、`SERVICE_PORT`、`LISTEN_ADDRESS`
**4. Space 怎么和 Bucket 通信?一定要单独的 `HF_BUCKET_TOKEN` 吗?**
不一定。
- 在 Hugging Face Space 里,运行时可以直接使用你的 Hugging Face 账号 Token,即 `HF_TOKEN`
- 当前项目已兼容:优先读取 `HF_BUCKET_TOKEN`,如果没设置则自动回退到 `HF_TOKEN`
- 如果你想把“GitHub 同步代码”和“Space 访问 Bucket”分开控制,可以单独再配 `HF_BUCKET_TOKEN`
---
## 📁 项目结构
```
Qwen2API/
├── README.md
├── ecosystem.config.js # PM2配置文件
├── package.json
│
├── docker/ # Docker配置目录
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── docker-compose-redis.yml
│
├── caches/ # 缓存文件目录
├── data/ # 数据文件目录
│ ├── data.json
│ └── data_template.json
├── scripts/ # 脚本目录
│ └── fingerprint-injector.js # 浏览器指纹注入脚本
│
├── src/ # 后端源代码目录
│ ├── server.js # 主服务器文件
│ ├── start.js # 智能启动脚本 (自动判断单进程/多进程)
│ ├── config/
│ │ └── index.js # 配置文件
│ ├── controllers/ # 控制器目录
│ │ ├── chat.js # 聊天控制器
│ │ ├── chat.image.video.js # 图片/视频生成控制器
│ │ ├── cli.chat.js # CLI聊天控制器
│ │ └── models.js # 模型控制器
│ ├── middlewares/ # 中间件目录
│ │ ├── authorization.js # 授权中间件
│ │ └── chat-middleware.js # 聊天中间件
│ ├── models/ # 模型目录
│ │ └── models-map.js # 模型映射配置
│ ├── routes/ # 路由目录
│ │ ├── accounts.js # 账户路由
│ │ ├── chat.js # 聊天路由
│ │ ├── cli.chat.js # CLI聊天路由
│ │ ├── models.js # 模型路由
│ │ ├── settings.js # 设置路由
│ │ └── verify.js # 验证路由
│ └── utils/ # 工具函数目录
│ ├── account-rotator.js # 账户轮询器
│ ├── account.js # 账户管理
│ ├── chat-helpers.js # 聊天辅助函数
│ ├── cli.manager.js # CLI管理器
│ ├── cookie-generator.js # Cookie生成器
│ ├── data-persistence.js # 数据持久化
│ ├── fingerprint.js # 浏览器指纹生成
│ ├── img-caches.js # 图片缓存
│ ├── logger.js # 日志工具
│ ├── precise-tokenizer.js # 精确分词器
│ ├── proxy-helper.js # 代理辅助函数
│ ├── redis.js # Redis连接
│ ├── request.js # HTTP请求封装
│ ├── setting.js # 设置管理
│ ├── ssxmod-manager.js # ssxmod参数管理
│ ├── token-manager.js # Token管理器
│ ├── tools.js # 工具调用处理
│ └── upload.js # 文件上传
│
└── public/ # 前端项目目录
├── dist/ # 编译后的前端文件
│ ├── assets/ # 静态资源
│ ├── favicon.png
│ └── index.html
├── src/ # 前端源代码
│ ├── App.vue # 主应用组件
│ ├── main.js # 入口文件
│ ├── style.css # 全局样式
│ ├── assets/ # 静态资源
│ │ └── background.mp4
│ ├── routes/ # 路由配置
│ │ └── index.js
│ └── views/ # 页面组件
│ ├── auth.vue # 认证页面
│ ├── dashboard.vue # 仪表板页面
│ └── settings.vue # 设置页面
├── package.json # 前端依赖配置
├── package-lock.json
├── index.html # 前端入口HTML
├── postcss.config.js # PostCSS配置
├── tailwind.config.js # TailwindCSS配置
├── vite.config.js # Vite构建配置
└── public/ # 公共静态资源
└── favicon.png
```
## 📖 API 文档
### 🔐 API 认证说明
本API支持多密钥认证机制,所有API请求都需要在请求头中包含有效的API密钥:
```http
Authorization: Bearer sk-your-api-key
```
**支持的密钥类型:**
- **管理员密钥**: 第一个配置的API_KEY,拥有完整权限
- **普通密钥**: 其他配置的API_KEY,仅可调用API接口
**认证示例:**
```bash
# 使用管理员密钥
curl -H "Authorization: Bearer sk-admin123" http://localhost:3000/v1/models
# 使用普通密钥
curl -H "Authorization: Bearer sk-user456" http://localhost:3000/v1/chat/completions
```
### 🔍 获取模型列表
获取所有可用的 AI 模型列表。
```http
GET /v1/models
Authorization: Bearer sk-your-api-key
```
```http
GET /models (免认证)
```
**响应示例:**
```json
{
"object": "list",
"data": [
{
"id": "qwen-max-latest",
"object": "model",
"created": 1677610602,
"owned_by": "qwen"
}
]
}
```
### 💬 聊天对话
发送聊天消息并获取 AI 回复。
```http
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-your-api-key
```
**请求体:**
```json
{
"model": "qwen-max-latest",
"messages": [
{
"role": "system",
"content": "你是一个有用的助手。"
},
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
],
"stream": false,
"temperature": 0.7,
"max_tokens": 2000
}
```
**响应示例:**
```json
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "qwen-max-latest",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是一个AI助手..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 50,
"total_tokens": 70
}
}
```
### 🎨 图像生成/编辑
使用 `-image` 模型启用文本到图像生成功能。
使用 `-image-edit` 模型启用图像修改功能。
当使用 `-image` 模型时你可以通过在请求体中添加 `size` 参数或在消息内容中包含特定关键词 `1:1`, `4:3`, `3:4`, `16:9`, `9:16` 来控制图片尺寸。
```http
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-your-api-key
```
**请求体:**
```json
{
"model": "qwen-max-latest-image",
"messages": [
{
"role": "user",
"content": "画一只在花园里玩耍的小猫咪,卡通风格"
}
],
"size": "1:1",
"stream": false
}
```
**支持的参数:**
- `size`: 图片尺寸,支持 `"1:1"`、`"4:3"`、`"3:4"`、`"16:9"`、`"9:16"`
- `stream`: 支持流式和非流式响应
**响应示例:**
```json
{
"created": 1677652288,
"model": "qwen-max-latest",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": ""
},
"finish_reason": "stop"
}
]
}
```
### 🎯 高级功能
#### 🔍 智能搜索模式
在模型名称后添加 `-search` 后缀启用搜索功能:
```json
{
"model": "qwen-max-latest-search",
"messages": [...]
}
```
#### 🧠 推理模式
在模型名称后添加 `-thinking` 后缀启用思考过程输出:
```json
{
"model": "qwen-max-latest-thinking",
"messages": [...]
}
```
#### 🔍🧠 组合模式
同时启用搜索和推理功能:
```json
{
"model": "qwen-max-latest-thinking-search",
"messages": [...]
}
```
#### 🎨 T2I 生图模式
通过设置 `chat_type` 参数为 `t2i` 启用文本到图像生成功能:
```json
{
"model": "qwen-max-latest",
"chat_type": "t2i",
"messages": [
{
"role": "user",
"content": "画一只可爱的小猫咪"
}
],
"size": "1:1"
}
```
**支持的图片尺寸:** `1:1`、`4:3`、`3:4`、`16:9`、`9:16`
**智能尺寸识别:** 系统会自动从提示词中识别尺寸关键词并设置对应尺寸
#### 🖼️ 多模态支持
API 自动处理图像上传,支持在对话中发送图片:
```json
{
"model": "qwen-max-latest",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片里有什么?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,..."
}
}
]
}
]
}
```
### 🖥️ CLI 端点
CLI 端点使用 Qwen Code / Qwen Cli 的 OAuth 令牌访问,支持 256K 上下文和工具调用(Function Calling)。
**支持的模型:**
| 模型 ID | 说明 |
|---------|------|
| `qwen3-coder-plus` | Qwen3 Coder Plus |
| `qwen3-coder-flash` | Qwen3 Coder Flash(速度更快) |
| `coder-model` | Qwen 3.5 Plus(带思维链,256K 上下文) |
| `qwen3.5-plus` | `coder-model` 的别名,自动重定向 |
#### 💬 CLI 聊天对话
通过 CLI 端点发送聊天请求,支持流式和非流式响应。
```http
POST /cli/v1/chat/completions
Content-Type: application/json
Authorization: Bearer API_KEY
```
**请求体:**
```json
{
"model": "qwen3-coder-plus",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
],
"stream": false,
"temperature": 0.7,
"max_tokens": 2000
}
```
使用 `coder-model`(即 Qwen 3.5 Plus)或其别名 `qwen3.5-plus`:
```json
{
"model": "coder-model",
"messages": [
{
"role": "user",
"content": "写一个快速排序算法。"
}
],
"stream": false
}
```
**流式请求:**
```json
{
"model": "qwen3-coder-flash",
"messages": [
{
"role": "user",
"content": "写一首关于春天的诗。"
}
],
"stream": true
}
```
**响应格式:**
非流式响应与标准 OpenAI API 格式相同:
```json
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "qwen3-coder-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是一个AI助手..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 50,
"total_tokens": 70
}
}
```
流式响应使用 Server-Sent Events (SSE) 格式:
```
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"qwen3-coder-flash","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"qwen3-coder-flash","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: [DONE]
```