Gemini modelleri, varsayılan olarak yanıtları yapılandırılmamış metin şeklinde döndürür. Ancak bazı kullanım alanları, JSON gibi yapılandırılmış metin gerektirir. Örneğin, yanıtı yerleşik bir veri şeması gerektiren diğer sonraki görevlerde kullanıyor olabilirsiniz.
Modelin oluşturduğu çıkışın her zaman belirli bir şemaya uymasını sağlamak için model yanıtları için bir plan gibi çalışan bir şema tanımlayabilirsiniz. Ardından, modelin çıkışından verileri daha az son işlemeyle doğrudan ayıklayabilirsiniz.
Aşağıda bazı örnekler verilmiştir:
Modelin yanıtının geçerli JSON oluşturduğundan ve sağladığınız şemaya uygun olduğundan emin olun.
Örneğin, model her zaman tarif adını, malzeme listesini ve adımları içeren tarifler için yapılandırılmış girişler oluşturabilir. Ardından bu bilgileri uygulamanızın kullanıcı arayüzünde daha kolay ayrıştırıp görüntüleyebilirsiniz.Sınıflandırma görevleri sırasında modelin nasıl yanıt verebileceğini kısıtlayın.
Örneğin, modelin ürettiği etiketler (good,positive,negativeveyabadgibi bir dereceye kadar değişkenlik gösterebilir) yerine, modelin metni belirli bir etiket grubuyla (örneğin,positivevenegativegibi belirli bir enum grubu) açıklamasını sağlayabilirsiniz.
Bu sayfada, web uygulamaları için hibrit deneyimlerinizde yapılandırılmış çıkış (ör. JSON ve enums) oluşturma açıklanmaktadır.
Başlamadan önce
Karma deneyimler oluşturmaya başlama rehberini tamamladığınızdan emin olun.
Yapılandırılmış çıkış için yapılandırmayı ayarlama
Hem bulutta barındırılan hem de cihaz üzerinde modeller kullanılarak çıkarım için yapılandırılmış çıkış (ör. JSON ve enum) oluşturma desteklenir.
Karma çıkarım için modeli yapılandırılmış çıkışla yanıt verecek şekilde ayarlamak üzere hem inCloudParams hem de onDeviceParams kullanın. Diğer modlar için
yalnızca geçerli yapılandırmayı kullanın.
inCloudParamsiçin: UygunresponseMimeType'ü (örneğin,application/json) ve modelin kullanmasını istediğinizresponseSchema'ı belirtin.onDeviceParamsiçin: Modelin kullanmasını istediğinizresponseConstraintöğesini belirtin.
JSON çıkışı
Aşağıdaki örneklerde, hibrit çıkarımı (bu örnekte PREFER_ON_DEVICE) desteklemek için genel JSON çıkışı örneği uyarlanmıştır:
1. örnek: Firebase Schema yardımcı yöntemlerini kullanma
Bu örnekte, şema tanımını daha kompakt hale getirmek için Firebase AI Logic SDK'sının sağladığı yardımcı yöntemler kullanılmaktadır.
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// This schema can also be defined as a plain JSON object.
// See next snippet for an example of a plain JSON schema.
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: {
model: "gemini-3.1-flash-lite",
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const result = await model
.generateContent(
"Create profiles for some characters for a fantasy story.");
console.log(result.response.text());
console.log(JSON.parse(result.response.text()));
// ...
2. örnek: Düz JSON şeması kullanma
Bu örnek, şemayı yalnızca JSON kullanarak tanımlar ve aynı sonuçları döndürür.
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// The JSON schema defined as a plain JSON object.
const jsonSchema = {
"type": "object",
"properties": {
"characters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": false
},
"accessory": {
"type": "string",
"nullable": false
},
"age": {
"type": "number",
"nullable": false
},
"species": {
"type": "string",
"nullable": false
}
},
"nullable": false,
"required": [
"name",
"age",
"species"
]
},
"nullable": false
}
},
"nullable": false,
"required": [
"characters"
]
};
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
model: "gemini-3.1-flash-lite",
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const result = await model
.generateContent(
"Create profiles for some characters for a fantasy story.");
console.log(result.response.text());
console.log(JSON.parse(result.response.text()));
Enum çıkışı
Aşağıdaki örnek, karma çıkarımı (bu örnekte PREFER_ON_DEVICE) desteklemek için genel enum çıkış örneğini uyarlar:
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// enumSchema can also be defined as a plain JSON schema instead of
// using the `Schema` helper methods, just as in the JSON output example.
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
}
}
});
// ...