Создание структурированного вывода для гибридных интерфейсов в веб-приложениях.


Модели Gemini по умолчанию возвращают ответы в виде неструктурированного текста. Однако в некоторых случаях требуется структурированный текст, например, JSON. Например, вы можете использовать ответ для других задач, требующих установленной схемы данных.

Чтобы гарантировать, что выходные данные модели всегда соответствуют определенной схеме, можно определить схему , которая работает как шаблон для ответов модели. Затем можно напрямую извлекать данные из выходных данных модели с минимальной постобработкой.

Вот несколько примеров:

  • Убедитесь, что ответ модели генерирует корректный JSON и соответствует предоставленной вами схеме.
    Например, модель может генерировать структурированные записи для рецептов, которые всегда включают название рецепта, список ингредиентов и этапы приготовления. Затем вы можете проще анализировать и отображать эту информацию в пользовательском интерфейсе вашего приложения.

  • Ограничить возможности модели при выполнении задач классификации.
    Например, модель может аннотировать текст определенным набором меток (например, определенным набором перечислений, таких как positive и negative ), а не метками, которые модель генерирует сама (которые могут иметь определенную степень вариативности, например, good », positive , negative или bad »).

На этой странице описано, как генерировать структурированный вывод (например, в формате JSON и перечисления) в гибридных веб-приложениях.

Прежде чем начать

Убедитесь, что вы завершили руководство по началу работы с созданием гибридных приложений .

Настройте параметры структурированного вывода.

Для вывода результатов с использованием как облачных, так и локальных моделей поддерживается генерация структурированных выходных данных (например, в формате JSON и перечислений).

Для гибридного вывода используйте параметры inCloudParams и onDeviceParams , чтобы настроить модель на предоставление структурированного вывода. Для других режимов используйте только соответствующую конфигурацию.

  • Для inCloudParams : укажите соответствующий responseMimeType (например, application/json ), а также responseSchema , которую вы хотите использовать для модели.

  • Для onDeviceParams : укажите значение responseConstraint , которое должна использовать модель.

вывод в формате JSON

В следующем примере общий пример вывода в формате JSON адаптирован для учета гибридного вывода (в данном примере — PREFER_ON_DEVICE ):

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
    }
  }
});

// ...

Вывод перечисления

В следующем примере общий пример вывода перечисления адаптирован для учета гибридного вывода (в данном примере — PREFER_ON_DEVICE ):

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
    }
  }
});

// ...