Theo mặc định, các mô hình Gemini sẽ trả về câu trả lời dưới dạng văn bản không có cấu trúc. Tuy nhiên, một số trường hợp sử dụng yêu cầu văn bản có cấu trúc, chẳng hạn như JSON. Ví dụ: bạn có thể đang sử dụng phản hồi cho các tác vụ hạ nguồn khác yêu cầu một giản đồ dữ liệu đã thiết lập.
Để đảm bảo rằng đầu ra do mô hình tạo luôn tuân thủ một giản đồ cụ thể, bạn có thể xác định một giản đồ. Giản đồ này hoạt động như một bản thiết kế cho các phản hồi của mô hình. Sau đó, bạn có thể trích xuất dữ liệu trực tiếp từ đầu ra của mô hình mà không cần xử lý hậu kỳ nhiều.
Dưới đây là một số ví dụ:
Đảm bảo rằng phản hồi của mô hình tạo ra JSON hợp lệ và tuân thủ giản đồ mà bạn cung cấp.
Ví dụ: mô hình này có thể tạo các mục có cấu trúc cho công thức nấu ăn, trong đó luôn có tên công thức, danh sách nguyên liệu và các bước. Sau đó, bạn có thể phân tích cú pháp và hiển thị thông tin này dễ dàng hơn trong giao diện người dùng của ứng dụng.Hạn chế cách mô hình có thể phản hồi trong các tác vụ phân loại.
Ví dụ: bạn có thể yêu cầu mô hình chú thích văn bản bằng một bộ nhãn cụ thể (ví dụ: một bộ enum cụ thể nhưpositivevànegative), thay vì các nhãn mà mô hình tạo ra (có thể có mức độ biến đổi nhưgood,positive,negativehoặcbad).
Trang này mô tả cách tạo đầu ra có cấu trúc (chẳng hạn như JSON và enum) trong trải nghiệm kết hợp cho ứng dụng web.
Trước khi bắt đầu
Đảm bảo rằng bạn đã hoàn tất hướng dẫn bắt đầu xây dựng trải nghiệm kết hợp.
Đặt cấu hình cho đầu ra có cấu trúc
Việc tạo đầu ra có cấu trúc (chẳng hạn như JSON và enum) được hỗ trợ cho suy luận bằng cả mô hình được lưu trữ trên đám mây và mô hình trên thiết bị.
Đối với suy luận kết hợp, hãy sử dụng cả inCloudParams và onDeviceParams để định cấu hình mô hình nhằm phản hồi bằng đầu ra có cấu trúc. Đối với các chế độ khác, chỉ sử dụng cấu hình có thể áp dụng.
Đối với
inCloudParams: Chỉ địnhresponseMimeTypethích hợp (ví dụ:application/json) cũng nhưresponseSchemamà bạn muốn mô hình sử dụng.Đối với
onDeviceParams: Chỉ địnhresponseConstraintmà bạn muốn mô hình sử dụng.
Đầu ra JSON
Ví dụ sau đây điều chỉnh ví dụ chung về đầu ra JSON để phù hợp với suy luận kết hợp (trong ví dụ này là 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
}
}
});
// ...
Đầu ra enum
Ví dụ sau đây điều chỉnh ví dụ về đầu ra enum chung để phù hợp với suy luận kết hợp (trong ví dụ này là 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
}
}
});
// ...