Di artikel sebelumnya, kita sudah bikin koneksi dasar antara Laravel dan API AI lewat service class. Itu fondasi yang bagus, tapi chatbot beneran butuh satu hal lagi: ingatan. Tanpa itu, setiap pesan yang kamu kirim dianggap sebagai percakapan baru, dan AI-nya nggak tahu apa yang kalian bahas semenit lalu.
Di artikel ini, kita akan bikin chatbot sederhana yang:
- Ingat pesan-pesan sebelumnya dalam percakapan
- Mengirim seluruh riwayat percakapan ke AI di setiap request
- Punya UI dasar yang bisa langsung dipakai chat di browser
- Menyimpan riwayat percakapan di session (sederhana, belum perlu database)
Kenapa Riwayat Percakapan Itu Penting
API LLM itu stateless. API-nya nggak ingat apa-apa dari request sebelumnya. Kalau kamu cuma kirim pesan terbaru, AI-nya akan jawab tanpa konteks apa pun dari sebelumnya.
Supaya kerasa seperti percakapan beneran, kamu perlu kirim seluruh riwayat pesan setiap kali, contohnya seperti ini:
AI-nya cuma bisa jawab "Budi" di pertanyaan terakhir itu karena kita ikutkan juga pesan-pesan sebelumnya.
Langkah 1: Update Service Class
Mari update
Perubahannya sederhana: dari
Langkah 2: Buat Chat Controller
Buat file
Beberapa catatan:
- Kita validasi panjang pesan. Jangan biarkan user kirim teks tanpa batas, karena itu berpengaruh ke biaya per token.
- Seluruh riwayat, termasuk pesan baru dari user, dikirim ke AI supaya ada konteksnya.
- Kalau pemanggilan API-nya gagal, kita tetap kasih respons yang wajar, bukan halaman error yang berantakan.
Langkah 3: Tambahkan Route
Di
Langkah 4: Buat View Sederhana
Buat file
Selesai. Sekarang kamu punya chatbot yang jalan dan punya ingatan, semuanya berjalan di atas session storage.
Catatan Soal Pakai Session Storage
Menyimpan riwayat chat di session cukup oke untuk demo atau tool internal kecil, tapi ada beberapa batasan yang perlu diingat:
- Data session akan hilang kalau session-nya expired atau user hapus cookie.
- Kurang cocok kalau kamu butuh riwayat chat yang bertahan lintas perangkat atau perlu direview nanti (misalnya untuk tiket support).
- Untuk produk beneran, sebaiknya riwayat percakapan disimpan di database, terkait dengan user ID tertentu.
Kita sengaja bikin sederhana dulu di sini. Riwayat chat berbasis database bisa jadi topik bahasan lanjutan setelah kamu sudah nyaman dengan dasar-dasarnya.
Jangan Lupa: Batasan Token
Setiap model AI punya batas panjang context maksimum. Kalau riwayat percakapan kamu makin panjang, cepat atau lambat kamu akan kena batas itu dan dapat error. Dua cara umum untuk menanganinya:
- Potong pesan lama. Simpan cuma N pesan terakhir sebelum dikirim ke API.
- Ringkas pesan lama. Sesekali minta AI meringkas percakapan sebelumnya jadi versi lebih pendek, lalu pakai ringkasan itu menggantikan riwayat lengkap.
Kita belum implementasikan ini di artikel supaya bahasannya tetap fokus, tapi ini hal yang perlu direncanakan begitu chatbot-mu menangani percakapan yang lebih panjang.
Selanjutnya
Sekarang kita sudah punya chatbot yang jalan, tapi masih terikat ke satu provider AI saja. Di artikel selanjutnya, kita akan bahas Prism PHP, package yang memungkinkan kamu gonta-ganti antara OpenAI, Claude, dan provider lain tanpa harus menulis ulang service class setiap kali.
Ini adalah Part 3 dari series "Laravel + AI Integration".




