เจาะประเด็น
AI / Dev
ให้ AI เขียน DSL ตรงๆ มันมั่ว — วิธีนี้บังคับให้คอมไพเลอร์เป็นคนตรวจงาน
Typed Domain Grounding เอาภาษา typed มาเป็นกรงขัง ปิดช่อง hallucination ตอนโมเดลสร้างโค้ดเฉพาะทาง
ทีมข่าว เอไอไทย.com
⏱ อ่าน 4 นาที
ปัญหาจริงไม่ใช่ AI เขียนโค้ดไม่เก่ง แต่คือเราไม่มีทางรู้ว่ามันเขียนถูกจนกว่าจะรันแล้วพัง
เราอยากให้ AI เขียนโค้ดให้ แต่พอเจอ DSL (Domain-Specific Language) หรือภาษาเฉพาะทางที่ไม่ได้มีคนใช้กันทั่วโลก ปัญหามันคนละเรื่องเลย เพราะโมเดลภาษาเหล่านี้ถูกเทรนจากโค้ดสาธารณะเป็นหลัก เจอภาษาที่คนใช้น้อยๆ เข้า ก็เริ่มเดา เริ่มมั่ว เริ่ม hallucinate ใส่ syntax ที่ไม่มีอยู่จริงในภาษานั้น
Irakli Betchvaia เขียนบทความลง InfoQ เสนอทางแก้ที่เขาเรียกว่า Typed Domain Grounding คือแทนที่จะปล่อยให้โมเดลเขียน DSL ตรงๆ แล้วภาวนาให้ถูก ก็เอาภาษา typed แบบกระแสหลัก (เช่น ภาษาโปรแกรมที่มีระบบ type ชัดเจน) มาห่อ DSL นั้นอีกชั้นนึง แนวคิดคือให้ type system ของภาษากลางเป็นตัวบังคับความถูกต้องตั้งแต่ต้น
หัวใจของเรื่องนี้คือการย้ายงานตรวจสอบจาก "สายตามนุษย์" ไปให้ "คอมไพเลอร์" ทำ เพราะคอมไพเลอร์ไม่เดา ไม่เดาใจ ไม่ hallucinate มันจะบอกตรงๆ ว่าโค้ดที่ได้มานี่ผิด type ผิดโครงสร้าง ใช้ไม่ได้ พอโมเดลสร้าง DSL ออกมาแล้วไม่ผ่าน compiler validation มันก็เข้าลูป generate-compile-repair คือสร้างใหม่ แก้ตาม error แล้วลอง compile วนไปเรื่อยๆ จนกว่าจะผ่าน
ฟังดูเรียบง่าย แต่จริงๆ นี่คือการเปลี่ยนบทบาทของ LLM จาก "คนเขียนโค้ด" ให้กลายเป็น "คนร่างโค้ด" แล้วให้เครื่องมือที่มีความแม่นยำสูงเป็นบรรณาธิการตรวจทาน ซึ่งเป็นวิธีที่ pragmatic มาก เพราะแทนที่จะหวังให้โมเดลฉลาดขึ้นเรื่องไวยากรณ์ DSL ที่มันไม่ค่อยเห็นใน training data ก็ใช้ข้อจำกัดทาง type มาบีบให้มันอยู่ในราง
บทความยกตัวอย่าง infrastructure-as-code เป็นเคสใช้งาน ซึ่งก็เข้าท่า เพราะงานแนวนี้มี DSL อยู่เต็มไปหมด ตั้งแต่ config ของ Terraform, Kubernetes manifest ไปจนถึง policy เฉพาะทางของแต่ละองค์กร โมเดลอาจจะเดา field ผิด เดา version ผิด หรือสร้าง attribute ที่ไม่มีอยู่จริงใน schema ของบริษัท ซึ่งพอเอาไป apply จริงก็พังทั้ง pipeline
ผู้เขียนยังทดสอบกับ kUML benchmarks ด้วย เพื่อดูว่าแนวทางนี้ช่วยลด hallucination ได้จริงแค่ไหน ซึ่งจุดนี้แหละที่ทำให้มันไม่ใช่แค่ไอเดียลอยๆ บนกระดาษ แต่มี benchmark มารองรับ
ที่ต้องจับตาคือเรื่องนี้ไม่ใช่แค่ trick เฉพาะทางของคนทำ DSL แต่มันสะท้อนวิธีคิดที่กำลังเป็นกระแสในวงการ คือเลิกพยายามทำให้ LLM "ไม่ผิด" ด้วยการเทรนเพิ่ม แต่หันมา "ล้อมกรอบ" ให้มันผิดได้ยากขึ้นด้วยเครื่องมือที่เรามีอยู่แล้ว
ผมมองว่านี่คือทิศทางที่ถูกกว่าและเชื่อถือได้มากกว่าการรอโมเดลรุ่นใหม่ที่ฉลาดขึ้น เพราะต่อให้โมเดลดีแค่ไหน มันก็ยังเป็น probabilistic อยู่ดี แต่คอมไพเลอร์น่ะ deterministic ผิดคือผิด ผ่านคือผ่าน ไม่มีตรงกลาง
ถ้าคุณยังปล่อยให้ AI เขียน DSL แล้ว deploy ตรงๆ โดยไม่มีคอมไพเลอร์คอยตรวจ นั่นไม่ใช่ความเร็ว นั่นคือการเดิมพัน — และ Typed Domain Grounding คือคำตอบที่ตรงไปตรงมาว่าให้เครื่องมือที่แม่นยำทำหน้าที่ตรวจงานแทนความหวัง
ที่มา: InfoQ AI/ML — อ่านต้นฉบับ
ความคิดเห็น 6
กำลังโหลดความคิดเห็น...