fix: vision model hanya deskripsi, tidak memutuskan moderasi

Root cause: vision model diminta untuk 'flag' dan 'menilai' gambar,
sehingga screenshot terminal/chat biasa diklaim sebagai 'situs perjudian'.

Fix:
- vision prompt: HANYA deskripsi objektif (objek, teks, layout, jenis gambar)
- larang tegas kata 'gambling', 'judi', 'pelanggaran', 'harus dihapus'
- tambah buildGeneralImageVisionPrompt di discord-gateway stickerPrompt
- MEDIA_INSTRUCTIONS: tegaskan batch LLM adalah hakim, vision hanya saksi mata
- deskripsi netral (terminal, chat, editor kode) tidak boleh jadi dasar flag

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-06-02 11:08:41 +07:00
co-authored by Claude Opus 4.8
parent 5f419a6f0f
commit 55ee8ade16
5 changed files with 88 additions and 82 deletions
@@ -94,3 +94,42 @@ export function buildCustomEmojiTextOnlyFallback(emojiName: string): string {
`Custom emoji di Discord adalah ekspresi/emosi umum, bukan konten ofensif.]`
);
}
/**
* Prompt for analyzing regular images (attachments, embeds, links).
*
* VISION MODEL ONLY DESCRIBES — it does NOT decide moderation.
* The main text LLM makes all moderation decisions using the description.
*/
export function buildGeneralImageVisionPrompt(
sourceLabel: string,
_messageId: string,
): string {
return [
`Deskripsikan gambar ini secara objektif dan spesifik.`,
`${sourceLabel}`,
``,
`Jelaskan HANYA apa yang kamu LIHAT:`,
`- Objek utama apa yang ada di gambar?`,
`- Teks apa yang terlihat? (tulis persis jika bisa dibaca)`,
`- Warna dominan dan layout/tata letak?`,
`- Apakah ini screenshot, foto, meme, kartun, atau dokumen?`,
`- Konteks: apakah terlihat seperti aplikasi chat, terminal/console,`,
` media sosial, game, website, editor kode, dokumen, atau lainnya?`,
``,
`PENTING — Deskripsi saja, JANGAN MEMUTUSKAN MODERASI:`,
`- JANGAN sebut "gambling", "judi", "pelanggaran", "melanggar", atau flag apapun.`,
`- JANGAN bilang "harus dihapus", "harus diblokir", atau rekomendasi tindakan.`,
`- Tugasmu HANYA mendeskripsikan isi gambar. BUKAN menilai.`,
`- Screenshot terminal/console/shell/editor kode → deskripsikan sebagai "terminal/console".`,
`- Screenshot aplikasi chat (Discord/WA/Telegram/dll) → deskripsikan sebagai "aplikasi chat".`,
`- Screenshot website dengan grafik/chart → deskripsikan kontennya secara faktual.`,
`- JANGAN PERNAH mengklaim gambar adalah "situs judi" atau "antarmuka perjudian".`,
` Itu BUKAN tugasmu. Kamu hanya perlu menyebutkan: "tampilan website dengan grafik",`,
` "screenshot terminal", "aplikasi chat dengan teks percakapan", dll.`,
``,
`Format jawaban: Deskripsi singkat 2-3 kalimat dalam Bahasa Indonesia.`,
`Mulai dengan menyebutkan JENIS gambar (screenshot/foto/kartun/dokumen).`,
`Akhiri dengan "Deskripsi selesai."`,
].join("\n");
}