Structured Output: เลิกอ้อน ใช้ schema
JSON/schema แทนการขอด้วย prose
🎯 สิ่งที่คุณจะทำได้หลังเรียนโมดูลนี้
- ใช้ฟีเจอร์บังคับรูปแบบผลลัพธ์ (structured output / JSON schema) ของแต่ละเจ้า แทนการพูดอ้อม ๆ ด้วยข้อความ
- ออกแบบ schema พร้อมกลไกลองใหม่ (retry) สำหรับงานใช้จริง (production)
- รู้ว่า Anthropic แนะนำให้ใช้ structured outputs แทนลูกเล่นเก่า (การเติม '{' นำหน้าคำตอบ หรือ prefill)
เนื้อหา
ถ้าอยากคุมหน้าตาของสิ่งที่ AI ตอบออกมาแบบมือโปร ให้เลิกพูดอ้อม ๆ เป็นความเรียง (prose) แล้วหันมาใช้ฟีเจอร์ "บังคับให้ตอบเป็นรูปแบบตายตัว" (structured output / JSON schema) ที่แต่ละเจ้ามีให้อยู่แล้ว ไม่ว่าจะเป็น OpenAI (Structured Outputs / JSON mode), Anthropic (Structured Outputs ที่บังคับด้วยแบบพิมพ์เขียว หรือ schema พร้อมช่องแบบ tool/enum ไว้จัดหมวด) หรือ Google Gemini (structured output / response schema) มีให้ใช้กันหมด. Anthropic บอกตรง ๆ เลยว่าให้ใช้ structured outputs "แทน" ลูกเล่นเก่าที่เคยเติมวงเล็บปีกกา '{' ไว้หน้าคำตอบ (ซึ่งตอนนี้เลิกใช้แล้ว และถูกถอดออกจากโมเดลรุ่นใหม่สุด). ถ้าเป็นงานทำครั้งเดียวจบ แค่ขอให้ตอบเป็นก้อน JSON ก็พอ แต่ถ้าจะเอาไปใช้กับระบบจริง (production) ให้ใช้ฟีเจอร์ schema ควบคู่กับการสั่งลองใหม่ (retry) เวลาผลไม่ผ่าน จะชัวร์กว่าเยอะ.
🧪 ตัวอย่างจริง + ผลลัพธ์ที่ได้
JSON ที่ตรง schema เป๊ะทุกครั้ง มี enum คุมค่าที่เป็นไปได้ ไม่มี field เกิน/ขาด นำไปเข้าระบบต่อได้ทันที
การผูก schema ให้ผลลัพธ์ที่ parse ได้แน่นอน enum ป้องกันค่านอกเหนือที่กำหนด สำหรับ production เพิ่ม retry เมื่อ validation ล้มเหลว ดีกว่าอ้อนด้วย prose ที่พังเป็นครั้งคราว
แบบฝึกหัดท้ายโมดูล
- ออกแบบ JSON schema สำหรับงานสกัดข้อมูลจริงของคุณ พร้อมกำหนด required และ enum
- แปลงพรอมป์เดิมที่ขอ JSON ด้วย prose ให้ใช้ structured output feature แล้วเทียบอัตราผลลัพธ์ที่ parse สำเร็จ