AI Agents (Agen AI)
Panduan modul antarmuka Agen AI (/dashboard/ai-agents), integrasi asisten percakapan kognitif Analis Keputusan NEXA, starter prompts, tombol kontekstual "Tanya AI", serta konsumsi Server-Sent Events (SSE) di Frontend.
Agen AI (/dashboard/ai-agents)
Modul Agen AI (Analis Keputusan NEXA) adalah antarmuka percakapan kognitif berbasis data nyata (grounded conversational analytics) yang menghubungkan seluruh inteligensi data NEXA. Modul ini menjadi pusat muara bagi seluruh fitur dan tombol "Tanya AI" yang tersebar di modul-modul lain (seperti Peta Risiko, Early Warning, dan Media Monitoring).
Dokumentasi Arsitektur Backend & Gateway
Untuk spesifikasi arsitektur ai-middleware, alur multi-agent hub-and-spoke, proteksi Zero-Write AST Guard, serta konfigurasi Nginx reverse proxy, silakan rujuk ke Pipeline: AIOS.
1. Antarmuka Pengguna & Tampilan Awal (Empty State)
Saat operator pertama kali membuka menu ANALITIK → AI Agents, antarmuka menampilkan ruang percakapan dengan kartu starter prompts interaktif.
Karakteristik Tampilan
- Header Modul: "Agen AI — Analis AI percakapan berbasis data nyata NEXA — semua tombol 'Tanya AI' terhubung ke sini."
- Branding Asisten: "Analis Keputusan NEXA — Ajukan pertanyaan lintas modul (risiko, pangan, keamanan, media). Jawaban selalu berbasis data nyata dengan sumber & tingkat keyakinan."
- Starter Prompts Statis: Grid kartu prompt bawaan yang dapat diklik langsung oleh pengguna (click-to-send).
Daftar Starter Prompts Bawaan
Bagaimana indeks risiko nasional saat ini?Provinsi mana yang berstatus kritis?Ringkas sinyal Early Warning paling mendesak hari ini.Uraikan pemicu risiko di Papua Tengah.Rekomendasi tindakan untuk stabilitas pangan nasional.
2. Trigger Kontekstual Lintas Modul (Tombol "Tanya AI")
Seluruh modul analitik di platform NEXA dilengkapi tombol aksi cepat "Tanya AI". Ketika tombol ini ditekan, pengguna secara mulus dialihkan ke halaman Agen AI dengan membawa konteks modul asal secara otomatis:
Alur Trigger Kontekstual Lintas Modul (Tombol "Tanya AI")
Modul Analitik Asal → Redirect Frontend → Permintaan Stream Berkonteks → Respon Analis AI
Pengguna mengeklik tombol "Tanya AI" pada komponen visual (misal: kartu provinsi berstatus kritis) dan sistem menyematkan payload konteks spesifik.
Frontend mengarahkan router ke halaman Agen AI sambil membawa parameter sesi dan metadata kontekstual modul asal.
Kirim permintaan stream ke backend dengan menyertakan context_module dan context_payload.
Agen cerdas langsung mengevaluasi isu yang relevan dengan modul terkait dan menghasilkan telaah komprehensif tanpa operator harus mengetik ulang konteks masalah.
Contoh Payload Trigger Kontekstual
Saat operator menekan tombol "Tanya AI" pada kartu provinsi berstatus kritis di Peta Risiko:
{
"pertanyaan": "Analisis implikasi situasi ini dan rekomendasikan langkah mitigasi.",
"session_id": null,
"context_module": "peta_risiko",
"context_payload": {
"provinsi": "Papua Tengah",
"status": "KRITIS",
"isu": "Gangguan Kamtibmas",
"skor_indeks": 88.4
}
}3. Panduan Konsumsi Stream SSE di Frontend
Frontend mengonsumsi stream dari backend BFF (/api/chat/stream) menggunakan pustaka @microsoft/fetch-event-source untuk memastikan keandalan koneksi HTTP POST berbasis Server-Sent Events (SSE).
Siklus Event SSE
Siklus Event SSE Stream (/api/chat/stream)
Frontend Client → Backend BFF Proxy → Thought Step → Token Chunk → Final Envelope
Frontend mengirim HTTP POST ke /api/chat/stream membawa payload pertanyaan, context_module, context_payload, dan token autentikasi.
Backend BFF mengalirkan event "step" secara berkala ke Frontend untuk merender status Thought Progress (misal: "Mengakses Data Mart PostgreSQL...", "Memvalidasi berita di Elasticsearch...").
Potongan token teks dialirkan terus-menerus via event "chunk" sehingga tampilan chat dapat merender teks secara instan dengan efek mengetik tanpa jeda.
Backend BFF mengirimkan objek JSON Hybrid Envelope lengkap berisi data chart (Recharts), tabel metrik, peta interaktif, artikel bukti fakta, dan suggested prompts.
Menandai stream telah selesai seluruhnya, mengembalikan form input chat menjadi aktif, dan menyimpan session_id ke state aplikasi.
step: Menampilkan status aktivitas agen cerdas pada Thought Stepper / Progress Bar (misalnya: "Mengakses Data Mart PostgreSQL...", "Memvalidasi data berita di Elasticsearch...").chunk: Potongan token kata yang dialirkan langsung ke komponen tampilan teks dengan efek mengetik (typing animation).final_envelope: Objek JSON terstruktur berisi seluruh artefak visual final (lihat rincian di bawah).done: Penanda stream selesai; kembalikan status input form menjadi aktif dan simpansession_idke state aplikasi.
4. Rendering Kartu Visual (Hybrid Envelope)
Saat menerima event final_envelope, Frontend merender komponen visual berbasis struktur data berikut:
interface FinalEnvelope {
teks: string; // Narasi komprehensif dalam format Markdown/GFM
chart_data?: { // Objek visualisasi data
chart_type: 'bar' | 'line' | 'pie' | 'radar';
title: string;
data: Array<Record<string, any>>;
};
evidence?: Array<{ // Bukti sumber data pendukung
source_type: 'article' | 'sql' | 'vector';
title: string;
url?: string;
snippet: string;
}>;
suggested_prompts?: string[]; // 3 prompt lanjutan interaktif
}Implementasi Komponen UI
- Markdown Narasi: Diterjemahkan menggunakan
ReactMarkdowndengan pluginremarkGfmuntuk merender tabel data, tebal, miring, dan kutipan analitik. - Komponen Grafik: Dirender menggunakan
Rechartssecara dinamis sesuai propertichart_type. - Suggested Action Chips: Dirender sebagai tombol chip interaktif di bawah kartu jawaban. Mengklik chip ini akan otomatis mengirimkan pertanyaan berikutnya dalam
session_idyang sama.
5. Ragam Payload Permintaan dari Frontend
{
"pertanyaan": "Bagaimana indeks risiko nasional saat ini?",
"session_id": null
}6. Tabel Pemetaan Komponen ke PostgreSQL & Elasticsearch
| Komponen / Fitur UI | Endpoint BFF / Gateway | PostgreSQL (Tabel & Kolom Kunci) | Elasticsearch & Memory |
|---|---|---|---|
| Katalog Sesi Percakapan | GET /api/chat/sessionsDELETE /api/chat/sessions/{id} | • chat_sessions↳ id, user_id, title, created_at, updated_at | • agent_execution_logs↳ session_id, task_id, user_id |
| Stream Percakapan & Riwayat Pesan | POST /api/chat/streamGET /api/chat/sessions/{id}/messages | • chat_messages↳ id, session_id, role, content, envelope_payload, created_at | • qdrant: episodic_memory↳ Koleksi riwayat memori per sesi & operator |
| Audit Log Akses Agen | Otomatis via middleware | • audit_log↳ actor_id, action = 'AI_AGENT_QUERY', metadata | - |
Executive Briefing
Spesifikasi teknis modul Executive Briefing (/app/briefing atau /dashboard/briefing), perakitan ringkasan strategis berkala (Hari ini, Kemarin, 1 Minggu, 1 Bulan), serta pemetaan sumber daya Elasticsearch dan PDF engine.
Decision Simulation
Spesifikasi teknis modul Decision Simulation (/app/simulasi atau /dashboard/simulation), pemodelan skenario krisis (What-If Policy Sandbox), penautan peristiwa empiris via Elasticsearch, inferensi kausalitas LLM (POST /ai/simulate), dan persistensi PostgreSQL simulation_runs.