支持多路refresh_token

This commit is contained in:
Vinlic 2024-03-14 23:21:22 +08:00
parent 17809274a5
commit 4949b16091
3 changed files with 28 additions and 7 deletions

View File

@ -5,7 +5,7 @@
![](https://img.shields.io/github/forks/llm-red-team/kimi-free-api.svg) ![](https://img.shields.io/github/forks/llm-red-team/kimi-free-api.svg)
![](https://img.shields.io/docker/pulls/vinlic/kimi-free-api.svg) ![](https://img.shields.io/docker/pulls/vinlic/kimi-free-api.svg)
支持高速流式输出、支持多轮对话、支持联网搜索、支持长文档解读、支持图像解析,零配置部署,自动清理会话痕迹。 支持高速流式输出、支持多轮对话、支持联网搜索、支持长文档解读、支持图像解析,零配置部署,多路token支持自动清理会话痕迹。
与ChatGPT接口完全兼容。 与ChatGPT接口完全兼容。
@ -15,6 +15,7 @@
* [在线体验](#在线体验) * [在线体验](#在线体验)
* [效果示例](#效果示例) * [效果示例](#效果示例)
* [接入准备](#接入准备) * [接入准备](#接入准备)
* [多账号接入](#多账号接入)
* [Docker部署](#Docker部署) * [Docker部署](#Docker部署)
* [Docker-compose部署](#Docker-compose部署) * [Docker-compose部署](#Docker-compose部署)
* [原生部署](#原生部署) * [原生部署](#原生部署)
@ -69,10 +70,18 @@ https://udify.app/chat/Po0F6BMJ15q5vu2P
从 [kimi.moonshot.cn](https://kimi.moonshot.cn) 获取refresh_token 从 [kimi.moonshot.cn](https://kimi.moonshot.cn) 获取refresh_token
进入kimi随便发起一个对话然后F12打开开发者工具从Application > Local Storage中找到refresh_token的值这将作为Authorization的Bearer KEY值。 进入kimi随便发起一个对话然后F12打开开发者工具从Application > Local Storage中找到refresh_token的值这将作为Authorization的Bearer Token值`Authorization: Bearer TOKEN`
![example0](./doc/example-0.png) ![example0](./doc/example-0.png)
### 多账号接入
目前kimi限制普通账号每3小时内只能进行30轮长文本的问答你可以通过提供多个账号的refresh_token并使用`,`拼接提供:
`Authorization: Bearer TOKEN1,TOKEN2,TOKEN3`
每次请求服务会从中挑选一个。
## Docker部署 ## Docker部署
请准备一台具有公网IP的服务器并将8000端口开放。 请准备一台具有公网IP的服务器并将8000端口开放。

View File

@ -619,8 +619,18 @@ function createTransStream(convId: string, stream: any, endCallback?: Function)
return transStream; return transStream;
} }
/**
* Token切分
*
* @param authorization
*/
function tokenSplit(authorization: string) {
return authorization.replace('Bearer ', '').split(',');
}
export default { export default {
createConversation, createConversation,
createCompletion, createCompletion,
createCompletionStream createCompletionStream,
tokenSplit
}; };

View File

@ -15,17 +15,19 @@ export default {
request request
.validate('body.messages', _.isArray) .validate('body.messages', _.isArray)
.validate('headers.authorization', _.isString) .validate('headers.authorization', _.isString)
const token = request.headers.authorization; // refresh_token切分
const refreshToken = token.replace('Bearer ', ''); const tokens = chat.tokenSplit(request.headers.authorization);
// 随机挑选一个refresh_token
const token = _.sample(tokens);
const messages = request.body.messages; const messages = request.body.messages;
if (request.body.stream) { if (request.body.stream) {
const stream = await chat.createCompletionStream(request.body.messages, refreshToken, request.body.use_search); const stream = await chat.createCompletionStream(request.body.messages, token, request.body.use_search);
return new Response(stream, { return new Response(stream, {
type: "text/event-stream" type: "text/event-stream"
}); });
} }
else else
return await chat.createCompletion(messages, refreshToken, request.body.use_search); return await chat.createCompletion(messages, token, request.body.use_search);
} }
} }