Gemini จะสร้างข้อความที่ไม่มีโครงสร้างโดยค่าเริ่มต้น แต่บางแอปพลิเคชันต้องใช้ข้อความที่มีโครงสร้าง สําหรับกรณีการใช้งานเหล่านี้ คุณสามารถจํากัดให้ Gemini ตอบกลับด้วย JSON ซึ่งเป็นรูปแบบ Structured Data ที่เหมาะกับการประมวลผลอัตโนมัติ นอกจากนี้ คุณยังจำกัดให้โมเดลตอบกลับด้วยตัวเลือกใดตัวเลือกหนึ่งซึ่งระบุไว้ใน enum ได้ด้วย
ตัวอย่างกรณีการใช้งานที่อาจต้องใช้เอาต์พุตที่มีโครงสร้างจากโมเดลมีดังนี้
- สร้างฐานข้อมูลบริษัทโดยดึงข้อมูลบริษัทจากบทความในหนังสือพิมพ์
- ดึงข้อมูลที่มาตรฐานออกจากเรซูเม่
- ดึงข้อมูลส่วนผสมจากสูตรอาหารและแสดงลิงก์ไปยังเว็บไซต์ขายของใช้ทั่วไปสำหรับส่วนผสมแต่ละอย่าง
ในพรอมต์ คุณสามารถขอให้ Gemini แสดงผลลัพธ์ในรูปแบบ JSON ได้ แต่โปรดทราบว่าเราไม่รับประกันว่าโมเดลจะแสดงผลลัพธ์เป็น JSON เท่านั้น
หากต้องการคำตอบที่แน่นอนมากขึ้น คุณสามารถส่งสคีมา JSON ที่เฉพาะเจาะจงในช่อง responseSchema
เพื่อให้ Gemini ตอบกลับด้วยโครงสร้างที่คาดไว้เสมอ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้สคีมาในข้อมูลเพิ่มเติมเกี่ยวกับสคีมา JSON
คู่มือนี้จะแสดงวิธีสร้าง JSON โดยใช้เมธอด generateContent
ผ่าน SDK ที่คุณเลือก หรือใช้ REST API โดยตรง ตัวอย่างแสดงอินพุตที่เป็นข้อความเท่านั้น แต่ Gemini ยังสร้างการตอบกลับ JSON สำหรับคำขอแบบมัลติโมเดลได้ ซึ่งรวมถึงรูปภาพ วิดีโอ และเสียง
ข้อมูลเพิ่มเติมเกี่ยวกับสคีมา JSON
เมื่อกําหนดค่าโมเดลให้แสดงผลลัพธ์เป็น JSON คุณจะใช้Schema
ออบเจ็กต์เพื่อกําหนดรูปแบบของข้อมูล JSON ได้ Schema
แสดงชุดย่อยที่เลือกของออบเจ็กต์สคีมา OpenAPI 3.0
ต่อไปนี้คือการแสดงผลแบบจำลอง JSON ของฟิลด์ Schema
ทั้งหมด
{
"type": enum (Type),
"format": string,
"description": string,
"nullable": boolean,
"enum": [
string
],
"maxItems": string,
"minItems": string,
"properties": {
string: {
object (Schema)
},
...
},
"required": [
string
],
"propertyOrdering": [
string
],
"items": {
object (Schema)
}
}
Type
ของสคีมาต้องเป็นหนึ่งในประเภทข้อมูลของ OpenAPI เฉพาะช่องชุดย่อยเท่านั้นที่ใช้ได้กับ Type
แต่ละรายการ รายการต่อไปนี้จะจับคู่ Type
แต่ละรายการกับช่องที่ถูกต้องสำหรับประเภทนั้นๆ
string
-> enum, formatinteger
-> รูปแบบnumber
-> รูปแบบbool
array
-> minItems, maxItems, itemsobject
-> properties, required, propertyOrdering, nullable
ตัวอย่างสคีมาบางส่วนที่แสดงการผสมผสานประเภทและช่องที่ถูกต้องมีดังนี้
{ "type": "string", "enum": ["a", "b", "c"] }
{ "type": "string", "format": "date-time" }
{ "type": "integer", "format": "int64" }
{ "type": "number", "format": "double" }
{ "type": "bool" }
{ "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": ... } }
{ "type": "object",
"properties": {
"a": { "type": ... },
"b": { "type": ... },
"c": { "type": ... }
},
"nullable": true,
"required": ["c"],
"propertyOrdering": ["c", "b", "a"]
}
ดูเอกสารประกอบฉบับเต็มของช่องสคีมาที่ใช้ใน Gemini API ได้ที่ข้อมูลอ้างอิงสคีมา
การจัดเรียงพร็อพเพอร์ตี้
เมื่อคุณทํางานกับสคีมา JSON ใน Gemini API ลําดับของพร็อพเพอร์ตี้มีความสําคัญ โดยค่าเริ่มต้น API จะจัดเรียงพร็อพเพอร์ตี้ตามลําดับตัวอักษรและไม่รักษาลําดับที่กําหนดพร็อพเพอร์ตี้ (แม้ว่า Google Gen AI SDK อาจรักษาลําดับนี้ไว้) หากคุณระบุตัวอย่างให้กับโมเดลที่มีการกําหนดค่าสคีมาไว้ และลําดับพร็อพเพอร์ตี้ของตัวอย่างไม่สอดคล้องกับลําดับพร็อพเพอร์ตี้ของสคีมา ผลลัพธ์อาจไม่เป็นระเบียบหรือคาดเดาไม่ได้
คุณใช้ฟิลด์ propertyOrdering[]
(ไม่บังคับ) เพื่อให้การเรียงลําดับพร็อพเพอร์ตี้สอดคล้องกันและคาดการณ์ได้
"propertyOrdering": ["recipe_name", "ingredients"]
propertyOrdering[]
– ไม่ใช่ช่องมาตรฐานในข้อมูลจำเพาะของ OpenAPI – คืออาร์เรย์สตริงที่ใช้เพื่อกำหนดลำดับของพร็อพเพอร์ตี้ในการตอบกลับ การระบุลําดับของพร็อพเพอร์ตี้ แล้วให้ตัวอย่างที่มีพร็อพเพอร์ตี้ตามลําดับเดียวกันอาจช่วยปรับปรุงคุณภาพของผลลัพธ์ได้