addAll method
Appends messages to the conversation.
Implementation
Future<void> addAll(List<ChatMessage> messages) async {
if (messages.isEmpty) return;
final vectors = await embedder.embed([for (final m in messages) m.content]);
if (vectors.length != messages.length) {
throw LlmException(
'the embedder returned ${vectors.length} vectors for '
'${messages.length} messages',
);
}
final docs = <Document>[];
for (var i = 0; i < messages.length; i++) {
final stamp = _stamp();
docs.add(
Document(
_id(stamp),
text: messages[i].content,
metadata: {
'kind': 'memory',
'conversation': conversationId,
'role': messages[i].role.name,
'seq': stamp,
'at': DateTime.now().millisecondsSinceEpoch,
},
vector: vectors[i],
),
);
}
await store.upsert(docs);
length += messages.length;
}