perf: 文本截取

This commit is contained in:
archer
2023-04-17 09:02:39 +08:00
parent 426eceac22
commit 0db413ab52
6 changed files with 10 additions and 38 deletions

View File

@@ -116,8 +116,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
}); });
} else { } else {
// 有匹配情况下,添加知识库内容。 // 有匹配情况下,添加知识库内容。
// 系统提示词过滤,最多 2800 tokens // 系统提示词过滤,最多 2000 tokens
const systemPrompt = systemPromptFilter(formatRedisPrompt, 2800); const systemPrompt = systemPromptFilter(formatRedisPrompt, 2000);
prompts.unshift({ prompts.unshift({
obj: 'SYSTEM', obj: 'SYSTEM',

View File

@@ -28,10 +28,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
throw new Error('无权操作该模型'); throw new Error('无权操作该模型');
} }
const replaceText = text.replace(/(\\n|\n)+/g, ' '); const replaceText = text.replace(/\\n/g, '\n');
// 文本拆分成 chunk // 文本拆分成 chunk
const chunks = replaceText.match(/[^!?.。]+[!?.。]/g) || []; const chunks = replaceText.split('\n').filter((item) => item.trim());
const textList: string[] = []; const textList: string[] = [];
let splitText = ''; let splitText = '';

View File

@@ -1,18 +0,0 @@
import type { NextApiRequest, NextApiResponse } from 'next';
import { jsonRes } from '@/service/response';
import axios from 'axios';
import { connectToDatabase, User, Pay } from '@/service/mongo';
import { authToken } from '@/service/utils/tools';
import { PaySchema } from '@/types/mongoSchema';
import dayjs from 'dayjs';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
try {
res.send('');
} catch (err) {
jsonRes(res, {
code: 500,
error: err
});
}
}

View File

@@ -204,17 +204,6 @@ const Chat = ({ chatId }: { chatId: string }) => {
return; return;
} }
// 长度校验
const model = modelList.find((item) => item.model === chatData.modelName);
if (model && val.length >= model.maxToken) {
toast({
title: '单次输入超出 4000 字符',
status: 'warning'
});
return;
}
const newChatList: ChatSiteItemType[] = [ const newChatList: ChatSiteItemType[] = [
...chatData.history, ...chatData.history,
{ {

View File

@@ -85,7 +85,7 @@ const SelectFileModal = ({
if (!fileText) return; if (!fileText) return;
await postModelDataSplitData({ await postModelDataSplitData({
modelId, modelId,
text: fileText, text: fileText.replace(/\\n/g, '\n').replace(/\n+/g, '\n'),
prompt: `下面是${prompt || '一段长文本'}` prompt: `下面是${prompt || '一段长文本'}`
}); });
toast({ toast({

View File

@@ -110,12 +110,13 @@ export const openaiChatFilter = (prompts: ChatItemType[], maxTokens: number) =>
// 从后往前截取 // 从后往前截取
for (let i = formatPrompts.length - 1; i >= 0; i--) { for (let i = formatPrompts.length - 1; i >= 0; i--) {
const tokens = encode(formatPrompts[i].value).length; const tokens = encode(formatPrompts[i].value).length;
if (maxTokens >= tokens) { res.unshift(formatPrompts[i]);
res.unshift(formatPrompts[i]); /* 整体 tokens 超出范围 */
maxTokens -= tokens; if (tokens >= maxTokens) {
} else {
break; break;
} }
maxTokens -= tokens;
} }
return systemPrompt ? [systemPrompt, ...res] : res; return systemPrompt ? [systemPrompt, ...res] : res;