mirror of
https://github.com/LLM-Red-Team/kimi-free-api.git
synced 2025-10-14 14:20:36 +00:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cc0ea384a7 | ||
![]() |
6284628d99 | ||
![]() |
399242b09e | ||
![]() |
d13ba31d0e | ||
![]() |
c8c215448f | ||
![]() |
f3dae64a4c | ||
![]() |
376c48e8e5 | ||
![]() |
8c4c6408ba |
@@ -1,4 +1,4 @@
|
||||
# KIMI Free 服务
|
||||
# KIMI AI Free 服务
|
||||
|
||||
## 声明
|
||||
|
||||
@@ -10,13 +10,16 @@
|
||||
|
||||
## 在线体验
|
||||
|
||||
此链接仅临时测试功能,不可长期使用,长期使用请自行部署并
|
||||
此链接仅临时测试功能,不可长期使用,长期使用请自行部署。
|
||||
|
||||
https://udify.app/chat/Po0F6BMJ15q5vu2P
|
||||
|
||||

|
||||

|
||||
|
||||
## 接入准备
|
||||
|
||||
从kimi获取refresh_token:进入kimi随便发起一个对话,然后F12打开开发者工具,从Application > Local Storage中找到refresh_token的值,这将作为API_KEY。
|
||||
从 [kimi.moonshot.cn](https://kimi.moonshot.cn) 获取refresh_token:进入kimi随便发起一个对话,然后F12打开开发者工具,从Application > Local Storage中找到refresh_token的值,这将作为API_KEY。
|
||||
|
||||
## 安装
|
||||
|
||||
|
BIN
doc/example-1.png
Normal file
BIN
doc/example-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
BIN
doc/example-2.png
Normal file
BIN
doc/example-2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 101 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kimi-free-api",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.5",
|
||||
"description": "Kimi Free Server",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
@@ -85,7 +85,7 @@ async function createCompletion(messages: any[], refreshToken: string, useSearch
|
||||
const convId = await createConversation(`cmpl-${util.uuid(false)}`, refreshToken);
|
||||
const token = await acquireToken(refreshToken);
|
||||
const result = await axios.post(`https://kimi.moonshot.cn/api/chat/${convId}/completion/stream`, {
|
||||
messages,
|
||||
messages: messagesPrepare(messages),
|
||||
use_search: useSearch
|
||||
}, {
|
||||
headers: {
|
||||
@@ -107,7 +107,7 @@ async function createCompletionStream(messages: any[], refreshToken: string, use
|
||||
const convId = await createConversation(`cmpl-${util.uuid(false)}`, refreshToken);
|
||||
const token = await acquireToken(refreshToken);
|
||||
const result = await axios.post(`https://kimi.moonshot.cn/api/chat/${convId}/completion/stream`, {
|
||||
messages,
|
||||
messages: messagesPrepare(messages),
|
||||
use_search: useSearch
|
||||
}, {
|
||||
headers: {
|
||||
@@ -124,6 +124,19 @@ async function createCompletionStream(messages: any[], refreshToken: string, use
|
||||
});
|
||||
}
|
||||
|
||||
function messagesPrepare(messages: any[]) {
|
||||
const content = messages.reduce((content, message) => {
|
||||
return content += `${message.role || 'user'}:${wrapUrlsToTags(message.content)}\n`;
|
||||
}, '');
|
||||
return [
|
||||
{ role: 'user', content }
|
||||
]
|
||||
}
|
||||
|
||||
function wrapUrlsToTags(content: string) {
|
||||
return content.replace(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi, url => `<url id="" type="url" status="" title="" wc="">${url}</url>`);
|
||||
}
|
||||
|
||||
function checkResult(result: AxiosResponse, refreshToken: string) {
|
||||
if(result.status == 401) {
|
||||
accessTokenMap.delete(refreshToken);
|
||||
@@ -161,7 +174,7 @@ async function receiveStream(convId: string, stream: any) {
|
||||
data.choices[0].message.content += result.text;
|
||||
}
|
||||
else if (result.event == 'all_done' || result.event == 'error') {
|
||||
data.choices[0].message.content += '\n[内容由于不合规被停止生成,我们换个话题吧]' + (refContent ? `\n\n搜索结果来自:\n${refContent}` : '');
|
||||
data.choices[0].message.content += (result.event == 'error' ? '\n[内容由于不合规被停止生成,我们换个话题吧]' : '') + (refContent ? `\n\n搜索结果来自:\n${refContent}` : '');
|
||||
refContent = '';
|
||||
resolve(data);
|
||||
}
|
||||
|
Reference in New Issue
Block a user