perf: 优化系统提示消息

This commit is contained in:
Archer
2023-03-17 00:53:27 +08:00
parent 1e770088d0
commit d85b4c0945
6 changed files with 26 additions and 28 deletions

View File

@@ -35,9 +35,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
// 上下文长度过滤
const maxContext = model.security.contextMaxLen;
const filterPrompts =
prompts.length > maxContext + 2
? [prompts[0], ...prompts.slice(prompts.length - maxContext)]
: prompts.slice(0, prompts.length);
prompts.length > maxContext ? prompts.slice(prompts.length - maxContext) : prompts;
// 格式化文本内容
const map = {
@@ -51,11 +49,13 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
content: item.value
})
);
// 第一句话,强调代码类型
formatPrompts.unshift({
role: ChatCompletionRequestMessageRoleEnum.System,
content: '如果你想返回代码,请务必声明代码的类型!并且在代码块前加一个换行符。'
});
// 如果有系统提示词,自动插入
if (model.systemPrompt) {
formatPrompts.unshift({
role: 'system',
content: model.systemPrompt
});
}
// 获取 chatAPI
const chatAPI = getOpenAIApi(userApiKey);
@@ -77,8 +77,9 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
);
console.log(
'response success',
`${(Date.now() - startTime) / 1000}s`,
formatPrompts.reduce((sum, item) => sum + item.content.length, 0)
`time: ${(Date.now() - startTime) / 1000}s`,
`promptLen: ${formatPrompts.length}`,
`contentLen: ${formatPrompts.reduce((sum, item) => sum + item.content.length, 0)}`
);
// 创建响应流

View File

@@ -49,21 +49,12 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
error;
}
const defaultContent = model.systemPrompt
? [
{
obj: 'SYSTEM',
value: model.systemPrompt
}
]
: [];
if (!history) {
// 没有记录,创建一个
const response = await ChatWindow.create({
chatId,
updateTime: Date.now(),
content: defaultContent
content: []
});
responseId = response._id;
}
@@ -78,7 +69,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
secret: model.security,
chatModel: model.service.chatModel
},
history: history ? history.content : defaultContent
history: history ? history.content : []
}
});
} catch (err) {