Gemini API ile yapılandırılmış çıkış oluşturma


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 ayıklayın.
  • Tariflerdeki malzemeleri ayıklayın ve her bir malzemenin bir market web sitesinin bağlantısını gösterin.

İsteminizde Gemini'den JSON biçimli çı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.

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.

Başlamadan önce: Projenizi ve API anahtarınızı oluşturun

Gemini API'yi çağırmadan önce projenizi ayarlamanız ve API anahtarınızı yapılandırmanız gerekir.

JSON oluştur

Model, JSON çıkışı verecek şekilde yapılandırıldığında tüm istemlere JSON biçimli çıkışla yanıt verir.

Bir şema sağlayarak JSON yanıtının yapısını kontrol edebilirsiniz. Modele şema eklemenin iki yolu vardır:

  • İstemdeki metin olarak
  • Model yapılandırması aracılığıyla sağlanan yapılandırılmış bir şema olarak

Her iki yaklaşım da hem Gemini 1.5 Flash hem de Gemini 1.5 Pro'da çalışır.

İstemde metin olarak bir şema sağlayın

Aşağıdaki örnekte, modelden kurabiye tariflerini belirli bir JSON biçiminde döndürmesi istenir.

Model, biçim spesifikasyonunu istemdeki metinden aldığından spesifikasyonu nasıl temsil edeceğiniz konusunda biraz esneklik olabilir. JSON şemasını temsil etmek için uygun olan her biçim kullanılabilir.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
});

const prompt = `List a few popular cookie recipes using this JSON schema:

Recipe = {'recipeName': string}
Return: Array<Recipe>`;

const result = await model.generateContent(prompt);
console.log(result.response.text());

Çıkış şu şekilde görünebilir:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]

Model yapılandırması aracılığıyla şema sağlama

Aşağıdaki örnekte şunlar yapılır:

  1. JSON ile yanıt vermek üzere bir şema aracılığıyla yapılandırılan bir modeli oluşturur.
  2. Modelden kurabiye tarifleri döndürmesini ister.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

const schema = {
  description: "List of recipes",
  type: SchemaType.ARRAY,
  items: {
    type: SchemaType.OBJECT,
    properties: {
      recipeName: {
        type: SchemaType.STRING,
        description: "Name of the recipe",
        nullable: false,
      },
    },
    required: ["recipeName"],
  },
};

const model = genAI.getGenerativeModel({
  model: "gemini-1.5-pro",
  generationConfig: {
    responseMimeType: "application/json",
    responseSchema: schema,
  },
});

const result = await model.generateContent(
  "List a few popular cookie recipes.",
);
console.log(result.response.text());

Çıkış şu şekilde görünebilir:

[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]