generateResponse method

  1. @override
Future<String> generateResponse(
  1. String prompt, {
  2. List<String>? context,
})
override

Implementation

@override
Future<String> generateResponse(String prompt,
    {List<String>? context}) async {
  final fullPrompt =
      context != null ? '${context.join('\n')}\n\n$prompt' : prompt;

  final url = Uri.parse(
      'https://generativelanguage.googleapis.com/v1beta/models/$modelName:generateContent');

  final response = await http.post(
    url,
    headers: {
      'Content-Type': 'application/json',
      'x-goog-api-key': apiKey,
    },
    body: jsonEncode({
      'contents': [
        {
          'parts': [
            {'text': fullPrompt}
          ]
        }
      ]
    }),
  );

  if (response.statusCode == 200) {
    final data = jsonDecode(response.body);
    try {
      return data['candidates'][0]['content']['parts'][0]['text'] as String;
    } catch (e) {
      return 'Error parsing Gemini response: $e';
    }
  } else {
    throw Exception(
        'Failed to generate response from Gemini: ${response.body}');
  }
}