getResponse method
Implementation
@override
Future<String> getResponse() async {
if (kDebugMode) {
print('🚀 getResponse: Starting response generation');
}
try {
final promptArray = _createPromptArray();
if (kDebugMode) {
print('🎯 getResponse: Prompt array type: ${promptArray.runtimeType}');
print('🎯 getResponse: Is JSString? ${promptArray is JSString}');
}
String response;
// Use appropriate method based on prompt type
if (promptArray is JSString) {
if (kDebugMode) {
print('📝 getResponse: Using generateResponse for text-only prompt');
}
response = (await llmInference.generateResponse(promptArray, null).toDart).toDart;
} else {
if (kDebugMode) {
print('🖼️ getResponse: Using generateResponseMultimodal for multimodal prompt');
}
response = (await llmInference.generateResponseMultimodal(promptArray, null).toDart).toDart;
}
if (kDebugMode) {
print('✅ getResponse: Successfully generated response of length ${response.length}');
print('✅ getResponse: Response preview: ${response.substring(0, math.min(100, response.length))}...');
}
// Don't add response back to promptParts - that's handled by InferenceChat
return response;
} catch (e, stackTrace) {
if (kDebugMode) {
print('❌ getResponse: Exception caught: $e');
print('❌ getResponse: Stack trace: $stackTrace');
}
rethrow;
}
}