toBufferString method

String toBufferString({
  1. String systemPrefix = SystemChatMessage.defaultPrefix,
  2. String humanPrefix = HumanChatMessage.defaultPrefix,
  3. String aiPrefix = AIChatMessage.defaultPrefix,
  4. String toolPrefix = ToolChatMessage.defaultPrefix,
})

This function is to get a string representation of the chat messages based on the message content and role.

Implementation

String toBufferString({
  final String systemPrefix = SystemChatMessage.defaultPrefix,
  final String humanPrefix = HumanChatMessage.defaultPrefix,
  final String aiPrefix = AIChatMessage.defaultPrefix,
  final String toolPrefix = ToolChatMessage.defaultPrefix,
}) {
  return map((final m) {
    return switch (m) {
      SystemChatMessage _ => '$systemPrefix: ${m.contentAsString}',
      HumanChatMessage _ => '$humanPrefix: ${m.contentAsString}',
      AIChatMessage _ =>
        m.toolCalls.isEmpty
            ? '$aiPrefix: ${m.contentAsString}'
            : m.toolCalls
                  .map((c) => '$aiPrefix: ${c.id} ${c.name}(${c.arguments})')
                  .join('\n'),
      ToolChatMessage(toolCallId: final id, content: final c) =>
        '$toolPrefix: $id=$c',
      final CustomChatMessage m => '${m.role}: ${m.contentAsString}',
    };
  }).join('\n');
}