Gemini โมเดลจะแสดงผลการตอบกลับเป็นข้อความที่ไม่มีโครงสร้างโดยค่าเริ่มต้น อย่างไรก็ตาม บางกรณีการใช้งานจำเป็นต้องใช้ข้อความที่มีโครงสร้าง เช่น JSON ตัวอย่างเช่น คุณอาจใช้การตอบกลับสำหรับงานอื่นๆ ที่ต้องทำต่อจากนี้ซึ่งต้องใช้สคีมาข้อมูลที่กำหนดไว้
หากต้องการให้เอาต์พุตที่โมเดลสร้างขึ้นเป็นไปตามสคีมาที่เฉพาะเจาะจงเสมอ คุณสามารถกำหนด สคีมา ซึ่งทำงานเหมือนพิมพ์เขียวสำหรับการตอบกลับของโมเดล จากนั้นคุณจะดึงข้อมูลจากเอาต์พุตของโมเดลได้โดยตรงโดยไม่ต้องประมวลผลภายหลังมากนัก
ตัวอย่างเช่น
ตรวจสอบว่าการตอบกลับของโมเดลสร้าง JSON ที่ถูกต้องและเป็นไปตาม สคีมาที่คุณระบุ
ตัวอย่างเช่น โมเดลสามารถสร้างรายการที่มีโครงสร้างสำหรับสูตรอาหารซึ่งจะมีชื่อสูตร รายการส่วนผสม และขั้นตอนต่างๆ เสมอ จากนั้นคุณจะแยกวิเคราะห์และแสดงข้อมูลนี้ใน UI ของแอปได้ง่ายขึ้นจำกัดวิธีที่โมเดลจะตอบกลับระหว่างงานการจัดประเภท
ตัวอย่างเช่น คุณสามารถให้โมเดลใส่คำอธิบายประกอบข้อความด้วยชุดป้ายกำกับที่เฉพาะเจาะจง (เช่น ชุด enum ที่เฉพาะเจาะจง เช่นpositiveและnegative) แทนที่จะใช้ป้ายกำกับที่โมเดลสร้างขึ้น (ซึ่งอาจมีความหลากหลาย เช่นgood,positive,negativeหรือbad)
หน้านี้อธิบายวิธีสร้างเอาต์พุตที่มีโครงสร้าง (เช่น JSON และ enum) ในประสบการณ์แบบไฮบริดสำหรับเว็บแอป
ก่อนเริ่มต้น
ตรวจสอบว่าคุณได้ทำตาม คู่มือเริ่มต้นใช้งานสำหรับการสร้างประสบการณ์แบบไฮบริดเรียบร้อยแล้ว
กำหนดการกำหนดค่าสำหรับเอาต์พุตที่มีโครงสร้าง
ระบบรองรับการสร้างเอาต์พุตที่มีโครงสร้าง (เช่น JSON และ enum) สำหรับการอนุมานโดยใช้ทั้งโมเดลที่โฮสต์ในระบบคลาวด์และโมเดลในอุปกรณ์
สำหรับการอนุมานแบบไฮบริด ให้ใช้ทั้ง
inCloudParams
และ
onDeviceParams
เพื่อกำหนดค่าโมเดลให้ตอบกลับด้วยเอาต์พุตที่มีโครงสร้าง สำหรับโหมดอื่นๆ ให้ใช้เฉพาะการกำหนดค่าที่เกี่ยวข้อง
สำหรับ
inCloudParams: ระบุresponseMimeTypeที่เหมาะสม (เช่นapplication/json) รวมถึงresponseSchemaที่ต้องการให้โมเดลใช้สำหรับ
onDeviceParams: ระบุresponseConstraintที่ต้องการให้ โมเดลใช้
เอาต์พุต JSON
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
const jsonSchema = Schema.object({
properties: {
characters: Schema.array({
items: Schema.object({
properties: {
name: Schema.string(),
accessory: Schema.string(),
age: Schema.number(),
species: Schema.string(),
},
optionalProperties: ["accessory"],
}),
}),
}
});
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
// ...
เอาต์พุต enum
ตัวอย่างต่อไปนี้จะปรับตัวอย่างเอาต์พุต enum ทั่วไป
ให้รองรับการอนุมานแบบไฮบริด (ในตัวอย่างนี้คือ PREFER_ON_DEVICE)
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: enumSchema
}
}
});
// ...