perf: message filter
This commit is contained in:
parent
9b683884cc
commit
e3c9b8179e
@ -72,7 +72,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||||||
} else {
|
} else {
|
||||||
// 没有用知识库搜索,仅用系统提示词
|
// 没有用知识库搜索,仅用系统提示词
|
||||||
model.chat.systemPrompt &&
|
model.chat.systemPrompt &&
|
||||||
prompts.unshift({
|
prompts.splice(prompts.length - 1, 0, {
|
||||||
obj: ChatRoleEnum.System,
|
obj: ChatRoleEnum.System,
|
||||||
value: model.chat.systemPrompt
|
value: model.chat.systemPrompt
|
||||||
});
|
});
|
||||||
|
|||||||
@ -87,12 +87,11 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
|||||||
prompts.splice(prompts.length - 1, 0, ...searchPrompts);
|
prompts.splice(prompts.length - 1, 0, ...searchPrompts);
|
||||||
} else {
|
} else {
|
||||||
// 没有用知识库搜索,仅用系统提示词
|
// 没有用知识库搜索,仅用系统提示词
|
||||||
if (model.chat.systemPrompt) {
|
model.chat.systemPrompt &&
|
||||||
prompts.unshift({
|
prompts.splice(prompts.length - 1, 0, {
|
||||||
obj: ChatRoleEnum.System,
|
obj: ChatRoleEnum.System,
|
||||||
value: model.chat.systemPrompt
|
value: model.chat.systemPrompt
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算温度
|
// 计算温度
|
||||||
|
|||||||
@ -106,7 +106,7 @@ export const searchKb = async ({
|
|||||||
{
|
{
|
||||||
obj: ChatRoleEnum.System,
|
obj: ChatRoleEnum.System,
|
||||||
value: `我们来玩问答游戏,规则为:
|
value: `我们来玩问答游戏,规则为:
|
||||||
1.你忘记你已有的知识
|
1.你完全忘记你已有的知识
|
||||||
2.你只能回答关于"${model.name}"的问题
|
2.你只能回答关于"${model.name}"的问题
|
||||||
3.你只能从知识库中选择内容进行回答
|
3.你只能从知识库中选择内容进行回答
|
||||||
4.如果问题不在知识库中,你会回答"我不知道。"
|
4.如果问题不在知识库中,你会回答"我不知道。"
|
||||||
|
|||||||
@ -109,35 +109,22 @@ export const ChatContextFilter = ({
|
|||||||
|
|
||||||
// 根据 tokens 截断内容
|
// 根据 tokens 截断内容
|
||||||
const chats: ChatItemSimpleType[] = [];
|
const chats: ChatItemSimpleType[] = [];
|
||||||
let systemPrompt: ChatItemSimpleType | null = null;
|
|
||||||
|
|
||||||
// System 词保留
|
|
||||||
if (formatPrompts[0].obj === ChatRoleEnum.System) {
|
|
||||||
const prompt = formatPrompts.shift();
|
|
||||||
if (prompt) {
|
|
||||||
systemPrompt = prompt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let messages: ChatItemSimpleType[] = [];
|
|
||||||
|
|
||||||
// 从后往前截取对话内容
|
// 从后往前截取对话内容
|
||||||
for (let i = formatPrompts.length - 1; i >= 0; i--) {
|
for (let i = formatPrompts.length - 1; i >= 0; i--) {
|
||||||
chats.unshift(formatPrompts[i]);
|
chats.unshift(formatPrompts[i]);
|
||||||
|
|
||||||
messages = systemPrompt ? [systemPrompt, ...chats] : chats;
|
|
||||||
|
|
||||||
const tokens = modelToolMap[model].countTokens({
|
const tokens = modelToolMap[model].countTokens({
|
||||||
messages
|
messages: chats
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 整体 tokens 超出范围 */
|
/* 整体 tokens 超出范围 */
|
||||||
if (tokens >= maxTokens) {
|
if (tokens >= maxTokens) {
|
||||||
return systemPrompt ? [systemPrompt, ...chats.slice(1)] : chats.slice(1);
|
return chats.slice(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return messages;
|
return chats;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* stream response */
|
/* stream response */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user