สร้างเอาต์พุตที่จัดโครงสร้างด้วย Gemini API


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"}]

ระบุสคีมาผ่านการกําหนดค่ารูปแบบ

ตัวอย่างต่อไปนี้ทําสิ่งต่อไปนี้

  1. สร้างอินสแตนซ์ของโมเดลที่กําหนดค่าผ่านสคีมาเพื่อตอบกลับด้วย JSON
  2. แจ้งให้โมเดลแสดงสูตรคุกกี้
// 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"}]