Gemini modele domyślnie zwracają odpowiedzi w postaci nieustrukturyzowanego tekstu. W niektórych przypadkach wymagany jest jednak tekst ustrukturyzowany, np. 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 przetwarzanie końcowe.
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 poprosić model, aby 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 chcesz używać w modelu.W przypadku
onDeviceParams: określresponseConstraint, którego chcesz używać w modelu.
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
}
}
});
// ...