Anatomi LLM & Siklus Hidup AI Agent
Membongkar Perbedaan Fundamental antara Model Bahasa Pasif dan Agen Otonom Berulang
01. Target Pembelajar & Prasyarat
Developer pemula-menengah dan praktisi yang ingin memahami arsitektur agen di balik antarmuka obrolan.
02. Kompetensi Konseptual (Level 1–2)
- ✓Membedakan sifat stateless dari pemanggilan API LLM biasa dengan arsitektur loop berkeadaan (stateful agent loop).
- ✓Menjelaskan 5 tahapan siklus hidup agen: Persepsi, Perencanaan, Tindakan, Observasi, dan Refleksi.
03. Kompetensi Praktis & Artefak Nyata (Level 3–4)
- ✓Membangun loop eksekusi agen minimal di Node.js menggunakan array messages yang dipertahankan lintas putaran.
- ✓Menginspeksi payload HTTP request dan response token pada setiap iterasi agen.
04. Aplikasi Nyata & Verifikasi
Penerapan Industri: Pondasi utama seluruh bot operasional, periset otomatis, dan asisten kerja terprogram.
Metode Verifikasi: Menjalankan skrip pengujian terminal dan memverifikasi jejak array messages pada setiap putaran.
Mengapa Subjek Ini Krusial dalam Rekayasa Nyata?
Pelajari mengapa Large Language Model (LLM) murni bersifat stateless dan bagaimana siklus Perceive–Plan–Act–Observe–Reflect mengubahnya menjadi agen otonom.
Dalam lingkungan produksi, kegagalan memahami batas-batas arsitektur sistem sering kali menyebabkan bug yang sulit dilacak, pemborosan biaya komputasi, atau antarmuka yang lambat bagi pengguna.
Bagaimana Sistem Sebenarnya Bekerja di Tingkat Protokol
Hakikat Prediksi Token: Mengapa LLM Bersifat Stateless
Ketika Anda berinteraksi dengan model AI melalui antarmuka apa pun, mudah sekali terbawa ilusi bahwa Anda sedang berbicara dengan entitas yang memiliki ingatan berkesinambungan. Namun di tingkat protokol jaringan, setiap kali Anda memicu pembuatan teks, yang terjadi hanyalah sebuah HTTP POST request tunggal ke endpoint seperti `/v1/chat/completions`.
Server model menerima array pesan teks, mengubahnya menjadi token angka, menghitung distribusi probabilitas token berikutnya, dan mengalirkan token kembali ke klien. Begitu respons selesai dikirim, memori GPU server model tidak menyimpan catatan apa pun tentang percakapan Anda. Jika aplikasi Anda tidak mengirimkan kembali riwayat tersebut pada request berikutnya, model akan merespons seolah-olah ia baru pertama kali bertemu Anda.
Large Language Model adalah mesin inferensi murni tanpa state. Tanggung jawab manajemen konteks, persistensi riwayat, dan logika iterasi 100% berada di tangan aplikasi host Anda.
Siklus 5 Langkah: Mengubah Generator Teks Menjadi Agen
Untuk mengubah mesin prediksi token menjadi agen yang mampu menyelesaikan tugas nyata, kita membungkus LLM di dalam sebuah kontrol loop terprogram yang dikenal sebagai Siklus Otonom:
1. Persepsi (Perceive): Menerima input pengguna dan membaca lingkungan saat ini (state).
2. Perencanaan (Plan): Meminta model menyusun langkah atau memilih fungsi yang harus dijalankan.
3. Tindakan (Act): Menjalankan kode atau memanggil API eksternal berdasarkan instruksi model.
4. Observasi (Observe): Menangkap hasil dari tindakan tersebut (data, error, atau status).
5. Refleksi (Reflect): Mengevaluasi apakah tugas sudah selesai atau memerlukan putaran tindakan baru.
Alur Arsitektur Sistem Otonom & Runtime
Pesan bahasa alami diterima melalui antarmuka web atau webhook chat.
{
"input": "Berapa estimasi biaya pembuatan landing page bisnis?"
}Koreksi Asumsi Umum vs Realitas Rekayasa
“LLM mengingat riwayat percakapan secara mandiri di cloud.”
LLM murni sepenuhnya stateless. Setiap putaran baru mewajibkan aplikasi kita mengirimkan ulang seluruh riwayat messages[] dari awal.
“Chatbot biasa dan AI Agent adalah hal yang sama.”
Chatbot biasa hanya melakukan satu kali request-response (Single-Turn). AI Agent memiliki loop yang menjalankan alat, membaca observasi, dan merencanakan langkah berikutnya secara mandiri.
Implementasi Langkah-demi-Langkah
Hasil akhir yang diharapkan: Sebuah program CLI Node.js yang mengeksekusi simulasi perburuan data hingga tujuan tercapai dalam maksimal 5 putaran.
lab-a1-m1/ └── minimal-agent-loop.mjs
1Membuat Skrip Agent Loop Minimal
Kode di bawah ini mendemonstrasikan bagaimana loop `while` mengendalikan percakapan dan mengevaluasi status tujuan.
| 1 | // minimal-agent-loop.mjs |
| 2 | // Status: ✓ Tested Successfully (Node.js v20+) |
| 3 | |
| 4 | async function simulasiKognisiLLM(messages) { |
| 5 | const turnCount = messages.filter(m => m.role === 'assistant').length + 1; |
| 6 | if (turnCount === 1) { |
| 7 | return { |
| 8 | role: 'assistant', |
| 9 | content: 'RENCANA: Saya perlu memeriksa status server terlebih dahulu.', |
| 10 | actionNeeded: 'CHECK_SERVER_STATUS' |
| 11 | }; |
| 12 | } else if (turnCount === 2) { |
| 13 | return { |
| 14 | role: 'assistant', |
| 15 | content: 'RENCANA: Server aktif. Sekarang saya akan mengambil metrik beban CPU.', |
| 16 | actionNeeded: 'FETCH_CPU_LOAD' |
| 17 | }; |
| 18 | } else { |
| 19 | return { |
| 20 | role: 'assistant', |
| 21 | content: 'SELESAI: Seluruh metrik telah dikumpulkan. Server dalam kondisi prima (CPU 14%).', |
| 22 | actionNeeded: null // Selesai |
| 23 | }; |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | async function jalankanAgentLoop(tugasAwal) { |
| 28 | const MAX_TURNS = 5; |
| 29 | const messages = [ |
| 30 | { role: 'system', content: 'Anda adalah agen audit infrastruktur otomatis.' }, |
| 31 | { role: 'user', content: tugasAwal } |
| 32 | ]; |
| 33 | |
| 34 | console.log('[AGENT HOST] Memulai tugas:', tugasAwal); |
| 35 | |
| 36 | for (let turn = 1; turn <= MAX_TURNS; turn++) { |
| 37 | console.log(`\n--- Putaran Kognitif #${turn} ---`); |
| 38 | const respons = await simulasiKognisiLLM(messages); |
| 39 | messages.push({ role: 'assistant', content: respons.content }); |
| 40 | console.log('[AGENT ASSISTANT]:', respons.content); |
| 41 | |
| 42 | if (!respons.actionNeeded) { |
| 43 | console.log('\n[AGENT HOST] Tujuan tercapai secara mandiri!'); |
| 44 | return; |
| 45 | } |
| 46 | |
| 47 | // Melakukan Tindakan & Observasi |
| 48 | console.log(`[WORKER ACTION] Mengeksekusi: ${respons.actionNeeded}`); |
| 49 | const hasilObservasi = `Status untuk ${respons.actionNeeded}: OK (Timestamp: ${Date.now()})`; |
| 50 | messages.push({ role: 'system', content: `OBSERVASI: ${hasilObservasi}` }); |
| 51 | console.log('[HOST OBSERVATION]:', hasilObservasi); |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | jalankanAgentLoop('Periksa kesehatan server produksi Z-Automation'); |
[AGENT HOST] Memulai tugas: Periksa kesehatan server produksi Z-Automation --- Putaran Kognitif #1 --- [AGENT ASSISTANT]: RENCANA: Saya perlu memeriksa status server terlebih dahulu. [WORKER ACTION] Mengeksekusi: CHECK_SERVER_STATUS [HOST OBSERVATION]: Status untuk CHECK_SERVER_STATUS: OK --- Putaran Kognitif #2 --- [AGENT ASSISTANT]: RENCANA: Server aktif. Sekarang saya akan mengambil metrik beban CPU. [WORKER ACTION] Mengeksekusi: FETCH_CPU_LOAD [HOST OBSERVATION]: Status untuk FETCH_CPU_LOAD: OK --- Putaran Kognitif #3 --- [AGENT ASSISTANT]: SELESAI: Seluruh metrik telah dikumpulkan. Server dalam kondisi prima (CPU 14%). [AGENT HOST] Tujuan tercapai secara mandiri!
Mengantisipasi Masalah Umum & Tantangan Ekstensi
Modifikasi fungsi simulasiKognisiLLM agar mampu menangani error acak pada tindakan FETCH_CPU_LOAD dan melakukan percobaan ulang.
Uji Kompetensi Mandiri & Verifikasi Hasil
Standar kelulusan Z-Automation mewajibkan skor minimum 80 / 100 Poin dengan komponen Implementasi Praktis minimal 21 / 35 Poin (60%). Jawab soal diagnostik dan centang hasil pengujian praktis Anda.
BAGIAN A // PERTANYAAN DIAGNOSTIK KONSEPTUAL & TEKNIS (40 POIN)
01.Mengapa Large Language Model (LLM) murni disebut sebagai sistem yang 'stateless'?
02.Apa konsekuensi fatal jika sebuah program agent loop tidak memiliki batas maksimum putaran (MAX_TURNS)?
BAGIAN B // DAFTAR PERIKSA HASIL IMPLEMENTASI PRAKTIS (35 POIN — MIN. 21 POIN)
Centang item di bawah ini hanya jika Anda telah menjalankan kode di komputer Anda dan mengamati output yang benar: