แค่ Prompt อย่างเดียวไม่พอ: การบังคับใช้ข้อกำหนดที่เข้มงวด (Hard Constraints) กับผลลัพธ์จาก LLM
เดโมของ LLM ดูดีเสมอ จนกว่ามันจะต้องเผชิญกับข้อกำหนดที่เข้มงวด
โมเดลทำงานบนพื้นฐานของความน่าจะเป็น แต่ระบบที่ใช้งานจริง (Production systems) ต้องการความแน่นอน
ผมเรียนรู้เรื่องนี้ตอนที่กำลังสร้าง AI news pipeline ให้กับ Radio del Volga ในอาร์เจนตินา ระบบนี้จะทำการเขียนข่าวใหม่และสร้างโพสต์สำหรับโซเชียลมีเดีย มันทำงานได้ดีจนกระทั่งเจอปัญหาหนึ่ง คือ Gemini มักจะเขียนภาษาสเปนผิดสำเนียง
ในอาร์เจนตินา ผู้คนใช้คำเฉพาะเจาะจง พวกเขาพูดว่า "podés" แทนที่จะเป็น "puedes" และ "sos" แทนที่จะเป็น "eres" หากโมเดลใช้ภาษาสเปนแบบกลาง (neutral Spanish) ข้อความนั้นจะดูผิดเพี้ยนสำหรับผู้อ่านในท้องถิ่น
ตอนแรกผมพยายามใช้การเขียน Prompt ที่ดีขึ้น ผมบอกโมเดลว่า:
- ใช้ภาษาสเปนสำเนียง Rioplatense
- ห้ามใช้ภาษาสเปนแบบกลางเด็ดขาด
- ใช้รายการคำต้องห้ามที่กำหนดไว้
- อ่านคำตอบของคุณอีกครั้งก่อนส่ง
วิธีนี้ช่วยได้บ้าง แต่ไม่ได้แก้ปัญหาทั้งหมด แหล่งข่าวที่เป็นทางการทำให้โมเดลกลับไปใช้ภาษาสเปนแบบกลาง ไม่ว่าผมจะเขียนลงใน Prompt มากแค่ไหน ข้อผิดพลาดก็ยังคงอยู่
ผมเลิกมองว่านี่เป็นปัญหาเรื่องการเขียน Prompt แต่เริ่มมองว่ามันเป็นปัญหาเรื่องการตรวจสอบความถูกต้อง (validation)
บางอย่างเป็นเรื่องของความน่าจะเป็น เช่น น้ำเสียงหรือสไตล์ แต่บางอย่างเป็นเรื่องที่แน่นอน (deterministic) หากข้อความมีคำว่า "puedes" แสดงว่ามันผิด คุณไม่จำเป็นต้องใช้ AI เพื่อหาคำตอบนั้น คุณแค่ต้องใช้โค้ดง่ายๆ
ผมจึงเพิ่มขั้นตอน post-processing เข้าไป ซึ่งจะทำงานหลังจาก AI ทำงานเสร็จ โดยมันจะค้นหาคำเฉพาะเจาะจงและแทนที่ด้วยคำใหม่:
- puedes เปลี่ยนเป็น podés
- tienes เปลี่ยนเป็น tenés
- eres เปลี่ยนเป็น sos
รายการนี้มีขนาดเล็กและปลอดภัย ผมไม่ได้พยายามจะแก้ไขภาษาสเปนทั้งหมด ผมเพียงแค่แก้ไขกฎที่โค้ดสามารถตรวจสอบได้อย่างแน่นอนเท่านั้น
บทเรียนนี้ไม่ใช่เรื่องเกี่ยวกับภาษาสเปน แต่มันคือเรื่องเกี่ยวกับขีดจำกัดของ prompt engineering
การเขียน Prompt ช่วยเพิ่มประสิทธิภาพ แต่ไม่สามารถให้การรับประกันได้ หากกฎนั้นมีความคงที่และสามารถทดสอบได้ ให้ใช้โค้ดในการบังคับใช้กฎนั้น
ใช้ LLM เพื่อสร้างข้อความที่สละสลวย และใช้โค้ดแบบ deterministic เพื่อบังคับใช้คำศัพท์ของแบรนด์, ถ้อยคำทางกฎหมาย และกฎการจัดรูปแบบ
ระบบที่เชื่อถือได้จะแบ่งความรับผิดชอบดังนี้: • โมเดลทำหน้าที่สร้างเนื้อหา • โค้ดทำหน้าที่บังคับใช้กฎที่เข้มงวด • มนุษย์ทำหน้าที่ตัดสินใจในขั้นตอนบรรณาธิการขั้นสุดท้าย
Source: https://dev.to/zendev2112/prompts-arent-enough-enforcing-hard-constraints-on-llm-output-2hpo
Optional learning community: https://t.me/GyaanSetuAi