Optimize summarization (#487)

Fixes #435
This commit is contained in:
Will Chen
2025-06-24 21:01:09 -07:00
committed by GitHub
parent fe597db5b3
commit ed4ec1ef58
2 changed files with 190 additions and 3 deletions

View File

@@ -446,7 +446,7 @@ This conversation includes one or more image attachments. When the user uploads
role: "user",
content:
"Summarize the following chat: " +
formatMessages(previousChat?.messages ?? []),
formatMessagesForSummary(previousChat?.messages ?? []),
} satisfies CoreMessage,
];
}
@@ -775,10 +775,31 @@ This conversation includes one or more image attachments. When the user uploads
});
}
export function formatMessages(
export function formatMessagesForSummary(
messages: { role: string; content: string | undefined }[],
) {
return messages
if (messages.length <= 8) {
// If we have 8 or fewer messages, include all of them
return messages
.map((m) => `<message role="${m.role}">${m.content}</message>`)
.join("\n");
}
// Take first 2 messages and last 6 messages
const firstMessages = messages.slice(0, 2);
const lastMessages = messages.slice(-6);
// Combine them with an indicator of skipped messages
const combinedMessages = [
...firstMessages,
{
role: "system",
content: `[... ${messages.length - 8} messages omitted ...]`,
},
...lastMessages,
];
return combinedMessages
.map((m) => `<message role="${m.role}">${m.content}</message>`)
.join("\n");
}