reduce method
Future<List<ChatMessage> >
reduce(
- List<
ChatMessage> messages, { - CancellationToken? cancellationToken,
override
Reduces the given messages.
Implementation
@override
Future<List<ChatMessage>> reduce(
List<ChatMessage> messages, {
CancellationToken? cancellationToken,
}) async {
if (messages.length <= maxMessageCount) return messages;
// Determine how many messages to keep and how many to summarize.
final keepCount = maxMessageCount ~/ 2;
final toSummarize = messages.sublist(0, messages.length - keepCount);
final toKeep = messages.sublist(messages.length - keepCount);
// Build a summarization request.
final summarizeMessages = [
...toSummarize,
ChatMessage.fromText(ChatRole.user, summarizationPrompt),
];
final response = await chatClient.getChatResponse(
messages: summarizeMessages,
options: ChatOptions(),
cancellationToken: cancellationToken,
);
final summary = response.text;
return [
ChatMessage.fromText(
ChatRole.system,
'Summary of earlier conversation: $summary',
),
...toKeep,
];
}