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');
}