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ı yapılandırılmış metin (ör. JSON veya enums) gerektirir. Örneğin, yanıtı, kurulu 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 doğrudan daha az son işlemeyle 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ıtlayın.
    Örneğin, modelin ürettiği etiketler (good, positive, negative veya bad gibi bir değişkenlik derecesine sahip olabilir) yerine, modelin metni belirli bir etiket grubuyla (örneğin, positive ve negative gibi belirli bir enum grubu) açıklamasını sağlayabilirsiniz.

Bu sayfada, web uygulamaları için hibrit deneyimlerinizde nasıl yapılandırılmış çıkış (ör. JSON ve enums) oluşturacağınız 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 numaralandırmalar) 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 inCloudParams hem de onDeviceParams yapılandırın:

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

    • Bulutta barındırılan modeller için: responseMimeType (JSON için application/json veya numaralandırılmış türler için text/x.enum) ve responseSchema değerini inCloudParams içinde 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 kodu 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, hibrit çıkarımı (örneğin, PREFER_ON_DEVICE) desteklemek için genel JSON çıkışı örneği uyarlanmıştır.

Bu örneklerdeki senaryoda model, bir fantezi hikayesi için karakter profilleri listesi 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 Schema yardımcı yöntemleri (önerilir): Yardımcı yöntemleri (ör. Schema.object() ve Schema.enumString()) kullanarak kodunuzda doğrudan kısa ve öz şemalar yazın. Ek standart kod gerekmez.

  • 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ı 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ı 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ı (ör. 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 Schema yardımcı yöntemleri (önerilir): Yardımcı yöntemleri (ör. Schema.object() ve Schema.enumString()) kullanarak kodunuzda doğrudan kısa ve öz şemalar yazın. Ek standart kod gerekmez.

  • 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ı tarafından sağlanan 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 örnek, enum şemasını yalnızca JSON kullanarak tanımlar.

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