AI สัมภาษณ์ตอนที่ 12: ปรับแต่ง Prompt อย่างไร?
การปรับแต่ง Prompt (Prompt Engineering / Optimization) เป็นทักษะสำคัญที่ทำให้โมเดลภาษาขนาดใหญ่ "เชื่อฟัง" โดยเฉพาะอย่างยิ่งในระบบ RAG ซึ่งกำหนดโดยตรงว่าโมเดลจะยึดตามเนื้อหาที่ดึงมา หลีกเลี่ยงภาพหลอน และจัดรูปแบบผลลัพธ์ตามที่กำหนดหรือไม่
หนึ่ง หลักการสำคัญของการปรับแต่ง Prompt
- ชัดเจน > ซับซ้อน: คำสั่งที่ตรงไปตรงมาง่าย ๆ มักมีประสิทธิภาพมากกว่าการใช้ Chain-of-Thought ที่ซับซ้อน
- กำหนดข้อจำกัดให้เพียงพอ: บอกโมเดลอย่างชัดเจนว่า "ทำอะไรได้ ทำอะไรไม่ได้"
- ให้ตัวอย่าง: Few-shot มีเสถียรภาพมากกว่า Zero-shot
- ตรวจสอบได้: ให้โมเดลแสดงการอ้างอิงหรือความเชื่อมั่น เพื่อให้ง่ายต่อการประเมินผล downstream
- ปรับปรุงแบบวนซ้ำ: เริ่มจาก baseline แก้ไขทีละตัวแปร เปรียบเทียบผลลัพธ์
สอง เทคนิคการปรับแต่งเฉพาะ (จากง่ายไปยาก)
1. การกำหนดบทบาท (System Prompt)
คุณเป็นผู้ช่วยบริการลูกค้ามืออาชีพ คุณสามารถตอบคำถามโดยใช้【เอกสารอ้างอิง】ที่ให้ด้านล่างเท่านั้น
หากคุณไม่ทราบคำตอบ ให้พูดตรง ๆ ว่า "ไม่มีข้อมูลในเอกสาร" อย่าสร้างข้อมูลขึ้นเอง
- ผล: กำหนดขอบเขตและน้ำเสียง
- จุดปรับ: น้ำเสียง (มืออาชีพ/เป็นกันเอง), ความเข้มงวดของข้อจำกัด (เข้ม/ผ่อน)
2. คำสั่งที่ชัดเจน
❌ แย่: "ตอบคำถามผู้ใช้"
✅ ดี: "ตอบโดยอิงจาก【เอกสารอ้างอิง】ด้านล่างเท่านั้น หากเอกสารอ้างอิงไม่มีคำตอบ ให้ตอบว่า 'ฉันไม่สามารถตอบคำถามนี้'"
3. การควบคุมรูปแบบผลลัพธ์
โปรดส่งออกในรูปแบบ JSON ดังนี้:
{
"answer": "คำตอบของคุณ",
"confidence": "สูง/กลาง/ต่ำ",
"sources": [1, 3]
}
- วัตถุประสงค์: ให้สะดวกต่อการแยกวิเคราะห์ downstream, การอ้างอิง, การดีบัก
4. ตัวอย่าง Few-shot (มีประสิทธิภาพมาก)
ตัวอย่าง 1:
คำถาม: วันหยุดพักร้อนมีกี่วัน?
เอกสารอ้างอิง: กฎวันหยุดพักร้อน: ครบ 1 ปีได้ 5 วัน, ครบ 10 ปีได้ 10 วัน
คำตอบ: ครบ 1 ปีได้ 5 วัน, ครบ 10 ปีได้ 10 วัน
ตัวอย่าง 2:
คำถาม: ค่าล่วงเวลาคำนวณอย่างไร?
เอกสารอ้างอิง: วันทำงานปกติ 1.5 เท่า, วันหยุดสุดสัปดาห์ 2 เท่า
คำตอบ: วันทำงานปกติ 1.5 เท่า, วันหยุดสุดสัปดาห์ 2 เท่า
ตอนนี้ตอบ:
คำถาม: {คำถามผู้ใช้}
เอกสารอ้างอิง: {เนื้อหาที่ดึงมา}
คำตอบ:
- เทคนิค: ตัวอย่างควรครอบคลุมระดับความยากต่าง ๆ และควรรวมตัวอย่าง "ไม่สามารถตอบ" ด้วย
5. การบังคับให้อ้างอิง
ในตอนท้ายของคำตอบ ให้ระบุหมายเลขแหล่งที่มาด้วย [citation:X] เช่น "วันหยุดพักร้อนคือ 5 วัน[citation:1]"
หากบูรณาการหลายแหล่ง ให้ระบุแยกกัน
6. การกำหนดเกณฑ์การปฏิเสธตอบ
- ข้อจำกัดแบบแข็ง: "หากเอกสารอ้างอิงไม่เกี่ยวข้องกับคำถามเลย ให้ตอบว่า 'เอกสารไม่เกี่ยวข้อง'"
- ข้อจำกัดแบบอ่อน: ร่วมกับคะแนนความเชื่อมั่นจากการดึงข้อมูล หากต่ำกว่าเกณฑ์ ให้ดำเนินการปฏิเสธตอบโดยอัตโนมัติ
7. Chain-of-Thought สำหรับการอนุมานหลายขั้นตอน
คำถาม: ใครเป็นเจ้านายของจางซาน?
ขั้นตอน: 1. หาแผนกของจางซานก่อน 2. หาหัวหน้าแผนกนั้น 3. ให้คำตอบสุดท้าย
โปรดคิดตามขั้นตอนแล้วจึงส่งออก
8. คำสั่งเชิงลบ (Negative Prompting)
อย่าสร้างคำตอบ อย่าใช้คำคลุมเครือเช่น "อาจจะ" "บางที" อย่าส่งออกตัวเลขที่ไม่ได้อยู่ในเอกสารอ้างอิง
สาม จะประเมิน Prompt ดีหรือไม่ดีได้อย่างไร?
| ตัวชี้วัด | ความหมาย | วิธีการวัด |
|---|---|---|
| ความเที่ยงตรง | คำตอบยึดตามเอกสารอ้างอิงอย่างเคร่งครัดหรือไม่ | Manual หรือ Faithfulness ของ RAGAS |
| ความแม่นยำในการปฏิเสธตอบ | ปฏิเสธตอบเมื่อควรปฏิเสธหรือไม่ | คำนวณบนชุดทดสอบที่ไม่มีคำตอบ |
| อัตราการปฏิบัติตามรูปแบบ | ส่งออก JSON / การอ้างอิงตามที่กำหนดหรือไม่ | Regular expression matching |
| ความพึงพอใจของผู้ใช้ | คำตอบมีประโยชน์หรือไม่ | Feedback ออนไลน์ / A/B testing |
คำแนะนำ: เตรียมชุดทดสอบขนาดเล็ก (20-50 กรณีขอบ) ทุกครั้งที่เปลี่ยน Prompt ให้รันและบันทึกการเปลี่ยนแปลง
สี่ ข้อผิดพลาดทั่วไปและทิศทางการปรับแต่ง
| ปัญหาที่พบ | สาเหตุที่เป็นไปได้ | วิธีการปรับแต่ง |
|---|---|---|
| โมเดลไม่สนใจเอกสารอ้างอิง ตอบเอง | คำสั่งไม่บังคับเพียงพอ | เปลี่ยนเป็น "อิงจาก เอกสารด้านล่างเท่านั้น" และใช้ few-shot แสดงการปฏิเสธตอบ |
| โมเดลมักบอกว่า "ไม่รู้" | เกณฑ์ปฏิเสธตอบสูงเกินไป | ลดเกณฑ์หรือตรวจสอบคุณภาพการดึงข้อมูล |
| รูปแบบผลลัพธ์ไม่เป็นระเบียบ ไม่เป็น JSON | คำสั่งไม่ชัดเจน | เพิ่มตัวอย่างรูปแบบที่เข้มงวด หรือใช้ function calling |
| คำตอบยาว/สั้นเกินไป | ไม่ได้ระบุความยาว | "ตอบไม่เกิน 3 ประโยค" |
| การอนุมานหลายขั้นตอนผิดพลาด | ความสามารถในการอนุมานของโมเดลไม่เพียงพอ | กำหนดให้แสดงการคิดทีละขั้นตอน หรือเปลี่ยนเป็นโมเดลที่แข็งแรงขึ้น |
| เกิดภาพหลอนเรื่องตัวเลข/วันที่ | โมเดลพึ่งพาความรู้ของตัวเอง | เน้นย้ำ "อย่าใช้ตัวเลขใด ๆ ที่คุณจำได้ ให้ดูเฉพาะเอกสาร" |
评论
暂无已展示的评论。
发表评论(匿名)