qwen-free-api-fix 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +305 -0
- package/configs-example/dev/service.yml +14 -0
- package/configs-example/dev/system.yml +23 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2562 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2539 -0
- package/dist/index.mjs.map +1 -0
- package/dist/welcome.html +502 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Qwen AI Free 服务
|
|
2
|
+
|
|
3
|
+
## 项目说明
|
|
4
|
+
|
|
5
|
+
<span>[ 中文 | <a href="README_EN.md">English</a> ]</span>
|
|
6
|
+
|
|
7
|
+
本项目由[https://github.com/LLM-Red-Team/qwen-free-api](https://github.com/LLM-Red-Team/qwen-free-api)修改而来,感谢大佬的贡献!
|
|
8
|
+
重要提示:原项目由于供应链攻击,提交的代码内包含恶意代码,强烈建议不再继续使用。
|
|
9
|
+
|
|
10
|
+
修改原因:
|
|
11
|
+
1. 原项目中官方接口修改导致回答乱序,API基本不可用
|
|
12
|
+
2. 原项目作者基本不咋更新了
|
|
13
|
+
3. 已去除原项目中包含的恶意代码,欢迎对本项目源码进行审查
|
|
14
|
+
|
|
15
|
+
## 更新说明
|
|
16
|
+
|
|
17
|
+
1. 修改chat.ts 修改非流式输出接口方法,参考原项目issue [返回的消息带错乱](https://github.com/LLM-Red-Team/qwen-free-api/issues/72)
|
|
18
|
+
|
|
19
|
+
2. 更新models.ts 模型列表,支持qwen3-235b-a22b、qwen3-coder-plus、qwen-plus-latest等最新模型
|
|
20
|
+
|
|
21
|
+
3. 重新打包新版本的docker镜像,`akashrajpuroh1t/qwen-free-api-fix:latest`
|
|
22
|
+
|
|
23
|
+
4. 已修复源码中恶意代码问题,并重新打包,验证如下:
|
|
24
|
+
|
|
25
|
+
- 包含混淆代码在`src/api/chat.js`文件末尾处,构建完容器内为`/app/dist/index.js`文件1871行左右,如下图所示红框部分:
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
- 修复后去除混淆代码,构建完容器内为`/app/dist/index.js`文件1951行左右,如下图所示:
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
模型已通过测试如下:
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
### 更新日志
|
|
36
|
+
|
|
37
|
+
- v1.0.1 (2025-12-07)
|
|
38
|
+
|
|
39
|
+
- 重构默认首页样式和内容,修复部分描述
|
|
40
|
+
- 新增Gemini和Claude适配器
|
|
41
|
+
|
|
42
|
+
- v1.0.0-fix (2025-11-23)
|
|
43
|
+
|
|
44
|
+
- 修复源码中恶意代码问题,解决构建时报错问题
|
|
45
|
+
|
|
46
|
+
- v0.0.23.2 (2025-11-09)
|
|
47
|
+
|
|
48
|
+
- 修复回答重复问题:优化流式响应处理逻辑,仅当文本长度增加时才提取增量内容,避免重复输出
|
|
49
|
+
|
|
50
|
+
- v0.0.23.1 (2025-08-12)
|
|
51
|
+
|
|
52
|
+
- 修复报错:STRING_IS_BLANK-sessionId不能为空
|
|
53
|
+
|
|
54
|
+
- v0.0.23 (2025-08-11)
|
|
55
|
+
|
|
56
|
+
- 经测试,原版接口实际指定模型ID并未生效,修改chat.ts相关逻辑,支持指定模型ID。
|
|
57
|
+
- 根据官方最新Chat-API接口[https://chat.qwen.ai/api/models](https://chat.qwen.ai/api/models),更新models.ts列表
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## 免责声明
|
|
61
|
+
|
|
62
|
+
**逆向API是不稳定的,建议前往阿里云官方 https://dashscope.console.aliyun.com/ 付费使用API,避免封禁的风险。**
|
|
63
|
+
|
|
64
|
+
**本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质!**
|
|
65
|
+
|
|
66
|
+
**仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担!**
|
|
67
|
+
|
|
68
|
+
**仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担!**
|
|
69
|
+
|
|
70
|
+
**仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担!**
|
|
71
|
+
|
|
72
|
+
## 效果示例
|
|
73
|
+
|
|
74
|
+
### 服务默认首页
|
|
75
|
+
|
|
76
|
+
服务启动后,默认首页添加了接入指南和接口说明,方便快速接入,不用来回切换找文档。
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
### Gemini-cli接入
|
|
81
|
+
|
|
82
|
+
版本添加了gemini-cli适配器,可以直接在gemini-cli中调用API。
|
|
83
|
+
|
|
84
|
+

|
|
85
|
+
|
|
86
|
+
### Claude-code接入
|
|
87
|
+
|
|
88
|
+
版本添加了Claude-code适配器,可以直接在Claude-code中调用API。
|
|
89
|
+
|
|
90
|
+

|
|
91
|
+
|
|
92
|
+
### 验明正身Demo
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
### 多轮对话Demo
|
|
97
|
+
|
|
98
|
+

|
|
99
|
+
|
|
100
|
+
### AI绘图Demo
|
|
101
|
+
|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
### 长文档解读Demo
|
|
105
|
+
|
|
106
|
+

|
|
107
|
+
|
|
108
|
+
### 图像解析Demo
|
|
109
|
+
|
|
110
|
+

|
|
111
|
+
|
|
112
|
+
### 10线程并发测试
|
|
113
|
+
|
|
114
|
+

|
|
115
|
+
|
|
116
|
+
## 接入准备
|
|
117
|
+
|
|
118
|
+
### 方法1
|
|
119
|
+
|
|
120
|
+
从 [通义千问](https://tongyi.aliyun.com/qianwen) 登录
|
|
121
|
+
|
|
122
|
+
进入通义千问随便发起一个对话,然后F12打开开发者工具,从Application > Cookies中找到`tongyi_sso_ticket`的值,这将作为Authorization的Bearer Token值:`Authorization: Bearer TOKEN`
|
|
123
|
+
|
|
124
|
+

|
|
125
|
+
|
|
126
|
+
### 方法2
|
|
127
|
+
|
|
128
|
+
从 [阿里云](https://www.aliyun.com/) 登录(如果该账号有服务器等重要资产不建议使用),如果该账号之前未进入过[通义千问](https://tongyi.aliyun.com/qianwen) ,需要先进入同意协议,否则无法生效。
|
|
129
|
+
|
|
130
|
+
然后F12打开开发者工具,从Application > Cookies中找到`login_aliyunid_ticket`的值,这将作为Authorization的Bearer Token值:`Authorization: Bearer TOKEN`
|
|
131
|
+
|
|
132
|
+

|
|
133
|
+
|
|
134
|
+
### 多账号接入
|
|
135
|
+
|
|
136
|
+
你可以通过提供多个账号的`tongyi_sso_ticket`或`login_aliyunid_ticket`,并使用,拼接提供:
|
|
137
|
+
|
|
138
|
+
`Authorization: Bearer TOKEN1,TOKEN2,TOKEN3`
|
|
139
|
+
|
|
140
|
+
每次请求服务会从中挑选一个。
|
|
141
|
+
|
|
142
|
+
## npm 安装
|
|
143
|
+
|
|
144
|
+
本项目已发布为 npm 包,可通过以下方式快速安装运行:
|
|
145
|
+
|
|
146
|
+
### 全局安装
|
|
147
|
+
|
|
148
|
+
```shell
|
|
149
|
+
# 全局安装
|
|
150
|
+
npm install -g qwen-free-api-fix
|
|
151
|
+
|
|
152
|
+
# 启动服务(默认监听 0.0.0.0:8000)
|
|
153
|
+
qwen-free-api
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 使用 npx 临时运行
|
|
157
|
+
|
|
158
|
+
```shell
|
|
159
|
+
# 无需安装,直接运行
|
|
160
|
+
npx qwen-free-api-fix
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 命令行参数
|
|
164
|
+
|
|
165
|
+
```shell
|
|
166
|
+
# 指定端口和主机
|
|
167
|
+
qwen-free-api --port 3000 --host 127.0.0.1
|
|
168
|
+
|
|
169
|
+
# 或使用环境变量
|
|
170
|
+
SERVER_PORT=3000 SERVER_HOST=127.0.0.1 qwen-free-api
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 自定义配置文件
|
|
174
|
+
|
|
175
|
+
如需自定义配置,可在当前工作目录下创建 `configs/dev/` 目录并放入配置文件:
|
|
176
|
+
|
|
177
|
+
```shell
|
|
178
|
+
# 创建配置目录
|
|
179
|
+
mkdir -p configs/dev
|
|
180
|
+
|
|
181
|
+
# 参考示例配置(安装后可在 node_modules/qwen-free-api-fix/configs-example/ 下找到)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**configs/dev/service.yml** 示例:
|
|
185
|
+
```yaml
|
|
186
|
+
name: qwen-free-api
|
|
187
|
+
host: '0.0.0.0'
|
|
188
|
+
port: 8000
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**configs/dev/system.yml** 示例:
|
|
192
|
+
```yaml
|
|
193
|
+
requestLog: true
|
|
194
|
+
tmpDir: ./tmp
|
|
195
|
+
logDir: ./logs
|
|
196
|
+
debug: false
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Docker部署
|
|
200
|
+
|
|
201
|
+
请准备一台具有公网IP的服务器并将8000端口开放。
|
|
202
|
+
|
|
203
|
+
拉取镜像并启动服务
|
|
204
|
+
|
|
205
|
+
```shell
|
|
206
|
+
docker run -it -d --init --name qwen-free-api-fix -p 8000:8000 -e TZ=Asia/Shanghai akashrajpuroh1t/qwen-free-api-fix:latest
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
查看服务实时日志
|
|
210
|
+
|
|
211
|
+
```shell
|
|
212
|
+
docker logs -f qwen-free-api-fix
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
重启服务
|
|
216
|
+
|
|
217
|
+
```shell
|
|
218
|
+
docker restart qwen-free-api-fix
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
停止服务
|
|
222
|
+
|
|
223
|
+
```shell
|
|
224
|
+
docker stop qwen-free-api-fix
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Docker-compose部署
|
|
228
|
+
|
|
229
|
+
```yaml
|
|
230
|
+
version: '3'
|
|
231
|
+
|
|
232
|
+
services:
|
|
233
|
+
qwen-free-api:
|
|
234
|
+
container_name: qwen-free-api-fix
|
|
235
|
+
image: akashrajpuroh1t/qwen-free-api-fix:latest
|
|
236
|
+
restart: always
|
|
237
|
+
ports:
|
|
238
|
+
- "8000:8000"
|
|
239
|
+
environment:
|
|
240
|
+
- TZ=Asia/Shanghai
|
|
241
|
+
```
|
|
242
|
+
### 其他部署
|
|
243
|
+
|
|
244
|
+
其他部署方式,由于未经过测试,所以不再推荐,建议还是Docker部署使用
|
|
245
|
+
|
|
246
|
+
## 接口列表
|
|
247
|
+
|
|
248
|
+
目前支持与openai兼容的 `/v1/chat/completions` 接口,可自行使用与openai或其他兼容的客户端接入接口,或者使用 [dify](https://dify.ai/) 等线上服务接入使用。
|
|
249
|
+
|
|
250
|
+
### 对话补全
|
|
251
|
+
|
|
252
|
+
对话补全接口,与openai的 [chat-completions-api](https://platform.openai.com/docs/guides/text-generation/chat-completions-api) 兼容。
|
|
253
|
+
|
|
254
|
+
**POST /v1/chat/completions**
|
|
255
|
+
|
|
256
|
+
header 需要设置 Authorization 头部:
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
Authorization: Bearer [tongyi_sso_ticket/login_aliyunid_ticket]
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
请求数据:
|
|
263
|
+
```json
|
|
264
|
+
{
|
|
265
|
+
// 模型名称随意填写
|
|
266
|
+
"model": "qwen",
|
|
267
|
+
// 目前多轮对话基于消息合并实现,某些场景可能导致能力下降且受单轮最大token数限制
|
|
268
|
+
// 如果您想获得原生的多轮对话体验,可以传入上一轮消息获得的id,来接续上下文
|
|
269
|
+
// "conversation_id": "bc9ef150d0e44794ab624df958292300-40811965812e4782bb87f1a9e4e2b2cd",
|
|
270
|
+
"messages": [
|
|
271
|
+
{
|
|
272
|
+
"role": "user",
|
|
273
|
+
"content": "你是谁?"
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
// 如果使用SSE流请设置为true,默认false
|
|
277
|
+
"stream": false
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
响应数据:
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
// 如果想获得原生多轮对话体验,此id,你可以传入到下一轮对话的conversation_id来接续上下文
|
|
285
|
+
"id": "bc9ef150d0e44794ab624df958292300-40811965812e4782bb87f1a9e4e2b2cd",
|
|
286
|
+
"model": "qwen",
|
|
287
|
+
"object": "chat.completion",
|
|
288
|
+
"choices": [
|
|
289
|
+
{
|
|
290
|
+
"index": 0,
|
|
291
|
+
"message": {
|
|
292
|
+
"role": "assistant",
|
|
293
|
+
"content": "我是阿里云研发的超大规模语言模型,我叫通义千问。"
|
|
294
|
+
},
|
|
295
|
+
"finish_reason": "stop"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"usage": {
|
|
299
|
+
"prompt_tokens": 1,
|
|
300
|
+
"completion_tokens": 1,
|
|
301
|
+
"total_tokens": 2
|
|
302
|
+
},
|
|
303
|
+
"created": 1710152062
|
|
304
|
+
}
|
|
305
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Service name
|
|
2
|
+
name: qwen-free-api
|
|
3
|
+
|
|
4
|
+
# Server bind host address
|
|
5
|
+
host: '0.0.0.0'
|
|
6
|
+
|
|
7
|
+
# Server bind port
|
|
8
|
+
port: 8000
|
|
9
|
+
|
|
10
|
+
# URL prefix for routes (optional)
|
|
11
|
+
# urlPrefix: '/api'
|
|
12
|
+
|
|
13
|
+
# External bind address (optional, for display purposes)
|
|
14
|
+
# bindAddress: 'https://your-domain.com'
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Enable request logging
|
|
2
|
+
requestLog: true
|
|
3
|
+
|
|
4
|
+
# Temporary directory path
|
|
5
|
+
tmpDir: ./tmp
|
|
6
|
+
|
|
7
|
+
# Log directory path
|
|
8
|
+
logDir: ./logs
|
|
9
|
+
|
|
10
|
+
# Log write interval (milliseconds)
|
|
11
|
+
logWriteInterval: 200
|
|
12
|
+
|
|
13
|
+
# Log file expiration time (milliseconds)
|
|
14
|
+
logFileExpires: 2626560000
|
|
15
|
+
|
|
16
|
+
# Public directory path (for static files)
|
|
17
|
+
publicDir: ./public
|
|
18
|
+
|
|
19
|
+
# Temporary file expiration time (milliseconds)
|
|
20
|
+
tmpFileExpires: 86400000
|
|
21
|
+
|
|
22
|
+
# Enable debug mode
|
|
23
|
+
debug: false
|
package/dist/index.d.mts
ADDED
package/dist/index.d.ts
ADDED