Spaces:
Running
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_DIRCACHE_DIRLOG_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 |
直接配置代理地址,所有请求通过代理池轮换 IP |
| 方案二 | QWEN_CHAT_PROXY_URL + UrlProxy + ProxyFlow |
通过反代 + 代理池组合,实现更灵活的 IP 轮换 |
配置示例:
# 方案一:直接使用代理池
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 文件并配置以下参数:
# 🌐 服务配置
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 免费创建 Redis 实例,使用 TLS 协议时地址格式为
rediss://...
🔑 多API_KEY配置说明
API_KEY 环境变量支持配置多个API密钥,用于实现不同权限级别的访问控制:
配置格式:
# 单个密钥(管理员权限)
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 部署
方式一:直接运行
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
# 下载配置文件
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
📦 本地部署
# 克隆项目
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 是最稳妥的方案。
推荐部署方式
部署链路如下:
本地修改代码 -> 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:
HF_TOKEN=你的_huggingface_token
GitHub Actions Variables:
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 持久化,建议至少配置以下变量:
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 配置的敏感项:
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 持久化工作方式
当前项目已适配如下持久化链路:
容器启动 -> 从 HF Bucket 拉取 /data/qwen2api -> 应用用 file 模式读写本地文件 -> 后台定时同步回 HF Bucket
默认会持久化这些目录:
DATA_DIR=/data/qwen2api/data
CACHE_DIR=/data/qwen2api/caches
LOG_DIR=/data/qwen2api/logs
推荐的 Bucket 名称:
HF_BUCKET_REPO=DanielleNguyen/Qwen2API-A-Storage
第五步:端口与监听地址说明
为兼容 Hugging Face Docker Space,推荐固定使用:
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 持久化,建议使用:
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:
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密钥:
Authorization: Bearer sk-your-api-key
支持的密钥类型:
- 管理员密钥: 第一个配置的API_KEY,拥有完整权限
- 普通密钥: 其他配置的API_KEY,仅可调用API接口
认证示例:
# 使用管理员密钥
curl -H "Authorization: Bearer sk-admin123" http://localhost:3000/v1/models
# 使用普通密钥
curl -H "Authorization: Bearer sk-user456" http://localhost:3000/v1/chat/completions
🔍 获取模型列表
获取所有可用的 AI 模型列表。
GET /v1/models
Authorization: Bearer sk-your-api-key
GET /models (免认证)
响应示例:
{
"object": "list",
"data": [
{
"id": "qwen-max-latest",
"object": "model",
"created": 1677610602,
"owned_by": "qwen"
}
]
}
💬 聊天对话
发送聊天消息并获取 AI 回复。
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-your-api-key
请求体:
{
"model": "qwen-max-latest",
"messages": [
{
"role": "system",
"content": "你是一个有用的助手。"
},
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
],
"stream": false,
"temperature": 0.7,
"max_tokens": 2000
}
响应示例:
{
"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 来控制图片尺寸。
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-your-api-key
请求体:
{
"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: 支持流式和非流式响应
响应示例:
{
"created": 1677652288,
"model": "qwen-max-latest",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": ""
},
"finish_reason": "stop"
}
]
}
🎯 高级功能
🔍 智能搜索模式
在模型名称后添加 -search 后缀启用搜索功能:
{
"model": "qwen-max-latest-search",
"messages": [...]
}
🧠 推理模式
在模型名称后添加 -thinking 后缀启用思考过程输出:
{
"model": "qwen-max-latest-thinking",
"messages": [...]
}
🔍🧠 组合模式
同时启用搜索和推理功能:
{
"model": "qwen-max-latest-thinking-search",
"messages": [...]
}
🎨 T2I 生图模式
通过设置 chat_type 参数为 t2i 启用文本到图像生成功能:
{
"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 自动处理图像上传,支持在对话中发送图片:
{
"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 端点发送聊天请求,支持流式和非流式响应。
POST /cli/v1/chat/completions
Content-Type: application/json
Authorization: Bearer API_KEY
请求体:
{
"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:
{
"model": "coder-model",
"messages": [
{
"role": "user",
"content": "写一个快速排序算法。"
}
],
"stream": false
}
流式请求:
{
"model": "qwen3-coder-flash",
"messages": [
{
"role": "user",
"content": "写一首关于春天的诗。"
}
],
"stream": true
}
响应格式:
非流式响应与标准 OpenAI API 格式相同:
{
"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]