transformToChatPrompt method

String transformToChatPrompt({
  1. ModelType type = ModelType.general,
  2. ModelFileType fileType = ModelFileType.binary,
})

Implementation

String transformToChatPrompt(
    {ModelType type = ModelType.general, ModelFileType fileType = ModelFileType.binary}) {
  // DEBUG LOG
  debugPrint('[transformToChatPrompt] modelType=$type, fileType=$fileType, messageType=${this.type}, isUser=$isUser');

  // System messages should not be sent to the model
  if (this.type == MessageType.systemInfo) {
    return '';
  }

  // .task files - MediaPipe handles templates, return raw content
  // EXCEPT FunctionGemma which needs manual formatting (no prefix/suffix in .task)
  if (fileType == ModelFileType.task && type != ModelType.functionGemma) {
    final result = _formatToolResponseContent();
    debugPrint('[transformToChatPrompt] Using _formatToolResponseContent, result length=${result.length}');
    return result;
  }

  // .bin/.tflite files - apply manual formatting based on model type
  final result = switch (type) {
    ModelType.general => _transformGeneral(),
    ModelType.gemmaIt => _transformGemmaIt(),
    ModelType.deepSeek => _transformDeepSeek(),
    ModelType.qwen => _transformQwen(),
    ModelType.llama => _transformLlama(),
    ModelType.hammer => _transformHammer(),
    ModelType.functionGemma => _transformFunctionGemma(),
  };
  return result;
}