import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;

class GeminiService {
  static const String apiKey =
      'AIzaSyCGpxG4Jn_eXvFEfANnCLPTpVimEzQZcaM'; // Gunakan API key yang sama dengan fitur deteksi
  static const String baseUrl =
      'https://generativelanguage.googleapis.com/v1beta/models';
  static const String model =
      'gemini-1.5-flash'; // Model yang lebih ringan dan cepat

  /// Metode untuk bertanya ke Gemini API
  static Future<String> askGemini(String prompt) async {
    try {
      final requestBody = {
        'contents': [
          {
            'parts': [
              {'text': prompt},
            ],
          },
        ],
        'generationConfig': {
          'temperature': 0.1, // Lebih deterministik untuk jawaban ya/tidak
          'topK': 1,
          'topP': 1,
          'maxOutputTokens': 50, // Cukup untuk jawaban pendek
        },
      };

      final response = await http.post(
        Uri.parse('$baseUrl/$model:generateContent?key=$apiKey'),
        headers: {'Content-Type': 'application/json'},
        body: jsonEncode(requestBody),
      );

      if (response.statusCode != 200) {
        debugPrint(
          'Gemini API error: ${response.statusCode} - ${response.body}',
        );
        return 'ya'; // Fallback ke positif jika terjadi error
      }

      final responseData = jsonDecode(response.body);
      if (responseData['candidates'] == null ||
          responseData['candidates'].isEmpty) {
        return 'ya'; // Fallback ke positif jika tidak ada respons
      }

      final generatedText =
          responseData['candidates'][0]['content']['parts'][0]['text'];
      return generatedText.trim().toLowerCase();
    } catch (e) {
      debugPrint('Error in Gemini service: $e');
      return 'ya'; // Fallback ke positif jika terjadi exception
    }
  }
}
