mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 13:03:50 +00:00
perf: message filter
This commit is contained in:
@@ -72,7 +72,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
} else {
|
||||
// 没有用知识库搜索,仅用系统提示词
|
||||
model.chat.systemPrompt &&
|
||||
prompts.unshift({
|
||||
prompts.splice(prompts.length - 1, 0, {
|
||||
obj: ChatRoleEnum.System,
|
||||
value: model.chat.systemPrompt
|
||||
});
|
||||
|
@@ -87,12 +87,11 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||
prompts.splice(prompts.length - 1, 0, ...searchPrompts);
|
||||
} else {
|
||||
// 没有用知识库搜索,仅用系统提示词
|
||||
if (model.chat.systemPrompt) {
|
||||
prompts.unshift({
|
||||
model.chat.systemPrompt &&
|
||||
prompts.splice(prompts.length - 1, 0, {
|
||||
obj: ChatRoleEnum.System,
|
||||
value: model.chat.systemPrompt
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 计算温度
|
||||
|
@@ -106,7 +106,7 @@ export const searchKb = async ({
|
||||
{
|
||||
obj: ChatRoleEnum.System,
|
||||
value: `我们来玩问答游戏,规则为:
|
||||
1.你忘记你已有的知识
|
||||
1.你完全忘记你已有的知识
|
||||
2.你只能回答关于"${model.name}"的问题
|
||||
3.你只能从知识库中选择内容进行回答
|
||||
4.如果问题不在知识库中,你会回答"我不知道。"
|
||||
|
@@ -109,35 +109,22 @@ export const ChatContextFilter = ({
|
||||
|
||||
// 根据 tokens 截断内容
|
||||
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--) {
|
||||
chats.unshift(formatPrompts[i]);
|
||||
|
||||
messages = systemPrompt ? [systemPrompt, ...chats] : chats;
|
||||
|
||||
const tokens = modelToolMap[model].countTokens({
|
||||
messages
|
||||
messages: chats
|
||||
});
|
||||
|
||||
/* 整体 tokens 超出范围 */
|
||||
if (tokens >= maxTokens) {
|
||||
return systemPrompt ? [systemPrompt, ...chats.slice(1)] : chats.slice(1);
|
||||
return chats.slice(1);
|
||||
}
|
||||
}
|
||||
|
||||
return messages;
|
||||
return chats;
|
||||
};
|
||||
|
||||
/* stream response */
|
||||
|
Reference in New Issue
Block a user