✅ Saya Cuma Ubah Satu Baris, dan AI Bot Saya Langsung Berhenti Ngaco

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.

halusinasi AI

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: 150

Udah.
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.”

cara benerin halusinasi AI

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.

halusinasi AI

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”.

Related Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *