Gemini modelleri, varsayılan olarak yanıtları yapılandırılmamış metin şeklinde döndürür. Ancak bazı kullanım alanları, yapılandırılmış metin (ör. JSON veya enums) 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.
Kullanım alanlarına dair bazı örnekler:
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ıtlama.
Örneğin, modelin ürettiği etiketler (good,positive,negativeveyabadgibi bir değişkenlik derecesine sahip olabilir) 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.
JSON çıkışına git Enum çıkışına git
Yapılandırılmış çıkış için yapılandırma
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'lar) oluşturma desteklenir.
Karma çıkarım modları: Çıkarımın bulutta mı yoksa cihaz üzerinde mi çalıştığına bakılmaksızın modelin yapılandırılmış çıkışla yanıt vermesi için hem
inCloudParamshem deonDeviceParamsyapılandırın:Cihaz üzerinde modeller için:
Schemayardımcı yöntemleriyle oluşturulan bir şema veya düz bir JSON şeması kullanarakresponseConstraintöğesinionDeviceParamsiçinde belirtin.Bulutta barındırılan modeller için:
responseMimeType(JSON içinapplication/jsonveya numaralandırmalar içintext/x.enum) veinCloudParamsiçinderesponseSchemadeğerini belirtin.
Hibrit olmayan çıkarım modları: Yalnızca yukarıda açıklanan geçerli yapılandırmayı kullanın.
Başlamadan önce
|
Sağlayıcıya özel içeriği ve kodu bu sayfada görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Karma deneyimler oluşturmaya başlama rehberini tamamladığınızdan emin olun.
JSON çıkışına git Enum çıkışına git
JSON çıkışı
Aşağıdaki örneklerde, genel JSON çıkışı örneği, hibrit çıkarımı (örneğin, PREFER_ON_DEVICE) destekleyecek şekilde uyarlanmıştır.
Bu örneklerdeki senaryoda model, bir fantezi hikayesi için karakter profillerinin listesini oluşturur. Bu listede ad, yaş, tür ve isteğe bağlı aksesuarlar gibi yapılandırılmış özellikler yer alır.
Yanıt şemalarınızı aşağıdaki yaklaşımlardan birini kullanarak tanımlayabilirsiniz:
Firebase
Schemayardımcı yöntemleri (önerilir): Ek standart kod olmadan doğrudan kodunuza kısa ve öz şemalar yazmak için yardımcı yöntemleri (ör.Schema.object()veSchema.enumString()) kullanın.Düz JSON şeması: Mevcut şema tanımlarınız varsa, şemaları platformlar veya arka uç hizmetleri arasında paylaşıyorsanız ya da şemaları JSON dosyalarından içe aktarıyorsanız standart bir JSON şema nesnesi kullanın.
1. örnek: Firebase Schema yardımcı yöntemlerini kullanma
Bu örnekte, nesne şemasını tanımlamak için
Firebase AI Logic SDK'sının sağladığı Schema yardımcı yöntemleri (ör. Schema.object, Schema.array, Schema.string ve Schema.number) kullanılır.
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
InferenceMode,
Schema
} from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration.
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp.
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Define a schema using the `Schema` helper methods.
// Optional properties are specified in optionalProperties.
const jsonSchema = Schema.object({
properties: {
characters: Schema.array({
items: Schema.object({
properties: {
name: Schema.string(),
age: Schema.number(),
species: Schema.string(),
accessory: Schema.string()
},
optionalProperties: ["accessory"]
})
})
}
});
// Create a GenerativeModel instance configured to use a hybrid inference mode (like PREFER_ON_DEVICE).
const model = getGenerativeModel(ai, {
mode: InferenceMode.INFERENCE_MODE,
// For cloud-hosted models, specify MIME type and response schema.
inCloudParams: {
model: "CLOUD_MODEL_NAME",
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
}
},
// For on-device models, pass the schema as the response constraint.
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const prompt = "Create profiles for some characters for a fantasy story.";
// Generate the structured output.
const result = await model.generateContent(prompt);
// Access the generated JSON string conforming to the schema from response.text().
console.log(result.response.text());
// Parse the JSON string into a JavaScript object.
console.log(JSON.parse(result.response.text()));
2. örnek: Düz JSON şeması kullanma
Bu örnekte şema yalnızca JSON kullanılarak tanımlanır.
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
InferenceMode
} from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration.
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp.
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Define the schema as a plain JSON object.
// Properties are required by default unless omitted from the required array.
const jsonSchema = {
type: "object",
properties: {
characters: {
type: "array",
items: {
type: "object",
properties: {
name: {
type: "string",
nullable: false
},
age: {
type: "number",
nullable: false
},
species: {
type: "string",
nullable: false
},
accessory: {
type: "string",
nullable: true
}
},
nullable: false,
required: [
"name",
"age",
"species"
]
},
nullable: false
}
},
nullable: false,
required: [
"characters"
]
};
// Create a GenerativeModel instance configured to use a hybrid inference mode (like PREFER_ON_DEVICE).
const model = getGenerativeModel(ai, {
mode: InferenceMode.INFERENCE_MODE,
// For cloud-hosted models, specify MIME type and response schema.
inCloudParams: {
model: "CLOUD_MODEL_NAME",
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
}
},
// For on-device models, pass the schema as the response constraint.
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const prompt = "Create profiles for some characters for a fantasy story.";
// Generate the structured output.
const result = await model.generateContent(prompt);
// Access the generated JSON string conforming to the schema from response.text().
console.log(result.response.text());
// Parse the JSON string into a JavaScript object.
console.log(JSON.parse(result.response.text()));
Enum çıkışı
Aşağıdaki örneklerde, karma çıkarımı (örneğin, PREFER_ON_DEVICE) desteklemek için genel enum çıkış örneği uyarlanmıştır.
Bu örneklerdeki senaryoda model, izin verilen seçeneklerin önceden tanımlanmış listesinden (drama, comedy veya documentary) tek bir tür seçerek film açıklamasını sınıflandırır.
Yanıt şemalarınızı aşağıdaki yaklaşımlardan birini kullanarak tanımlayabilirsiniz:
Firebase
Schemayardımcı yöntemleri (önerilir): Ek standart kod olmadan doğrudan kodunuza kısa ve öz şemalar yazmak için yardımcı yöntemleri (ör.Schema.object()veSchema.enumString()) kullanın.Düz JSON şeması: Mevcut şema tanımlarınız varsa, şemaları platformlar veya arka uç hizmetleri arasında paylaşıyorsanız ya da şemaları JSON dosyalarından içe aktarıyorsanız standart bir JSON şema nesnesi kullanın.
1. örnek: Firebase Schema yardımcı yöntemlerini kullanma
Bu örnekte, izin verilen enum değerlerini tanımlamak için Schema.enumString SDK'sının sağladığı yardımcı yöntem Firebase AI Logic kullanılmaktadır.
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
InferenceMode,
Schema
} from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration.
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp.
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Define an enum schema using the `Schema` helper method with allowed string values.
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"]
});
// Create a GenerativeModel instance configured to use a hybrid inference mode (like PREFER_ON_DEVICE).
const model = getGenerativeModel(ai, {
mode: InferenceMode.INFERENCE_MODE,
// For cloud-hosted models, specify MIME type and response schema.
inCloudParams: {
model: "CLOUD_MODEL_NAME",
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
}
},
// For on-device models, pass the enum schema as the response constraint.
onDeviceParams: {
promptOptions: {
responseConstraint: enumSchema
}
}
});
const prompt = `The film aims to educate and inform viewers about real-life
subjects, events, or people. It offers a factual record of a particular topic
by combining interviews, historical footage, and narration. The primary purpose
of a film is to present information and provide insights into various aspects
of reality.`;
// Generate the structured enum output.
const result = await model.generateContent(prompt);
// Access the selected enum value string from response.text().
console.log(result.response.text());
2. örnek: Düz JSON şeması kullanma
Bu örnekte, enum şeması yalnızca JSON kullanılarak tanımlanır.
|
Bu örneği denemeden önce projenizi ve uygulamanızı ayarlamak için bu kılavuzun Başlamadan önce bölümünü tamamlayın. Bu bölümde, seçtiğiniz Gemini API sağlayıcı için bir düğmeyi de tıklayarak bu sayfada sağlayıcıya özel içerikleri görebilirsiniz. |
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
InferenceMode
} from "firebase/ai";
// TODO(developer): Replace the following with your app's Firebase configuration.
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp.
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Define the enum schema as a plain JSON object.
const enumSchema = {
type: "string",
enum: ["drama", "comedy", "documentary"]
};
// Create a GenerativeModel instance configured to use a hybrid inference mode (like PREFER_ON_DEVICE).
const model = getGenerativeModel(ai, {
mode: InferenceMode.INFERENCE_MODE,
// For cloud-hosted models, specify MIME type and response schema.
inCloudParams: {
model: "CLOUD_MODEL_NAME",
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
}
},
// For on-device models, pass the enum schema as the response constraint.
onDeviceParams: {
promptOptions: {
responseConstraint: enumSchema
}
}
});
const prompt = `The film aims to educate and inform viewers about real-life
subjects, events, or people. It offers a factual record of a particular topic
by combining interviews, historical footage, and narration. The primary purpose
of a film is to present information and provide insights into various aspects
of reality.`;
// Generate the structured enum output.
const result = await model.generateContent(prompt);
// Access the selected enum value string from response.text().
console.log(result.response.text());
Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme