diff --git a/src/pages/api/chat/chat.ts b/src/pages/api/chat/chat.ts index c6da26596..cbdadec73 100644 --- a/src/pages/api/chat/chat.ts +++ b/src/pages/api/chat/chat.ts @@ -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 }); diff --git a/src/pages/api/openapi/chat/chat.ts b/src/pages/api/openapi/chat/chat.ts index 14d688e55..a49891ad2 100644 --- a/src/pages/api/openapi/chat/chat.ts +++ b/src/pages/api/openapi/chat/chat.ts @@ -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 }); - } } // 计算温度 diff --git a/src/service/plugins/searchKb.ts b/src/service/plugins/searchKb.ts index 9f0bccf89..7f00c24bc 100644 --- a/src/service/plugins/searchKb.ts +++ b/src/service/plugins/searchKb.ts @@ -106,7 +106,7 @@ export const searchKb = async ({ { obj: ChatRoleEnum.System, value: `我们来玩问答游戏,规则为: -1.你忘记你已有的知识 +1.你完全忘记你已有的知识 2.你只能回答关于"${model.name}"的问题 3.你只能从知识库中选择内容进行回答 4.如果问题不在知识库中,你会回答"我不知道。" diff --git a/src/service/utils/chat/index.ts b/src/service/utils/chat/index.ts index 56eea2a45..ae95bce14 100644 --- a/src/service/utils/chat/index.ts +++ b/src/service/utils/chat/index.ts @@ -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 */