mirror of
https://github.com/LLM-Red-Team/kimi-free-api.git
synced 2024-11-01 18:29:19 +08:00
Merge pull request #42 from Yanyutin753/master
optimize code in messagesPrepare
This commit is contained in:
commit
462c64656e
@ -362,53 +362,37 @@ function extractRefFileUrls(messages: any[]) {
|
||||
* @param messages 参考gpt系列消息格式,多轮对话请完整提供上下文
|
||||
*/
|
||||
function messagesPrepare(messages: any[]) {
|
||||
// 先剔除所有的 base64 数据
|
||||
let validMessages = messages.map((message) => {
|
||||
if (Array.isArray(message.content)) {
|
||||
message.content = message.content.filter(v => {
|
||||
if (typeof v === 'object' && ['file', 'image_url'].includes(v['type'])) {
|
||||
// 如果内容是 base64 数据,就剔除
|
||||
return !util.isBASE64Data(v['url']);
|
||||
}
|
||||
// 如果不是 base64 数据,就保留
|
||||
return true;
|
||||
});
|
||||
}
|
||||
return message;
|
||||
});
|
||||
|
||||
// 检查最新消息是否含有"type": "image_url"或"type": "file",如果有则注入消息
|
||||
let latestMessage = validMessages[validMessages.length - 1];
|
||||
// 注入消息提升注意力
|
||||
let latestMessage = messages[messages.length - 1];
|
||||
let hasFileOrImage = Array.isArray(latestMessage.content)
|
||||
&& latestMessage.content.some(v => (typeof v === 'object' && ['file', 'image_url'].includes(v['type'])));
|
||||
if (hasFileOrImage) {
|
||||
let newFileMessage = {
|
||||
"content": "关注用户最新发送的文件和消息",
|
||||
"content": "关注用户最新发送文件和消息",
|
||||
"role": "system"
|
||||
};
|
||||
validMessages.splice(validMessages.length - 1, 0, newFileMessage);
|
||||
messages.splice(messages.length - 1, 0, newFileMessage);
|
||||
logger.info("注入提升尾部文件注意力system prompt");
|
||||
} else {
|
||||
let newTextMessage = {
|
||||
"content": "关注用户最新的消息",
|
||||
"role": "system"
|
||||
};
|
||||
validMessages.splice(validMessages.length - 1, 0, newTextMessage);
|
||||
messages.splice(messages.length - 1, 0, newTextMessage);
|
||||
logger.info("注入提升尾部消息注意力system prompt");
|
||||
}
|
||||
|
||||
const content = validMessages.reduce((content, message) => {
|
||||
const content = messages.reduce((content, message) => {
|
||||
if (Array.isArray(message.content)) {
|
||||
return message.content.reduce((_content, v) => {
|
||||
if (!_.isObject(v) || v['type'] != 'text')
|
||||
return _content;
|
||||
return _content + ('user:' + v['text'] || '') + "\n";
|
||||
if (!_.isObject(v) || v['type'] != 'text') return _content;
|
||||
return _content + `\n${message.role || "user"}:${v["text"] || ""}`;
|
||||
}, content);
|
||||
}
|
||||
return content += `${message.role || 'user'}:${wrapUrlsToTags(message.content)}\n`;
|
||||
return content += `\n${message.role || 'user'}:${wrapUrlsToTags(message.content)}`;
|
||||
}, '');
|
||||
|
||||
logger.info("\n对话合并:\n" + content);
|
||||
logger.info("\n对话合并:" + content);
|
||||
return [
|
||||
{ role: 'user', content }
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user