Gemini varsayılan olarak yapılandırılmamış metin oluşturur ancak bazı uygulamalar için yapılandırılmış metin gerekir. Bu kullanım alanları için Gemini'yi, otomatik işlemeye uygun bir yapılandırılmış veri biçimi olan JSON ile yanıt verecek şekilde kısıtlayabilirsiniz. Modeli, bir enum'da belirtilen seçeneklerden biriyle yanıt verecek şekilde de kısıtlayabilirsiniz.
Modelden yapılandırılmış çıkış gerektirebilecek birkaç kullanım alanı aşağıda verilmiştir:
- Şirket bilgilerini gazete makalelerinden toplayarak bir şirket veritabanı oluşturun.
- Özgeçmişlerden standartlaştırılmış bilgileri alma
- Tariflerdeki malzemeleri ayıklayın ve her bir malzeme için bir market web sitesinin bağlantısını gösterin.
İsteminizde Gemini'den JSON biçiminde çıkış üretmesini isteyebilirsiniz ancak modelin yalnızca JSON üreteceği garanti edilmez.
Daha kesin bir yanıt için responseSchema
alanında belirli bir JSON şemasını iletebilirsiniz. Böylece Gemini her zaman beklenen bir yapıyla yanıt verir. Şemalarla çalışma hakkında daha fazla bilgi edinmek için JSON şemaları hakkında daha fazla bilgi başlıklı makaleyi inceleyin.
Bu kılavuzda, seçtiğiniz SDK üzerinden veya doğrudan REST API'yi kullanarak generateContent
yöntemini kullanarak JSON'u nasıl oluşturacağınız gösterilmektedir. Örneklerde yalnızca metin girişi gösterilmektedir. Ancak Gemini, resimler, videolar ve ses içeren çoklu formatlı istekler için JSON yanıtları da oluşturabilir.
JSON şemaları hakkında daha fazla bilgi
Modeli JSON yanıtı döndürecek şekilde yapılandırdığınızda, JSON verilerinin şeklini tanımlamak için bir Schema
nesnesi kullanabilirsiniz. Schema
, OpenAPI 3.0 Şema nesnesinin belirli bir alt kümesini temsil eder.
Tüm Schema
alanlarının sözde JSON gösterimi aşağıda verilmiştir:
{
"type": enum (Type),
"format": string,
"description": string,
"nullable": boolean,
"enum": [
string
],
"maxItems": string,
"minItems": string,
"properties": {
string: {
object (Schema)
},
...
},
"required": [
string
],
"propertyOrdering": [
string
],
"items": {
object (Schema)
}
}
Şemanın Type
değeri, OpenAPI veri türlerinden biri olmalıdır. Her Type
için yalnızca bir alan alt kümesi geçerlidir. Aşağıdaki listede her Type
, ilgili tür için geçerli alanlarla eşlenir:
string
-> enum, formatinteger
-> biçimnumber
-> biçimboolean
array
-> minItems, maxItems, itemsobject
-> properties, required, propertyOrdering, nullable
Geçerli tür ve alan kombinasyonlarını gösteren bazı örnek şemalar aşağıda verilmiştir:
{ "type": "string", "enum": ["a", "b", "c"] }
{ "type": "string", "format": "date-time" }
{ "type": "integer", "format": "int64" }
{ "type": "number", "format": "double" }
{ "type": "boolean" }
{ "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": ... } }
{ "type": "object",
"properties": {
"a": { "type": ... },
"b": { "type": ... },
"c": { "type": ... }
},
"nullable": true,
"required": ["c"],
"propertyOrdering": ["c", "b", "a"]
}
Gemini API'sinde kullanılan şema alanlarının tam dokümanları için Şema referansı başlıklı makaleyi inceleyin.
Mülk sıralaması
Gemini API'de JSON şemalarıyla çalışırken mülklerin sırası önemlidir. API varsayılan olarak mülkleri alfabetik olarak sıralar ve mülklerin tanımlandığı sırayı korur (Google üretken yapay zeka SDK'ları bu sırayı koruyabilir). Yapılandırılmış bir şema içeren modele örnek sağlıyorsanız ve örneklerin özellik sıralaması, şemanın özellik sıralamasıyla tutarlı değilse çıkış dağınık veya beklenmedik olabilir.
Mülklerin tutarlı ve tahmin edilebilir bir şekilde sıralanması için isteğe bağlı propertyOrdering[]
alanını kullanabilirsiniz.
"propertyOrdering": ["recipe_name", "ingredients"]
propertyOrdering[]
, OpenAPI spesifikasyonunda standart bir alan değildir ve yanıttaki özelliklerin sırasını belirlemek için kullanılan bir dize dizisidir. Mülklerin sırasını belirtip aynı sırayla mülkleri içeren örnekler sağlayarak sonuçların kalitesini artırabilirsiniz.