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ı, JSON gibi yapılandırılmış metin 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.

Aşağıda bazı örnekler verilmiştir:

  • 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 yapılandırılmış çıkış (ör. JSON ve enums) oluşturma açıklanmaktadır.

Başlamadan önce

Karma deneyimler oluşturmaya başlama rehberini tamamladığınızdan emin olun.

Yapılandırılmış çıkış için yapılandırmayı ayarlama

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) oluşturma desteklenir.

Karma çıkarım için modeli yapılandırılmış çıkışla yanıt verecek şekilde ayarlamak üzere hem inCloudParams hem de onDeviceParams kullanın. Diğer modlar için yalnızca geçerli yapılandırmayı kullanın.

  • inCloudParams için: Uygun responseMimeType'ü (örneğin, application/json) ve modelin kullanmasını istediğiniz responseSchema'ı belirtin.

  • onDeviceParams için: Modelin kullanmasını istediğiniz responseConstraint öğesini belirtin.

JSON çıkışı

Aşağıdaki örnekte, hibrit çıkarımı (bu örnekte PREFER_ON_DEVICE) desteklemek için genel JSON çıkışı örneği uyarlanmıştır:

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const jsonSchema = Schema.object({
 properties: {
    characters: Schema.array({
      items: Schema.object({
        properties: {
          name: Schema.string(),
          accessory: Schema.string(),
          age: Schema.number(),
          species: Schema.string(),
        },
        optionalProperties: ["accessory"],
      }),
    }),
  }
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "application/json",
      responseSchema: jsonSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: jsonSchema
    }
  }
});

// ...

Enum çıkışı

Aşağıdaki örnek, karma çıkarımı desteklemek için genel enum çıkış örneğini (bu örnekte PREFER_ON_DEVICE) uyarlar:

import {
  getAI,
  getGenerativeModel,
  Schema
} from "firebase/ai";

const enumSchema = Schema.enumString({
  enum: ["drama", "comedy", "documentary"],
});

const model = getGenerativeModel(ai, {
  mode: InferenceMode.PREFER_ON_DEVICE,
  inCloudParams: {
    generationConfig: {
      responseMimeType: "text/x.enum",
      responseSchema: enumSchema
    },
  }
  onDeviceParams: {
    promptOptions: {
      responseConstraint: enumSchema
    }
  }
});

// ...