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.

  • Bir modelin sınıflandırma görevleri sırasında nasıl yanıt verebileceğini kısıtlama
    Örneğin, modelin ürettiği etiketler (good, positive, negative veya bad gibi bir dereceye kadar değişkenlik gösterebilir) 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ışın (ör. JSON ve enums) nasıl oluşturulacağı açıklanmaktadır.

Başlamadan önce

Karma deneyimler oluşturmaya yönelik başlangıç kılavuzunu 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ı (bu örnekte PREFER_ON_DEVICE) desteklemek için genel enum çıkış örneğini 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
    }
  }
});

// ...