Menavigasi sisi legal & tata kelola aplikasi AI: EU AI Act, GDPR & PDP, data retention, dan auditability untuk sistem AI. Episode ini juga membahas praktik data minimization, mekanisme opt-out, dan logging yang dirancang untuk memenuhi tuntutan compliance.

Setelah di episode 16 kalian mengamankan aplikasi dari serangan teknis, episode ini menangani lapisan yang sering dilupakan engineer sampai terlambat: regulasi dan tata kelola. Aplikasi AI yang memproses data orang — apalagi PII (personal identifiable information) — hidup di tengah aturan yang makin ketat. Di 2026, "kan berjalan kok" bukan lagi pembelaan yang cukup.
Mengapa penting? Karena kegagalan compliance berarti denda besar, larangan beroperasi, dan kehilangan kepercayaan. EU AI Act, GDPR, dan PDP (UU Perlindungan Data Pribadi Indonesia, efektif sejak 2024) memberikan kewajiban nyata yang bisa diterjemahkan ke keputusan teknis. Episode ini mengajarkan cara menerjemahkan pasal-pasal itu ke dalam arsitektur dan kode.
Regulasi AI komprehensif pertama di dunia, berlaku bertahap. Kerangka utamanya risk-based:
| Kategori | Contoh | Kewajiban |
|---|---|---|
| Unacceptable risk | Social scoring, manipulasi subliminal | Dilarang |
| High risk | Rekrutmen, kredit, kesehatan | Penilaian dampak, dokumentasi, oversight |
| Limited risk | Chatbot, deepfake | Transparansi (label AI) |
| Minimal risk | Filter spam, penerjemah | Ringan |
LLM serba guna (general-purpose AI) sendiri dikategorikan khusus dengan kewajiban transparansi dan systemic risk untuk model besar.
Prinsip keduanya hampir identik — dan sangat teknis:
Untuk aplikasi AI, prinsip-prinsip ini menjadi keputusan arsitektur: apa yang boleh masuk ke prompt, berapa lama disimpan, dan bagaimana bisa dihapus.
Data minimization untuk LLM berarti: jangan kirim lebih banyak data dari yang dibutuhkan untuk satu request. Penerapannya nyata di pipeline RAG (episode 7):
def build_rag_context(hits):
"""Hanya kirim field yang diperlukan, bukan seluruh dokumen."""
lines = []
for hit in hits:
# ambil hanya field relevan; buang PII & field internal
cleaned = {
"judul": hit.get("title", ""),
"isi": redact_pii(hit.get("content", "")),
"tanggal": hit.get("date", ""),
}
lines.append(json.dumps(cleaned, ensure_ascii=False))
return "\n---\n".join(lines)Prinsipnya: PII tidak boleh masuk ke prompt kalau tidak esensial. Cara yang sama berlaku untuk logging (episode 18): jangan log prompt mentah yang memuat nomor telepon.
Regulasi memaksa kalian mendefinisikan berapa lama data disimpan — dan menghapus setelahnya. Ini kontras dengan kebiasaan engineer menyimpan log selamanya.
# data yang dikirim ke LLM (prompt/response):
# - raw: 30 hari (debugging)
# - ter-agregasi & ter-anonim: 12 bulan (evaluasi)
# - feedback pengguna: 24 bulan (training data)
# - audio transkrip: 7 hari setelah tugas selesaiImplementasi teknisnya: timestamp setiap record + job pembersihan terjadwal, atau object lifecycle policy di penyimpanan:
aws s3api put-bucket-lifecycle-configuration \
--bucket ai-prompts-logs \
--lifecycle-configuration file://lifecycle.jsonKapan datanya dihapus: dengan proses terjadwal (cron) atau managed lifecycle — tapi yang penting ada definisi tertulis yang diikuti sistem.
Auditor akan bertanya tiga hal: model apa yang dipakai? dengan konfigurasi apa? data apa yang diproses, dan apa hasilnya? Ini mengharuskan audit log untuk setiap keputusan AI:
import json, time, uuid
def log_ai_decision(record):
entry = {
"id": uuid.uuid4().hex,
"timestamp": time.time(),
"request_id": record["request_id"],
"user_id": record["user_id"],
"model": record["model"],
"prompt_version": record["prompt_version"], # dari registry episode 15
"input_hash": sha256(record["input"]).hexdigest(), # jangan simpan raw PII
"output_hash": sha256(record["output"]).hexdigest(),
"token_usage": record["token_usage"],
"guardrails": record.get("guardrails_triggered", []),
}
append_to_audit_store(entry)Perhatikan praktiknya: simpan hash input, bukan raw, jika raw memuat PII; simpan prompt version agar bisa menjawab "versi prompt apa yang menghasilkan keputusan ini".
GDPR/PDP mewajibkan mekanisme opt-out dan hak atas data. Untuk AI, dua skenario nyata:
def should_process_with_ai(user_id):
return not get_user_preference(user_id, "ai_opt_out")
if should_process_with_ai(user_id):
answer = call_llm(build_prompt(user_id))
else:
answer = fallback_rule_based(user_id)Teknologi saja tidak cukup; governance adalah proses:
Note
Regulasi adalah bagian dari desain, bukan lapisan setelah jadi. Keputusan kecil di awal — menyimpan hash daripada raw PII, menandai prompt version, memisahkan data pengguna per-tenant — jauh lebih murah daripada retrofit saat audit datang.
Inti yang harus dibawa pulang:
Di episode 18 selanjutnya kita akan membahas Observability & Monitoring — tracking token, latency & cost, tracing RAG pipeline & agent (LangSmith, OpenLLMetry/OpenTelemetry GenAI), dan alerting. Sampai jumpa di episode 18!