Beberapa minggu terakhir, AI bot yang saya bikin punya satu kebiasaan yang bikin capek: dia kebanyakan ngomong.
Mau prompt-nya sudah rapi, sistem message sudah jelas, bahkan struktur JSON sudah saya tentuin — tetap aja dia suka ngelantur. Kadang nambahin kalimat random, kadang nyelipin emoji, kadang tiba-tiba kasih “tips JavaScript” yang nggak ada hubungannya sama sekali.
Awalnya saya pikir ini hal normal. Namanya juga AI — kayak iPhone yang suka panas mendadak setelah update, atau laptop yang tiba-tiba lambat, padahal semua normal. Model AI juga punya sifat yang susah ditebak, bahkan OpenAI sendiri ngakuin soal risiko halusinasi di dokumentasi mereka.

Saya pernah cerita soal AI yang nemuin bug saya sebelum saya sadar (itu kejadian lucu sih — kalau mau baca, ada di sini).
Tapi ada satu hal yang bikin saya kaget…
Saya cuma ubah satu baris.
Beneran satu baris.
Dan tiba-tiba bot saya berhenti halusinasi.
✅ Baris Ajaib yang Bisa Stop Halusinasi AI
Cuma ini:
max_output_tokens: 150Udah.
Serius.
Nggak ada trik aneh-aneh.
Nggak pakai prompt super rumit.
Nggak perlu arsitektur RAG atau chain of thought panjang.
Cuma membatasi dia supaya nggak kebanyakan ngomong.
Dan efeknya langsung kerasa:
- jawabannya lebih pendek
- lebih konsisten
- JSON lebih rapi
- nggak lagi tiba-tiba ngoceh
- jauh lebih predictable
Saya baru sadar:
kebanyakan halusinasi muncul di bagian akhir generasi.
Model udah ngasih apa yang kita minta, tapi dia masih “punya ruang” buat ngomong — jadi mulai improvisasi.
Potong ruangnya → potong halusinasinya.
Pas saya baca-baca, ternyata behavior ini juga sempat dibahas sama Vercel di dokumentasi AI SDK mereka tentang token boundary (bisa cek di sini). Cocok banget sama pengalaman saya.
✅ Sebelum vs Sesudah (Contoh Nyata)
Sebelum (tanpa batas token):
{
"name": "Sarah",
"active": true,
"comment": "By the way, here's a random tip about JavaScript closures..."
}Sesudah (pakai max_output_tokens):
{
"name": "Sarah",
"active": true
}Nggak ada drama.
Nggak ada quotes bijak.
Nggak ada ngoceh tiba-tiba.
Cuma data yang saya minta. Rapi.
✅ Kenapa Ini Bisa Bekerja
Saya nggak mau sok-sokan banget jelasin teori token-level probability, tapi dari pengalaman:
- AI mulai ngaco setelah jawab inti pertanyaan
- makin panjang output, makin besar risiko nyasar
- kalau diberi ruang panjang, AI mulai improvisasi
- output limit = disiplin otomatis
Ibarat temen yang suka cerita panjang:
“Jawab pertanyaannya aja, jangan ceramah.”

Nah, max_output_tokens itu kayak batasan halus yang bikin AI tetap on track.
Tanpa saya sadari, behavior kayak gini juga ternyata jarang dibahas orang. Padahal riset kayak dari Stanford soal LLM drifting (bisa baca di sini) juga nunjukin pola yang mirip: output makin panjang = makin rentan halusinasi.
✅ Fix Lain yang Juga Bantu (Tapi Nggak Sekuat Satu Baris Ini)
Fix kecil lain yang sedikit bantu:
✅ Turunin temperature
Biasanya saya turunin dari 0.7 → 0.2 atau 0.0
MDN punya penjelasan simpel soal temperature yang bagus banget (cek di sini).
✅ Tambahin system message simpel
Kayak:
“Jawab hanya dengan JSON yang valid. Tanpa penjelasan.”
✅ Tambah 1 contoh output
Kadang satu contoh jauh lebih powerful dibanding instruksi berpanjang-panjang.
Tapi tetep ya, perubahan terbesar datang dari batas output tadi.
✅ Code Node.js yang Saya Pakai
const response = await client.chat.completions.create({
model: "gpt-4o",
messages,
max_output_tokens: 150,
temperature: 0.2,
response_format: { type: "json_object" }
});
Ringkas, bersih, dan nggak bikin AI kebanyakan gaya.
Btw, konsep output yang terkontrol ini sebenernya mirip sama yang dijelasin Node.js soal stream dan data handling (ada di sini). Lucu juga efeknya kebawa ke LLM.
✅ Catatan Tambahan — Model On-Device Juga Lebih Jinak
Belakangan saya lagi sering otak-atik LLM yang jalan di perangkat sendiri (on-device).
Model kayak gini memang cenderung lebih “hemat” output, jadi natural lebih sedikit halusinasi. Saya pernah bahas soal masa depan local LLMs di sini.

Dan setelah pakai max_output_tokens, rasanya makin jelas kenapa model kecil kadang lebih “patuh”.
✅ Yang Paling Bikin Heran: Fix Ini Jarang Banget Ada yang Bahas
Artikel soal AI debugging biasanya bahas:
- prompting yang bagus
- RAG
- chain of thought
- arsitektur agent
- temperatur
- pemisahan role
Tapi jarang banget ada yang bahas output limit.
Padahal efeknya gede.
Wired juga pernah bikin artikel yang ngejelasin gimana LLM makin unpredictable kalau outputnya panjang (ada di sini). Dan jujur, pengalaman saya persis kayak yang mereka bilang.
✅ Penutup
Hal yang bikin saya ngakak sendiri adalah…
Saya udah coba macam-macam fix canggih, tapi yang bekerja justru satu baris kecil.
Kadang kita mikir masalah besar harus ada solusi besar.
Padahal…
Kadang cuma satu baris.
Dan langsung kelar.
Kalau suka artikel santai kayak tentang halusinasi AI ini, saya juga pernah bandingin MacBook Air sama Zenbook OLED (yang hasilnya lumayan mengejutkan) di sini.
Atau kalau penasaran sama update iOS terbaru, saya juga ada pembahasannya di sini.
Tapi buat sekarang, coba tambahin max_output_tokens.
Siapa tahu AI kamu ikut jadi lebih “pendiam”.










