Terakhir diperbarui: 26 Oktober 2026

Bahasa Indonesia | English

Tujuan pembelajaran

Setelah menyelesaikan codelab ini, mahasiswa mampu:

Persiapan

1. Apa itu Integrasi Fitur AI?

AI fitur memungkinkan aplikasi mobile berkomunikasi dengan model AI di cloud untuk menyediakan layanan cerdas kepada pengguna:

2. Arsitektur Integrasi AI

+----------------+      HTTPS/wss      +----------------+
|   Flutter UI   | <-----------------> |  AI API Layer  |
|  (Chat, OCR,   |      (Dio/http)     |  (LLM, OCR,    |
|   STT, Image)  |                     |   STT, Vision) |
+----------------+                     +----------------+
        |                                      |
        | API Key (secure storage)             | Response
        v                                      v
+----------------+      Optional      +----------------+
|  Local Cache   | <-----------------> |   Backend    |
|  (Hive/SQLite) |     (batching)     |  (auth, log) |
+----------------+                     +----------------+

3. Prompt Design untuk Mobile

KomponenContohTujuan
System prompt"Kamu asisten kampus ramah, jawab dalam Bahasa Indonesia, maksimal 2 kalimat"Menetapkan persona dan batas
User prompt"Jadwal kampus hari Senin?"Input pengguna
KonteksData jadwal, profil user, lokasiMembuat respons relevan
BatasJangan memberikan data pribadi lainPrivasi dan keamanan

Tips: Pertahankan prompt singkat dan spesifik, terjemahkan hasil jika diperlukan, dan validasi output sebelum ditampilkan ke user.

Langkah 1: Tambahkan dependensi

Tambahkan ke pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  http: ^1.2.0
  flutter_secure_storage: ^9.0.0
  riverpod: ^2.5.0

Langkah 2: Buat AI Service

Buat lib/ai/ai_service.dart:

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter_secure_storage/flutter_secure_storage.dart';

class AiService {
  final _storage = const FlutterSecureStorage();
  final _apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent';

  Future<String> ask(String question) async {
    final apiKey = await _storage.read(key: 'ai_api_key');
    if (apiKey == null || apiKey.isEmpty) {
      throw Exception('API key tidak tersedia. Silakan atur di pengaturan.');
    }

    final response = await http.post(
      Uri.parse('$_apiUrl?key=$apiKey'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode({
        'contents': [{
          'parts': [{'text': question}]
        }]
      }),
    );

    if (response.statusCode == 200) {
      final data = jsonDecode(response.body);
      return data['candidates'][0]['content']['parts'][0]['text'];
    } else {
      throw Exception('Gagal memanggil AI API: ${response.statusCode}');
    }
  }

  Future<void> saveApiKey(String key) async {
    await _storage.write(key: 'ai_api_key', value: key);
  }
}

Langkah 3: Buat Chat Screen

Buat lib/features/chat_screen.dart dengan streaming response dan indikator loading.

OCR (Optical Character Recognition)

Speech-to-Text

Image Understanding

final result = await aiService.recognizeText(imageFile);
final text = await aiService.speechToText(audioFile);

Tabel Risiko dan Mitigasi

RisikoMitigasi
Bocor data penggunaJangan kirim data sensitif ke AI API
Biaya melonjakBatasi request per user/hari, gunakan cache lokal
API error / downTampilkan pesan ramah, opsi coba lagi, mode offline
Respons tidak relevanTerapkan validasi dan fallback ke data lokal

Contoh Fallback

try {
  final response = await aiService.ask(question);
} catch (e) {
  showDialog(
    context: context,
    builder: (_) => AlertDialog(
      title: const Text('Layanan AI Sibuk'),
      content: const Text('Coba lagi nanti atau gunakan mode offline.'),
    ),
  );
}

Mini project / Industry Challenge

  1. Integrasikan satu fitur AI (chat atau OCR atau Speech-to-Text) ke project yang sudah ada.
  2. Sertakan prompt sistem, user prompt, dan output awal AI di docs/ai-log.md.
  3. Bukti mesin hijau: flutter analyze + flutter test di README.
  4. Tabel risiko + mitigasi privasi dan biaya di README.
  5. Push ke 10-week-10-ai-feature-integration/ berisi lib/, docs/, README.md, screenshots/.

Refleksi

Referensi pendukung