Fix OCR Date Regression and LLM Monitoring Logging
Resolves the 2025 date hallucination bug in OCR/transaction parser by fixing prompt injection logic. Updates LLM logging to omit static system prompts and prevent truncation.
1mnt baca
- Regresi Tanggal OCR/Transaksi (Hallucination): Muncul kembali masalah di mana sistem mengarang tanggal transaksi menjadi
2025-05-22atau22/05/2025jika pengguna tidak menyebutkan tanggal secara eksplisit. Setelah diinvestigasi, ternyata terjadi regresi padamcp-server/src/index.ts. Variabeltoday_dategagal disuntikkan ke prompt jika variabel konteks tambahan (pricing_rulesataucoa) bernilai kosong karena berada di dalam blokif (sections.length > 0). - Monitoring LLM Tidak Akurat: Penggunaan LLM Monitoring kurang nyaman karena prompt yang dilog menyertakan system prompt yang sangat panjang dan malah memotong prompt dinamis pengguna (batas 4000 karakter pada
substring). Selain itu, endpointgenerateVision(digunakan oleh OCR RAG) belum memanggil fungsisaveMcpLog, sehingga pemakaian token dan nama model (sepertigemini-3-flash-preview) luput dari pencatatan LLM Monitoring.
- Memisahkan kondisional
if (ctx.today_date)ke luar dari blokif (sections.length > 0)pada pendaftaran toolparse_transactiondan endpoint REST-nya. - Hasilnya, parameter
today_dateakan selalu terkirim ke LLM (Gemini) meskipun aplikasi klien tidak memberikanpricing_rulesataucoa, sehingga LLM tidak lagi meraba-raba atau berhalusinasi mengarang tanggal dari tahun yang usang.
- Penghapusan Truncation: Menghapus pemotongan
.substring(0, 4000)untukpromptdan.substring(0, 2000)untukresponsedi query SQLmcp_request_logsagar input/output yang sangat panjang tetap terekam secara utuh. - Dynamic Prompt Logging: Pada
generateText, argumenprompt(yang hanya berisi input dinamis dari user) kini diteruskan kesaveMcpLog, alih-alihfullPrompt(yang berisi gabungan prompt statis ribuan karakter). Ini membuat list di dashboard LLM Monitoring jauh lebih bersih dan langsung to the point ke request pengguna. - Integrasi Vision Logging: Fungsi
generateVisionsekarang menghitung token (memanfaatkanresponse.usageMetadata) dan memanggilsaveMcpLoguntuk mencatat metriknya ke database, melengkapi monitoring untuk OCR. - Dukungan Model Modern: Array
visionModelsyang dirotasi secara otomatis kini menyertakan persis model yang didukung, termasukgemini-3-flash-preview.