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 格式,无缝对接各类客户端
- 兼容 Anthropic Messages API(
/v1/messages),支持 Claude Code、Anthropic SDK 等客户端 - 支持 Function Calling(OpenAI
tools/ Anthropictools),含流式arguments增量分片与tool_choice=required强校验重试 - 支持多账户轮询,提高可用性
- 支持流式/非流式响应
- 支持多模态(图片识别、视频理解、图片/视频生成)
- 支持 OpenAI 风格资源端点:
/v1/images/generations、/v1/images/edits、/v1/videos - 支持智能搜索、深度思考等高级功能
- 支持 CLI 端点,提供 256K 上下文和工具调用能力
- 提供 Web 管理界面,方便配置和监控
- 批量添加账号支持实时进度展示,可在系统设置中调整登录并发数
每个账号可以配置自己专属的出站代理,从而让多个账号通过不同的 IP 同时使用,规避 chat.qwen.ai 基于 IP 的关联封禁。
优先级: account.proxy > 全局 PROXY_URL > 不使用代理
支持的代理协议: HTTP / HTTPS / SOCKS5(与 PROXY_URL 一致)
前端配置(推荐): 打开管理面板 → 添加账号时填写 "代理地址" 字段,或在已有账号卡片上点击 "修改代理" 按钮。
ENV 配置(DATA_SAVE_MODE=none):
# 旧格式(向后兼容,账号级代理留空)
ACCOUNTS=user1@mail.com:pass1,user2@mail.com:pass2
# 新格式(用 | 分隔代理 URL,可与旧格式混用)
ACCOUNTS=user1@mail.com:pass1|http://10.0.0.1:8080,user2@mail.com:pass2|socks5://10.0.0.2:1080file 模式 (data/data.json) schema:
{
"accounts": [
{
"email": "user@mail.com",
"password": "...",
"token": "...",
"expires": 1234567890,
"proxy": "http://10.0.0.1:8080"
}
]
}proxy 字段为 null 或缺失时,账号回退到全局 PROXY_URL(若配置)。
⚠️ 注意: 接口返回的代理 URL 不做脱敏处理。本项目假设运行在受信任的本地或私有网络环境中,由单一管理员使用。
- Node.js 18+ (源码部署时需要)
- Docker (可选)
- Redis (可选,用于数据持久化)
创建 .env 文件并配置以下参数:
# 🌐 服务配置
LISTEN_ADDRESS=localhost # 监听地址
SERVICE_PORT=3000 # 服务端口
# 🔐 安全配置
API_KEY=sk-123456,sk-456789 # API 密钥 (必填,支持多密钥)
ACCOUNTS= # 账户配置 (格式: user1:pass1[|proxy_url],user2:pass2[|proxy_url])
# 🚀 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://)
BATCH_LOGIN_CONCURRENCY=5 # 批量添加账号时的登录并发数
# 📸 缓存配置
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 |
BATCH_LOGIN_CONCURRENCY |
批量添加账号时的登录并发数,可在前端系统设置中动态调整 | 5 |
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密钥,用于实现不同权限级别的访问控制:
配置格式:
# 单个密钥(管理员权限)
API_KEY=sk-admin123
# 多个密钥(第一个为管理员,其他为普通用户)
API_KEY=sk-admin123,sk-user456,sk-user789权限说明:
| 密钥类型 | 权限范围 | 功能描述 |
|---|---|---|
| 管理员密钥 | 完整权限 | • 访问前端管理页面 • 修改系统设置 • 调用所有API接口 • 添加/删除普通密钥 |
| 普通密钥 | API调用权限 | • 仅可调用API接口 • 无法访问前端管理页面 • 无法修改系统设置 |
使用场景:
- 团队协作: 为不同团队成员分配不同权限的API密钥
- 应用集成: 为第三方应用提供受限的API访问权限
- 安全隔离: 将管理权限与普通使用权限分离
注意事项:
- 第一个API_KEY自动成为管理员密钥,拥有最高权限
- 管理员可以通过前端页面动态添加或删除普通密钥
- 所有密钥都可以正常调用API接口,权限差异仅体现在管理功能上
CACHE_MODE 环境变量控制图片缓存的存储方式,用于优化图片上传和处理性能:
| 模式 | 说明 | 适用场景 |
|---|---|---|
default |
内存缓存模式 (默认) | 单进程部署,重启后缓存丢失 |
file |
文件缓存模式 | 多进程部署,缓存持久化到 ./caches/ 目录 |
推荐配置:
- 单进程部署: 使用
CACHE_MODE=default,性能最佳 - 多进程/集群部署: 使用
CACHE_MODE=file,确保进程间缓存共享 - Docker 部署: 建议使用
CACHE_MODE=file并挂载./caches目录
文件缓存目录结构:
caches/
├── [signature1].txt # 缓存文件,包含图片URL
├── [signature2].txt
└── ...
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# 下载配置文件
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 会自动进行负载均衡。
使用 npm start 可以自动判断启动方式:
- 当
PM2_INSTANCES=1时,使用单进程模式 - 当
PM2_INSTANCES>1时,使用 Node.js 集群模式 - 自动限制进程数不超过 CPU 核心数
快速部署到 Hugging Face Spaces:
快速部署到 Vercel:
需要配置环境变量:
ACCOUNTS=email:password
SERVICE_PORT=80
API_KEY=sk-xxx
DATA_SAVE_MODE=none
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密钥:
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-keyGET /models (免认证)说明:
id: 推荐直接作为请求里的model使用,优先展示更易读的模型名称name: 上游原始模型 ID,便于与官方接口或日志对照upstream_id: 不带能力后缀的上游模型 IDdisplay_name: 不带能力后缀的展示名- 当
SIMPLE_MODEL_MAP=false时,会额外返回-thinking、-search、-image、-video、-image-edit等能力变体
响应示例:
{
"object": "list",
"data": [
{
"id": "Qwen3-Omni-Flash-image",
"name": "qwen3-omni-flash-2025-12-01-image",
"upstream_id": "qwen3-omni-flash-2025-12-01",
"display_name": "Qwen3-Omni-Flash",
"object": "model",
"created": 1677610602,
"owned_by": "qwen"
}
]
}发送聊天消息并获取 AI 回复。
POST /v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-your-api-key请求体:
{
"model": "Qwen3.6-Plus",
"messages": [
{
"role": "system",
"content": "你是一个有用的助手。"
},
{
"role": "user",
"content": "你好,请介绍一下自己。"
}
],
"stream": false,
"temperature": 0.7,
"max_tokens": 2000
}响应示例:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "qwen3.6-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是一个AI助手..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 50,
"total_tokens": 70
}
}/v1/chat/completions 支持完整的 OpenAI Function Calling 协议。即便上游 Web 接口本身不具备原生 tools 能力,本服务通过提示词注入与流式状态机解析,使其行为与 OpenAI API 一致:
- 自动将
tools[]压缩为 TS 风格签名注入提示词,节省约 70% token 开销 - 流式输出按 OpenAI 规范分片:先发
function.name + 空 arguments头块,随后多个arguments切片 - 历史消息中的
assistant.tool_calls与role:"tool"自动折叠回链,tool_call_id精确关联 tool_choice全四态:"auto"/"required"/{type:"function",function:{name:"..."}}/"none"tool_choice="required"或指定函数时,若首次未触发工具调用,自动追加强约束提示重试一次
请求示例:
{
"model": "qwen3-coder-plus",
"stream": true,
"messages": [
{"role": "user", "content": "查一下北京的天气"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取城市天气",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
],
"tool_choice": "required"
}流式响应(节选):
data: {"choices":[{"delta":{"tool_calls":[{"index":0,"id":"call_xxx","type":"function","function":{"name":"get_weather","arguments":""}}]}}]}
data: {"choices":[{"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"city\":\"Beijing\"}"}}]}}]}
data: {"choices":[{"delta":{},"finish_reason":"tool_calls"}]}
data: [DONE]
OpenAI SDK、LangChain、Cline、Continue 等遵循 OpenAI 工具协议的客户端可直接接入。
提供 Anthropic-compatible bridge 的 /v1/messages 端点,可直接对接 Claude Code、Anthropic SDK、aider 等常见客户端。
说明:Qwen2API 是兼容桥接层,不是 Anthropic 官方等价实现。对未支持字段,本项目当前采用尽量宽松的策略:尽可能接受请求,并通过响应头与服务端日志显式提示,而不是继续静默忽略。对
system、多轮messages、tools、tool_choice、thinking等字段,当前为近似兼容,并非官方原生语义。
POST /v1/messages
Content-Type: application/json
Authorization: Bearer sk-your-api-key兼容矩阵:
| 字段 / 能力 | 状态 | 当前行为 | 备注 / 客户端影响 |
|---|---|---|---|
model |
Supported | 映射到 Qwen 模型名 | 可用任意可解析的 Qwen 模型 ID |
messages.text |
Supported | 支持基础文本消息 | 基础聊天可用 |
messages.image |
Supported | 支持图片块并转译到内部图片格式 | 适合常见多模态客户端 |
messages.tool_use |
Partial | 接收 Anthropic 风格 tool_use 历史块,但内部会转译并折叠 |
不是上游原生工具调用语义 |
messages.tool_result |
Partial | 接收 tool_result,内部转为桥接层工具结果文本 |
is_error 等细节不保证保真 |
system |
Partial | 会被合并进提示前缀 | 不是独立的原生 system 层 |
messages(多轮) |
Partial | 多轮历史会被压缩/转译 | 结构化上下文语义为近似兼容 |
tools[] |
Partial | 支持基础 {name,input_schema,description} |
通过 prompt/XML 模拟,不是原生 upstream tool execution |
tool_choice |
Partial | 支持 auto / any / tool / none 基础形态 |
依赖提示词与 retry hint,不是上游强保证 |
thinking |
Partial | 当前接受旧式 thinking: {type:"enabled", budget_tokens:N} 并近似映射 |
不等价官方新式 adaptive thinking / effort 语义 |
stream |
Supported | 返回 Anthropic 风格 SSE 事件序列 | 适合 Claude Code 等流式客户端 |
max_tokens |
Ignored with warning | 当前不会真实限制上游输出 | 会通过 warning headers / logs 显式提示 |
stop_sequences |
Ignored with warning | 当前未映射到上游停止序列 | 会通过 warning headers / logs 显式提示 |
metadata |
Ignored with warning | 当前不参与上游请求 | 会通过 warning headers / logs 显式提示 |
temperature / top_p / top_k |
Ignored with warning | 当前不参与上游采样控制 | 会通过 warning headers / logs 显式提示 |
service_tier |
Ignored with warning | 当前不支持 | 会通过 warning headers / logs 显式提示 |
container |
Ignored with warning | 当前不支持 | 会通过 warning headers / logs 显式提示 |
output_config |
Ignored with warning | 当前不支持 structured outputs / effort 等官方语义 | 会通过 warning headers / logs 显式提示 |
mcp_servers |
Not supported yet | 当前不支持 Anthropic MCP runtime 语义 | 当前仅提示风险,后续版本可能改为显式报错 |
context_management |
Not supported yet | 当前不支持 compaction / context editing 等官方语义 | 当前仅提示风险,后续版本可能改为显式报错 |
当请求包含近似支持或未支持字段时,响应可能带有以下 header:
X-Qwen2API-Anthropic-CompatibilityX-Qwen2API-Anthropic-Warnings
这些 header 用于提示当前请求中哪些 Anthropic 能力是 Partial、哪些字段被 Ignored with warning,不会改变成功响应 body 的基本结构。
请求示例(含工具调用):
{
"model": "qwen3-coder-plus",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "查广州天气"}
],
"tools": [
{
"name": "get_weather",
"input_schema": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
],
"tool_choice": { "type": "any" }
}注意:上例中的
max_tokens当前会被接受,但仍属于 Ignored with warning,不会像官方 Anthropic API 那样真实约束上游输出。
非流式响应:
{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"model": "qwen3-coder-plus",
"content": [
{
"type": "tool_use",
"id": "call_xxx",
"name": "get_weather",
"input": { "city": "广州" }
}
],
"stop_reason": "tool_use",
"stop_sequence": null,
"usage": { "input_tokens": 233, "output_tokens": 25 }
}流式 SSE 事件序列:
event: message_start
data: {"type":"message_start","message":{...}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"call_xxx","name":"get_weather","input":{}}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"city\":\"广州\"}"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"input_tokens":234,"output_tokens":25}}
event: message_stop
data: {"type":"message_stop"}
当前支持两种调用方式:
- 使用
/v1/chat/completions+ 模型后缀:-image、-image-edit、-video - 使用 OpenAI 风格资源端点:
/v1/images/generations、/v1/images/edits、/v1/videos
以下示例中的模型名请以 /v1/models 返回的 id 字段为准。
文本生图:
{
"model": "Qwen3-Omni-Flash-image",
"messages": [
{
"role": "user",
"content": "画一只在花园里玩耍的小猫咪,卡通风格"
}
],
"size": "1:1",
"stream": false
}图片编辑:
{
"model": "Qwen3-Omni-Flash-image-edit",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "把这张图片改成浅蓝色科技风海报"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,..."
}
}
]
}
],
"stream": false
}视频生成:
{
"model": "Qwen3-Omni-Flash-video",
"messages": [
{
"role": "user",
"content": "生成一个 3 秒夜景延时视频,城市街道霓虹灯闪烁"
}
],
"size": "9:16",
"stream": false
}支持的尺寸参数:
/v1/chat/completions下的图片/视频生成支持1:1、4:3、3:4、16:9、9:16/v1/images/generations、/v1/images/edits、/v1/videos兼容1024x1024、1536x1024、1024x1536、1792x1024、1024x1792
图像生成:
POST /v1/images/generations
Content-Type: application/json
Authorization: Bearer sk-your-api-key{
"model": "Qwen3-Omni-Flash",
"prompt": "一只橘猫坐在木桌上看向镜头,写实风格",
"size": "1024x1024",
"response_format": "url"
}图像编辑:
POST /v1/images/edits
Content-Type: multipart/form-data
Authorization: Bearer sk-your-api-key表单字段:
model: 可选,不传时自动选择支持图片编辑的默认模型prompt: 可选,默认为请基于上传图片完成编辑image: 必填,支持 multipart 文件上传,也支持 JSON 字符串形式的图片 URL / data URIsize: 可选,支持 OpenAI 风格尺寸写法response_format: 可选,支持url、b64_json
视频生成:
POST /v1/videos
Content-Type: application/json
Authorization: Bearer sk-your-api-key{
"model": "Qwen3-Omni-Flash",
"prompt": "一个简短的 3 秒夜景延时视频,城市街道霓虹灯闪烁",
"size": "1024x1792"
}图像生成响应示例:
{
"created": 1776126402,
"data": [
{
"url": "https://cdn.qwenlm.ai/output/example/generated-image.png"
}
]
}视频生成响应示例:
{
"id": "video_1776126509490",
"object": "video",
"created": 1776126509,
"model": "qwen3-omni-flash-2025-12-01",
"status": "completed",
"data": [
{
"url": "https://cdn.qwenlm.ai/output/example/generated-video.mp4"
}
]
}在模型名称后添加 -search 后缀启用搜索功能:
{
"model": "Qwen3.6-Plus-search",
"messages": [...]
}在模型名称后添加 -thinking 后缀启用思考过程输出:
{
"model": "Qwen3.6-Plus-thinking",
"messages": [...]
}同时启用搜索和推理功能:
{
"model": "Qwen3.6-Plus-thinking-search",
"messages": [...]
}API 自动处理图片和视频上传,支持在对话中发送图片、视频 URL 或 Base64 data URI。
图片理解示例:
{
"model": "Qwen3.5-Omni-Plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片里有什么?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,..."
}
}
]
}
]
}视频理解示例:
{
"model": "Qwen3.5-Omni-Plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请用一句话描述这个视频"
},
{
"type": "input_video",
"input_video": {
"url": "data:video/mp4;base64,..."
}
}
]
}
]
}支持的视频字段:
input_videovideo_urlvideo
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 端点发送聊天请求,支持流式和非流式响应。
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]
- 本项目仅供学习交流使用,严禁用于任何商业用途。
- 使用本项目所产生的一切后果由使用者自行承担,项目开发者不承担任何责任。
- 本项目不对
chat.qwen.ai及Qwen Code / Qwen Cli的服务可用性、稳定性作任何保证。 - 使用者应遵守所在地区的法律法规,以及通义千问的服务条款和使用政策。
- 如有侵权,请联系作者删除。
本项目采用 仅限个人学习与研究 的使用许可:
- 禁止将本项目或其衍生作品用于任何商业目的,包括但不限于:出售、出租、提供付费服务、嵌入商业产品等。
- 禁止利用本项目进行任何违反通义千问服务条款的行为。
- 禁止将本项目用于大规模自动化调用、恶意攻击或滥用上游服务。

