Anda telah membina satu alat dalaman yang membolehkan sesebuah pasukan menjalankan 28 ujian unit pada ciri yang dipacu LLM tanpa perlu memanggil API model tersebut. Anda melakukannya dengan membungkus model tersebut dalam antaramuka yang boleh di-'fake'-kan dan menambah tiga lapisan penilaian: deterministik, heuristik, dan berasaskan LLM.

Aseran standard akan gagal sebaik sahaja LLM menjana prosa. Prompt yang sama boleh menghasilkan ayat yang berbeza pada setiap larian, jadi assertEqual(output, expected) akan menandakan kegagalan walaupun model bertindak dengan betul. Kebanyakan kumpulan kejuruteraan sama ada melancarkan ciri tersebut tanpa pengesahan atau cuba menguji model itu sendiri, melayan sasaran yang sentiasa berubah seolah-olah ia adalah perpustakaan statik.

Mengapa masalah ini penting

LLM kini berada di dalam aliran kerja yang berhadapan dengan pelanggan—outreach e-mel, balasan sokongan, penjanaan kandungan. Satu fakta halusinasi atau pengenal pasti yang bocor boleh merosakkan reputasi jenama, mendedahkan data peribadi, atau mencetuskan pelanggaran pematuhan. Tanpa strategi ujian yang boleh dipercayai, pasukan membuang masa mengejar kegagalan yang tidak menentu atau melancarkan pepijat yang hanya muncul dalam persekitaran produksi.

Pendekatan: kecilkan tanggungjawab model

Langkah pertama adalah mengehadkan apa yang sebenarnya dilakukan oleh LLM. Dalam sistem penulis, model hanya merangka mesej outreach. Semua logik penghalaan, pengurusan keadaan, dan semakan keselamatan kekal dalam kod biasa. Dengan mengehadkan model kepada satu output yang ditakrifkan dengan baik, sistem di sekelilingnya kekal deterministik dan boleh diuji.

Untuk membolehkan perkara itu, LLM berada di sebalik antaramuka pembekal, membolehkan versi 'fake' digunakan dalam ujian. Dalam produksi, pelaksanaan memanggil API luaran; dalam suite ujian, 'fake' yang ringan mengembalikan respons tetap. Oleh kerana baki kod hanya berinteraksi dengan antaramuka tersebut, keseluruhan aliran kerja boleh dijalankan melalui ujian unit yang tidak menyentuh rangkaian. Hasilnya ialah teras yang boleh diramal yang disahkan oleh 28 ujian tersebut.

Kerangka penilaian yang jujur

Walaupun dengan skop yang telah dikecilkan, output model tetap tidak deterministik. Oleh itu, penulis membina kerangka penilaian tiga lapisan, di mana setiap lapisan mengendalikan kelas risiko yang berbeza.

  • Lapisan 1 – Semakan deterministik Peraturan ekspresi-regular yang mudah menangkap ralat konkrit seperti ID bangunan yang salah atau token yang dilarang. Semakan ini pantas dan memberikan keputusan lulus/gagal binari.

  • Lapisan 2 – Semakan heuristik Skrip mencari nombor atau tarikh yang dihalusinasi, menandakan rekaan fakta yang jelas. Ia terlepas tuntutan palsu yang tidak mempunyai petunjuk numerik, dan penulis mengakui had tersebut secara terbuka.

  • Lapisan 3 – Hakim LLM Model sekunder menilai nada dan profesionalisme. Oleh kerana langkah ini bergantung pada sistem kebarangkalian yang lain, ia hanya digunakan untuk aspek subjektif di mana peraturan deterministik tidak mungkin dapat dilaksanakan.

Kunci kepada kerangka ini ialah set data yang digunakan untuk penilaian. Penulis telah mengekod corak kegagalan yang diketahui—perangkap khusus dan pengetahuan domain—supaya kerangka tersebut menguji dengan tepat kesilapan yang telah muncul dalam praktis. Ia bukan "penangkap semua" yang ajaib, tetapi jaring keselamatan yang disasarkan.

Apa maksudnya untuk pasukan

  • Kecilkan skop kerja LLM. Tanggungjawab yang lebih sedikit memudahkan pengasingan dan pengujian.
  • Letakkan penghalaan, keadaan, dan keselamatan dalam kod. Logik tradisional kekal deterministik dan boleh diuji sepenuhnya.
  • Dedahkan model melalui antaramuka yang boleh di-'fake'-kan. Ujian unit berjalan tanpa panggilan luaran, memastikan suite ujian kekal pantas dan boleh dipercayai.
  • Lapisi penilaian anda. Mulakan dengan peraturan deterministik, tambah heuristik untuk halusinasi yang diketahui, dan simpan hakim LLM untuk semakan kualiti subjektif.
  • Nyatakan hadnya. Tiada lapisan yang menjamin kesempurnaan; kerangka tersebut hanya menangkap apa yang anda programkan secara eksplisit untuk dikesan.

Perkara berlawanan: anda masih tidak boleh melakukan ujian unit pada model itu sendiri

Penulis mengakui bahawa model adalah sasaran yang sentiasa berubah. Malah lapisan hakim LLM mewarisi sifat tidak deterministik yang sama yang cuba dinilainya. Akibatnya, sistem tidak dapat menjamin bahawa setiap halusinasi atau pelanggaran polisi akan ditangkap sebelum pelancaran. Pendekatan ini mengurangkan risiko, bukan menghapuskannya, dan ia bergantung pada keupayaan pasukan untuk memastikan data penilaian sentiasa dikemas kini apabila mod kegagalan baharu muncul.

Rumusan

Anda tidak boleh menulis ujian unit klasik yang mengesahkan output tepat LLM, tetapi anda boleh membina sistem di mana pengaruh model adalah terhad, antaramukanya boleh diganti, dan outputnya disaring melalui semakan berlapis yang telus. Gabungan itu mengubah komponen yang tidak menentu menjadi bahagian yang boleh diramal dalam aplikasi yang lebih besar dan boleh diuji.