addAll method

Future<void> addAll(
  1. List<ChatMessage> messages
)

Appends messages to the conversation.

Implementation

Future<void> addAll(List<ChatMessage> messages) async {
  if (messages.isEmpty) return;
  await _catchUp();
  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;
}