- เพิ่ม "Structured Outputs" ใน API
- ฟีเจอร์ใหม่ที่ทำให้ผลลัพธ์ของโมเดลตรงตาม JSON schema ที่นักพัฒนากำหนดไว้อย่างแม่นยำ
- เมื่อปีที่แล้วได้เปิดตัวโหมด JSON ในงาน DevDay แต่ยังไม่ได้รับประกันการตอบกลับที่ตรงกับ schema เฉพาะ
- Structured Outputs จำกัดผลลัพธ์ของโมเดลให้ตรงตาม schema ที่นักพัฒนาระบุ และฝึกโมเดลให้เข้าใจ schema ที่ซับซ้อนได้ดีขึ้น
- ความจำเป็นของ Structured Outputs
- การสร้างข้อมูลแบบมีโครงสร้างจากอินพุตที่ไม่มีโครงสร้างเป็นหนึ่งในกรณีใช้งานหลักของ AI
- สามารถใช้ OpenAI API ทำงานได้หลากหลาย เช่น ค้นคืนข้อมูล, ตอบคำถาม, ดึงข้อมูล, และสร้างเวิร์กโฟลว์หลายขั้นตอน
- ก่อนหน้านี้ต้องพึ่งพาเครื่องมือโอเพนซอร์ส, พรอมป์ต์, การลองใหม่ซ้ำ ๆ เป็นต้น เพื่อให้ผลลัพธ์ของโมเดลอยู่ในรูปแบบที่ระบบอื่นนำไปใช้งานร่วมกันได้
- Structured Outputs เข้ามาแก้ปัญหานี้ด้วยการจำกัดผลลัพธ์ของโมเดลให้สอดคล้องกับ schema ที่นักพัฒนากำหนด
- การประเมินประสิทธิภาพ
- ในการทดสอบการทำตาม JSON schema ที่ซับซ้อน โมเดล
gpt-4o-2024-08-06 ทำคะแนนได้ 100%
- โมเดล
gpt-4-0613 ทำคะแนนได้ต่ำกว่า 40%
- วิธีใช้งาน Structured Outputs
- ใช้ Structured Outputs ผ่านการเรียกฟังก์ชัน: ตั้งค่า
strict: true ภายในนิยามฟังก์ชัน
- ใช้ได้กับโมเดลที่รองรับเครื่องมือทั้งหมด
- Structured Outputs ที่ปลอดภัย
- เป็นไปตามนโยบายความปลอดภัยเดิมของ OpenAI
- โมเดลสามารถปฏิเสธคำขอที่ไม่ปลอดภัยได้
- การตอบกลับของ API มีค่าสตริงสำหรับการปฏิเสธ ทำให้ตรวจจับทางโปรแกรมได้ว่าโมเดลสร้างการปฏิเสธหรือไม่
- การรองรับแบบเนทีฟใน SDK
- Python และ Node SDK รองรับ Structured Outputs แบบเนทีฟ
- สามารถส่งอ็อบเจ็กต์ Pydantic หรือ Zod เพื่อแปลงเป็น JSON schema และทำ serialization กับ parsing ของการตอบกลับ JSON โดยอัตโนมัติ
- ข้อจำกัด
- รองรับเพียงบางส่วนของ JSON schema
- การตอบกลับ API ครั้งแรกสำหรับ schema ใหม่จะมีความหน่วงเพิ่มขึ้น
- โมเดลอาจปฏิเสธคำขอที่ไม่ปลอดภัย
- ไม่รองรับการเรียกฟังก์ชันแบบขนาน
- Structured Outputs ไม่อยู่ในขอบเขตของ Zero Data Retention (ZDR)
- การเปิดให้ใช้งาน
- Structured Outputs พร้อมใช้งานทั่วไปใน API
- Structured Outputs ผ่านการเรียกฟังก์ชันใช้ได้กับทุกโมเดลที่รองรับ function calling
- ตัวเลือกรูปแบบการตอบกลับใช้ได้กับโมเดลรุ่นล่าสุด
สรุปโดย GN⁺
- Structured Outputs ฟีเจอร์ใหม่ของ OpenAI ช่วยให้ผลลัพธ์ของโมเดลตรงกับ JSON schema ได้อย่างแม่นยำ
- นักพัฒนาจึงทำงานอย่างการค้นคืนข้อมูล, ตอบคำถาม, และดึงข้อมูลได้อย่างน่าเชื่อถือมากขึ้น
- มีการรองรับแบบเนทีฟใน Python และ Node SDK ทำให้พัฒนาได้ง่ายขึ้น
- ยังมีกรณีใช้งานเพิ่มเติมอีกหลากหลาย เช่น การดึงข้อมูลแบบมีโครงสร้างจากข้อมูลที่ไม่มีโครงสร้าง
- ใช้เทคนิค constrained decoding เพื่อจำกัดผลลัพธ์ของโมเดลและทำให้สร้างได้เฉพาะ JSON ที่ถูกต้อง
2 ความคิดเห็น
ฟีเจอร์นี้น่าสนใจดีนะ
ความคิดเห็นบน Hacker News
ใช้ GPT-4o เพื่อสร้าง UI แบบไดนามิกและโค้ด
การเปลี่ยนแปลงสำคัญของ gpt-4o-2024-08-06
ประสบการณ์ใช้งาน Outlines Structured Output ของ vLLM
ความเห็นเกี่ยวกับประสิทธิภาพของ AI
ความเห็นเกี่ยวกับแนวทางของ OpenAI
ความสับสนเกี่ยวกับตัวเลือก
"strict: true"มีความเห็นว่าการฮาร์ดโค้ด JSON ลงในโมเดลเป็นทิศทางที่ตรงข้ามกับเป้าหมาย AGI
ความกังวลเรื่องผลของการล็อกอินกับระบบเมื่อใช้ฟีเจอร์ของ OpenAI
ข้อสังเกตเกี่ยวกับข้อผิดพลาดของรูปแบบ JSON
ข้อสงสัยว่าทำไมระดับบนสุดต้องเป็นอ็อบเจ็กต์