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
ตัวอย่างต่อไปนี้ปรับ
ตัวอย่างเอาต์พุต JSON ทั่วไป
เพื่อให้รองรับการอนุมานแบบไฮบริด (ในตัวอย่างนี้คือ PREFER_ON_DEVICE)
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
}
}
});
// ...