Web uygulamalarındaki karma deneyimler için yapılandırılmış çıkış oluşturma

Gemini modelleri, yanıtları varsayılan olarak yapılandırılmamış metin şeklinde döndürür. Ancak bazı kullanım alanları için yapılandırılmış metin (JSON veya enum gibi) gerekir. Örneğin, yanıtı, yerleşik bir veri şeması gerektiren diğer alt görevler için kullanıyor olabilirsiniz.

Modelin oluşturduğu çıktının her zaman belirli bir şemaya uymasını sağlamak için model yanıtlarının şablonu gibi çalışan bir şema tanımlayabilirsiniz. Ardından, daha az işlem sonrası işlemle modelin çıkışından doğrudan veri ayıklayabilirsiniz.

Bazı örnek kullanım alanları:

  • Modelin yanıtının geçerli bir JSON ürettiğinden 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, negative veya bad gibi değişkenlik gösterebilir) yerine, modelin metni belirli bir etiket grubuyla (ör. positive ve negative gibi belirli bir enum grubu) etiketlemesini sağlayabilirsiniz.

Bu sayfada, web uygulamaları için hibrit deneyimlerinizde yapılandırılmış çıkışların (JSON ve enum'lar gibi) nasıl oluşturulacağı 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 veya cihaz üzerinde çalıştırılmasından bağımsız olarak modelin yapılandırılmış çıkışla yanıt vermesi için hem inCloudParams hem de onDeviceParams modunu yapılandırın:

    • Cihaz üzerinde modeller için: onDeviceParams içinde responseConstraint değerini, Schema yardımcı yöntemleriyle oluşturulmuş bir şema veya düz bir JSON şeması kullanarak belirtin.

    • Bulutta barındırılan modeller için: responseMimeType (JSON için application/json veya enum'lar için text/x.enum) ve inCloudParams içinde responseSchema değerini belirtin.

  • Hibrit olmayan çıkarım modları: Yalnızca yukarıda açıklanan geçerli yapılandırmayı kullanın.

Başlamadan önce

Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın.

Karma deneyimler oluşturmaya yönelik başlangıç kılavuzunu tamamladığınızdan emin olun.


JSON çıkışına git Enum çıkışına git

JSON çıkışı

Aşağıdaki örneklerde, karma çıkarımı (ör. PREFER_ON_DEVICE) desteklemek için genel JSON çıkış örneği uyarlanmıştır.

Bu örneklerdeki senaryoda model, fantastik bir hikaye için karakter profillerinin listesini oluşturur. Bu profillerde ad, yaş, tür ve isteğe bağlı aksesuarlar gibi yapılandırılmış özellikler bulunur.

Yanıt şemalarınızı aşağıdaki yaklaşımlardan birini kullanarak tanımlayabilirsiniz:

  • Firebase Schema yardımcı yöntemleri (önerilir): Ek şablon olmadan doğrudan kodunuzda kısa ve kompakt şemalar yazmak için yardımcı yöntemleri (ör. Schema.object() ve Schema.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 JSON dosyalarından şema içe aktarıyorsanız standart bir JSON şeması 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ı tarafından sağlanan Schema yardımcı yöntemleri (ör. Schema.object, Schema.array, Schema.string ve Schema.number) 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ıya ait düğmeyi 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ımlanmaktadı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ıya ait düğmeyi 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ı (ör. PREFER_ON_DEVICE) desteklemek için genel enum çıkış örneği uyarlanmıştır.

Bu örneklerdeki senaryoda model, önceden tanımlanmış izin verilen seçenekler 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 Schema yardımcı yöntemleri (önerilir): Ek şablon olmadan doğrudan kodunuzda kısa ve kompakt şemalar yazmak için yardımcı yöntemleri (ör. Schema.object() ve Schema.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 JSON dosyalarından şema içe aktarıyorsanız standart bir JSON şeması nesnesi kullanın.

1. örnek: Firebase Schema yardımcı yöntemlerini kullanma

Bu örnekte, izin verilen enum değerlerini tanımlamak için Firebase AI Logic SDK'sı tarafından sağlanan Schema.enumString yardımcı yöntemi 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ıya ait düğmeyi 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ımlanmaktadı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ıya ait düğmeyi 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 bildirimde bulunun