Kenapa Prompt Internal Saya Wajib Bahasa Inggris
Instruksi internal cron saya pindah full English. Bukan soal gengsi: satu variabel kontrol buat pipeline LLM yang lewat banyak model berbeda.
Malam ini satu chat qwen di pipeline artikel saya kusuruh nulis draft versi English. Instruksinya panjang, salah satu barisnya jelas minta output bahasa Inggris. Yang balik? Bahasa Indonesia juga. Saya baca ulang prompt-nya, instruksi locale emang ada, cuma nyempil di tengah. Chat baru kubikin, aturan bahasa kupindahin ke baris paling atas, langsung nurut.
Kejadian sekecil itu yang bikin saya sebelumnya nulis aturan keras di config: semua prompt internal wajib English. Bukan prompt buat manusia, bukan artikel. Yang kumaksud prompt mesin: instruksi buat cron, buat delegasi agent, buat template tool yang dieksekusi model tanpa ada saya di depan layar.
Salah kaprah model paham semua bahasa
Dulu saya anggap ini urusan selera. Model besar kan udah pinter, kasih instruksi bahasa apa pun pasti ngerti. Anggapan itu yang perlu direvisi. Anthropic nge-publish tabel skor zero-shot chain-of-thought per bahasa, relatif terhadap English yang dikunci di 100%. Bahasa Indonesia nyantol di angka 97.3% untuk Sonnet 4.5 dan 94.2% untuk Haiku 4.5 [1]. Angka itu bukan berarti model "bodoh tiga persen", tapi gap-nya nyata, dan di kelas model kecil tipe Haiku jaraknya paling lebar. Pipeline cron saya justru sering lewat model kelas ini, karena murah dan kuantitasnya banyak.
Bagian lain dari dokumen yang sama justru lebih penting dari angkanya: Claude bisa nebak bahasa jawaban dari konteks percakapan, tapi untuk aplikasi produksi bahasa target harus dinyatakan eksplisit, dan tempat paling andal adalah system prompt [1]. Dengan kata lain, vendor nggak pernah melarang prompt bahasa lokal. Yang mereka minta cuma satu: kejelasan yang ditaruh di tempat yang benar.
Bahasa instruksi dan bahasa output itu dua variabel beda
Kesalahpahaman terbesarnya ada di sini. Chat santai di claude.ai atau chat.qwen.ai bebas pakai bahasa apa pun. Konteksnya panjang, saya bisa koreksi kalau salah. Lain ceritanya dengan prompt mesin: jawabannya nggak ada yang nyekap, dan model di balik router bisa ganti-ganti. Openai aja nulis resmi di dokumentasinya: output model itu non-deterministik, dan biar konsisten mereka nyarankan pin snapshot model plus bikin test buat memantau perilaku prompt tiap iterasi [2]. Kalau prompt-nya ikut ganti bahasa tiap kali ditulis ulang, variabel yang lagi diuji jadi dua.
Google nyumbang sudut pandang lain di dokument Gemini: menulis instruksi dalam bahasa natural itu kadang nggak mudah dan nyisain banyak ruang buat model nafsirin sendiri [3]. Konteksnya emang soal output terstruktur, tapi pelajarannya sama. Makin banyak ruang tafsir, makin besar peluang pipeline meleset tanpa suara.
Jadi keputusan English-untuk-prompt di pipeline saya itu bukan soal gengsi atau ikut-ikutan. Ini urusan infrastruktur: bahasa instruksi kufiksir jadi satu variabel kontrol yang sama di semua model, dari yang paling gede sampai yang paling murah. Pendapat saya tegas di sini: model boleh pinter bahasa apa pun, tapi pipeline produksi nggak boleh ngandelin kepintaran itu.
Penegakan: konversi dulu, jangan eksekusi
Aturan tanpa penegakan cuma doa. Di config saya sekarang ada dua klausul. Pertama, semua prompt internal wajib English: cron, prompt delegasi, template prompt di folder tools. Kedua, begitu ada prompt non-English ketahuan, biasanya sisa tulisan lama, prompt itu wajib dikonversi ke English dulu sebelum diikuti. Dilarang eksekusi apa adanya, sekali pun kelihatannya jelas. Terjemahannya harus nyimpen makna asli plus instruksi bahasa output-nya. Salah tangkap makna di tahap ini mahal harganya, karena kesalahannya berantai di tempat yang nggak ada pengawasnya.
Yang tetap Indonesia justru output-nya. Balasan ke user, artikel berbahasa Indonesia, semuanya diatur eksplisit di baris akhir prompt English-nya: respond in Indonesian. Ringkasan artikel ikut bahasa artikelnya, juga tertulis sama tegasnya. Bahasa instruksi pindah ke English, bahasa hasil tetap ngikutin spec masing-masing. Dua variabel beda, dua tempat aturannya.
Dari kejadian malam ini saya ambil satu keputusan: aturan ini berlaku di semua profil, bukan cuma di repo cron. Prompt Indonesia yang masih lolos bakal diterjemahin dulu, bukan dijalanin. Salah paham sekecil apa pun di pipeline otomatis itu bukan error yang kelihatan, dia senyap.