การกำหนด Schema
Schema บอก AI ว่าต้องดึงฟิลด์อะไรบ้างและแต่ละฟิลด์ควรเป็นข้อมูลประเภทใด Ocriva ใช้ไวยากรณ์ JSON Schema มาตรฐาน
โครงสร้างพื้นฐาน
ทุก Schema ควรเป็นประเภท object ระดับบนสุดพร้อม Map properties:
{
"type": "object",
"properties": {
"ชื่อฟิลด์": {
"type": "string",
"description": "ฟิลด์นี้ประกอบด้วยอะไร"
}
}
}ประเภทฟิลด์ที่รองรับ
| ประเภท | คำอธิบาย | ตัวอย่างค่า |
|---|---|---|
string | ค่าข้อความ | "INV-2567-001" |
number | ค่าตัวเลข (จำนวนเต็มหรือทศนิยม) | 1500.00 |
boolean | ค่าจริง/เท็จ | true |
array | รายการ | ["รายการ1", "รายการ2"] |
object | Object ที่ซ้อนกัน | { "ถนน": "...", "เมือง": "..." } |
ตัวอย่าง: Schema ใบกำกับภาษี
Schema ดึงข้อมูลใบกำกับภาษีแบบครอบคลุม พร้อมรายการสินค้าที่ซ้อนกัน:
{
"type": "object",
"properties": {
"เลขที่ใบกำกับ": {
"type": "string",
"description": "เลขที่ใบกำกับภาษีที่ปรากฏบนเอกสาร เช่น INV-2567-001"
},
"วันที่ออกใบกำกับ": {
"type": "string",
"description": "วันที่ออกใบกำกับในรูปแบบ YYYY-MM-DD ปีค.ศ."
},
"วันที่ครบกำหนด": {
"type": "string",
"description": "วันที่ครบกำหนดชำระเงินในรูปแบบ YYYY-MM-DD"
},
"ผู้ขาย": {
"type": "object",
"description": "ข้อมูลผู้ขาย/ผู้ออกใบกำกับ",
"properties": {
"ชื่อ": { "type": "string" },
"เลขประจำตัวผู้เสียภาษี": { "type": "string" },
"ที่อยู่": { "type": "string" }
}
},
"ผู้ซื้อ": {
"type": "object",
"description": "ข้อมูลผู้ซื้อ/ลูกค้า",
"properties": {
"ชื่อ": { "type": "string" },
"เลขประจำตัวผู้เสียภาษี": { "type": "string" },
"ที่อยู่": { "type": "string" }
}
},
"รายการสินค้า": {
"type": "array",
"description": "รายการสินค้าหรือบริการทั้งหมดในใบกำกับ",
"items": {
"type": "object",
"properties": {
"รายละเอียด": { "type": "string" },
"จำนวน": { "type": "number" },
"ราคาต่อหน่วย": { "type": "number" },
"จำนวนเงิน": { "type": "number" }
}
}
},
"ราคาก่อนภาษี": {
"type": "number",
"description": "ยอดเงินก่อนภาษีมูลค่าเพิ่ม"
},
"ภาษีมูลค่าเพิ่ม": {
"type": "number",
"description": "จำนวนเงินภาษีมูลค่าเพิ่ม (7% ในประเทศไทย)"
},
"ยอดรวมทั้งสิ้น": {
"type": "number",
"description": "ยอดรวมทั้งสิ้นรวมภาษีแล้ว"
},
"สกุลเงิน": {
"type": "string",
"description": "รหัสสกุลเงิน เช่น THB, USD"
}
}
}เคล็ดลับการเขียน Schema ที่ดี
TIP
ใส่ description ทุกฟิลด์ เพื่อช่วยให้ AI เข้าใจข้อมูลที่ต้องการ ฟิลด์ที่มี description ชัดเจนจะให้ผลลัพธ์แม่นยำกว่าฟิลด์ที่ไม่มีคำอธิบายอย่างเห็นได้ชัด
- เพิ่ม
descriptionในทุกฟิลด์ — AI อ่าน description เหล่านี้เป็นคำสั่ง ฟิลด์วันที่ที่มี description"วันที่ออกใบกำกับในรูปแบบ YYYY-MM-DD"จะให้ผลลัพธ์ที่สม่ำเสมอกว่าฟิลด์ที่ไม่มี description มาก - ใช้ snake_case สำหรับชื่อฟิลด์ภาษาอังกฤษ — ชื่อที่สม่ำเสมอช่วยป้องกันความสับสนในระบบปลายทาง
- หลีกเลี่ยงการซ้อนลึกเกิน 3 ระดับ — การซ้อนลึกมากลดความแม่นยำของ AI
WARNING
Schema ที่ซ้อนลึกเกินไปอาจทำให้ AI ดึงข้อมูลไม่ครบ พยายามรักษาโครงสร้างไม่เกิน 3 ระดับ หากต้องการข้อมูลซับซ้อนมากให้แบ่งออกเป็นหลาย Template
- ระบุรูปแบบใน description — สำหรับวันที่ เบอร์โทรศัพท์ และรหัสต่างๆ ให้บอก AI รูปแบบที่ต้องการ
