createTokenizedPrompt static method
String
createTokenizedPrompt({
- required String text,
- required ProcessedImage processedImage,
- required ModelType modelType,
Creates a properly tokenized prompt for the AI model
Implementation
static String createTokenizedPrompt({
required String text,
required ProcessedImage processedImage,
required ModelType modelType,
}) {
try {
gemmaLog(
'MultimodalImageHandler: Creating tokenized prompt for $modelType...');
// Use ImageTokenizer to create properly formatted prompt
final prompt = tokenizer.ImageTokenizer.createImagePrompt(
text: text,
processedImage: processedImage,
modelType: _convertToTokenizerModelType(modelType),
);
// Validate the prompt contains proper image tokens
final hasValidTokens =
tokenizer.ImageTokenizer.validateImageTokens(prompt, 1);
if (!hasValidTokens) {
gemmaLog(
'MultimodalImageHandler: Warning - Prompt may have tokenization issues');
}
gemmaLog(
'MultimodalImageHandler: Tokenized prompt created (${prompt.length} chars)');
return prompt;
} catch (e) {
gemmaLog('MultimodalImageHandler: Tokenization failed - $e');
// Run the error handler for its diagnostics, then throw — returning a
// text-only fallback prompt silently drops the image and makes the model
// answer as if none was sent (no-silent-fallbacks).
final errorResult = ImageErrorHandler.handleTokenizationError(
e,
StackTrace.current,
modelType: _convertToTokenizerModelType(modelType),
prompt: text,
expectedImageCount: 1,
);
throw Exception('Image tokenization failed: ${errorResult.message}');
}
}