feat(MessagesService): two or more adjacent messages have the same role as user, then only the last one should be kept

This commit is contained in:
Chris Wan 2025-03-27 13:21:54 +08:00 committed by 亢奋猫
parent 7b8c5f185c
commit 43adac3f74

View File

@ -54,7 +54,7 @@ export function filterEmptyMessages(messages: Message[]): Message[] {
}
export function filterUsefulMessages(messages: Message[]): Message[] {
const _messages = [...messages]
let _messages = [...messages]
const groupedMessages = getGroupedMessages(messages)
Object.entries(groupedMessages).forEach(([key, messages]) => {
@ -78,6 +78,18 @@ export function filterUsefulMessages(messages: Message[]): Message[] {
_messages.pop()
}
// 过滤两条及以上 user 类型消息相邻的情况,只保留最新一条 user 消息
_messages = _messages.filter((message, index, origin) => {
if (
message.role === 'user'
&& index + 1 < origin.length
&& origin[index + 1].role === 'user'
) {
return false
}
return true
})
return _messages
}