createImageMessage static method

Map<String, dynamic> createImageMessage({
  1. required String text,
  2. required ProcessedImage processedImage,
  3. required String role,
})

Creates a properly structured message object for multimodal AI models that prevents tokenization errors and image corruption.

Implementation

static Map<String, dynamic> createImageMessage({
  required String text,
  required ProcessedImage processedImage,
  required String role,
}) {
  try {
    debugPrint('ImageTokenizer: Creating structured image message...');

    // Validate inputs
    if (text.isEmpty) {
      throw const ImageTokenizationException('Text content cannot be empty');
    }

    if (processedImage.base64String.isEmpty) {
      throw const ImageTokenizationException('Processed image Base64 string cannot be empty');
    }

    // Create structured message following multimodal AI model requirements
    final message = {
      'role': role,
      'content': [
        {
          'type': 'text',
          'text': text,
        },
        {
          'type': 'image',
          'image_data': {
            'data': processedImage.base64String,
            'format': processedImage.format,
          },
        },
      ],
    };

    debugPrint('ImageTokenizer: Structured message created with '
        '${(message['content'] as List).length} content items');

    return message;
  } catch (e) {
    debugPrint('ImageTokenizer: Error creating image message - $e');
    throw ImageTokenizationException('Failed to create image message: $e');
  }
}