Gemini modele domyślnie zwracają odpowiedzi w postaci nieustrukturyzowanego tekstu. W niektórych przypadkach wymagany jest jednak tekst ustrukturyzowany, np. w formacie JSON. Możesz na przykład używać odpowiedzi do innych zadań, które wymagają ustalonego schematu danych.
Aby mieć pewność, że wygenerowane przez model dane wyjściowe zawsze będą zgodne z określonym schematem, możesz zdefiniować schemat, który będzie działać jak plan odpowiedzi modelu. Dzięki temu możesz bezpośrednio wyodrębniać dane z danych wyjściowych modelu, ograniczając potrzebę przetwarzania końcowego.
Oto przykłady:
Upewnij się, że odpowiedź modelu jest prawidłowym kodem JSON i jest zgodna z podanym schematem.
Model może na przykład generować ustrukturyzowane wpisy dotyczące przepisów, które zawsze zawierają nazwę przepisu, listę składników i instrukcje. Dzięki temu możesz łatwiej analizować i wyświetlać te informacje w interfejsie aplikacji.Ogranicz sposób, w jaki model może odpowiadać podczas zadań klasyfikacji.
Możesz na przykład sprawić, że model będzie oznaczał tekst określonym zestawem etykiet (np. określonym zestawem wyliczeń, takich jakpositiveinegative), a nie etykietami generowanymi przez model (które mogą mieć pewien stopień zmienności, np.good,positive,negativelubbad).
Na tej stronie opisujemy, jak generować ustrukturyzowane dane wyjściowe (np. JSON i wyliczenia) w hybrydowych interfejsach aplikacji internetowych.
Zanim zaczniesz
Upewnij się, że masz za sobą przewodnik dla początkujących dotyczący tworzenia hybrydowych interfejsów.
Ustawianie konfiguracji ustrukturyzowanych danych wyjściowych
Generowanie ustrukturyzowanych danych wyjściowych (np. JSON i wyliczeń) jest obsługiwane w przypadku wnioskowania przy użyciu modeli hostowanych w chmurze i modeli na urządzeniu.
W przypadku wnioskowania hybrydowego użyj zarówno
inCloudParams
jak i
onDeviceParams
, aby skonfigurować model tak, aby odpowiadał ustrukturyzowanymi danymi wyjściowymi. W przypadku pozostałych trybów użyj tylko odpowiedniej konfiguracji.
W przypadku
inCloudParams: określ odpowiedniresponseMimeType(np.application/json) orazresponseSchema, którego ma używać model.W przypadku
onDeviceParams: określresponseConstraint, którego ma używać model.
Dane wyjściowe JSON
Ten przykład dostosowuje
ogólny przykład danych wyjściowych JSON
do wnioskowania hybrydowego (w tym przykładzie 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
}
}
});
// ...
Dane wyjściowe wyliczeń
Ten przykład dostosowuje
ogólny przykład danych wyjściowych wyliczeń
do wnioskowania hybrydowego (w tym przykładzie 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
}
}
});
// ...