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