Gemini จะสร้างข้อความที่ไม่มีโครงสร้างโดยค่าเริ่มต้น แต่บางแอปพลิเคชันต้องใช้ข้อความที่มีโครงสร้าง สำหรับกรณีการใช้งานเหล่านี้ คุณสามารถจํากัดให้ Gemini ตอบกลับด้วย JSON ซึ่งเป็นรูปแบบ Structured Data ที่เหมาะกับการประมวลผลอัตโนมัติ นอกจากนี้ คุณยังจำกัดให้โมเดลตอบกลับด้วยตัวเลือกใดตัวเลือกหนึ่งซึ่งระบุไว้ใน enum ได้ด้วย
ตัวอย่างกรณีการใช้งานที่อาจต้องใช้เอาต์พุตที่มีโครงสร้างจากโมเดลมีดังนี้
- สร้างฐานข้อมูลบริษัทโดยดึงข้อมูลบริษัทจากบทความในหนังสือพิมพ์
- ดึงข้อมูลที่มาตรฐานออกจากเรซูเม่
- ดึงข้อมูลส่วนผสมจากสูตรอาหารและแสดงลิงก์ไปยังเว็บไซต์ขายของใช้ทั่วไปสำหรับส่วนผสมแต่ละอย่าง
ในพรอมต์ คุณสามารถขอให้ Gemini แสดงผลลัพธ์ในรูปแบบ JSON ได้ แต่โปรดทราบว่าเราไม่รับประกันว่าโมเดลจะแสดงผลลัพธ์เป็น JSON เท่านั้น
หากต้องการคำตอบที่แน่นอนมากขึ้น คุณสามารถส่งสคีมา JSON ที่เฉพาะเจาะจงในช่อง responseSchema
เพื่อให้ Gemini ตอบกลับด้วยโครงสร้างที่คาดไว้เสมอ
คู่มือนี้จะแสดงวิธีสร้าง JSON โดยใช้เมธอด generateContent
ผ่าน SDK ที่คุณเลือก หรือใช้ REST API โดยตรง ตัวอย่างแสดงอินพุตที่เป็นข้อความเท่านั้น แต่ Gemini ยังสร้างการตอบกลับ JSON สำหรับคำขอแบบมัลติโมเดลได้ ซึ่งรวมถึงรูปภาพ วิดีโอ และเสียง
ก่อนเริ่มต้น: ตั้งค่าโปรเจ็กต์และคีย์ API
คุณต้องตั้งค่าโปรเจ็กต์และกำหนดค่าคีย์ API ก่อนเรียกใช้ Gemini API
สร้าง JSON
เมื่อกําหนดค่าโมเดลให้แสดงผล JSON โมเดลจะตอบสนองต่อพรอมต์ด้วยเอาต์พุตรูปแบบ JSON
คุณควบคุมโครงสร้างของคำตอบ JSON ได้โดยระบุสคีมา การส่งสคีมาไปยังโมเดลทำได้ 2 วิธีดังนี้
- เป็นข้อความในพรอมต์
- เป็นสคีมา Structured Data ที่ระบุผ่านการกําหนดค่ารูปแบบ
ทั้ง 2 วิธีใช้ได้กับทั้ง Gemini 1.5 Flash และ Gemini 1.5 Pro
ระบุสคีมาเป็นข้อความในพรอมต์
ตัวอย่างต่อไปนี้จะแจ้งให้โมเดลแสดงสูตรคุกกี้ในรูปแบบ JSON ที่เฉพาะเจาะจง
เนื่องจากโมเดลจะรับข้อกําหนดรูปแบบจากข้อความในพรอมต์ คุณจึงอาจมีความยืดหยุ่นในการแสดงข้อกําหนดได้บ้าง รูปแบบใดก็ได้ที่สมเหตุสมผลสำหรับการแสดงสคีมา JSON อาจใช้งานได้
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-1.5-flash",
});
const prompt = `List a few popular cookie recipes using this JSON schema:
Recipe = {'recipeName': string}
Return: Array<Recipe>`;
const result = await model.generateContent(prompt);
console.log(result.response.text());
เอาต์พุตอาจมีลักษณะดังนี้
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
ระบุสคีมาผ่านการกําหนดค่ารูปแบบ
ตัวอย่างต่อไปนี้ทําสิ่งต่อไปนี้
- สร้างอินสแตนซ์ของโมเดลที่กําหนดค่าผ่านสคีมาเพื่อตอบกลับด้วย JSON
- แจ้งให้โมเดลแสดงสูตรคุกกี้
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const schema = {
description: "List of recipes",
type: SchemaType.ARRAY,
items: {
type: SchemaType.OBJECT,
properties: {
recipeName: {
type: SchemaType.STRING,
description: "Name of the recipe",
nullable: false,
},
},
required: ["recipeName"],
},
};
const model = genAI.getGenerativeModel({
model: "gemini-1.5-pro",
generationConfig: {
responseMimeType: "application/json",
responseSchema: schema,
},
});
const result = await model.generateContent(
"List a few popular cookie recipes.",
);
console.log(result.response.text());
เอาต์พุตอาจมีลักษณะดังนี้
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]