Gemini domyślnie generuje tekst nieustrukturyzowany, ale niektóre aplikacje wymagają tekstu ustrukturyzowanego. W takich przypadkach możesz ograniczyć Gemini do odpowiadania za pomocą danych w formacie JSON, który jest uporządkowanym formatem danych odpowiednim do przetwarzania automatycznego. Możesz też ograniczyć model do odpowiadania jedną z opcji określonych w typie zbiorczym.
Oto kilka przypadków użycia, które mogą wymagać uporządkowanych danych wyjściowych z modelu:
- Utwórz bazę danych firm, wyciągając informacje o nich z artykułów prasowych.
- wyodrębniać ze standardowych życiorysów informacje,
- wyodrębniać składniki z przepisów i wyświetlać link do strony sklepu spożywczego dla każdego składnika;
W promptzie możesz poprosić Gemini o wygenerowanie danych wyjściowych w formacie JSON, ale pamiętaj, że nie ma gwarancji, że model wygeneruje dane w tym formacie.
Aby uzyskać bardziej deterministyczną odpowiedź, możesz przekazać konkretny schemat JSON w polu responseSchema
, aby Gemini zawsze odpowiadał z oczekiwaną strukturą.
Z tego przewodnika dowiesz się, jak wygenerować plik JSON za pomocą metody generateContent
w wybranym pakiecie SDK lub bezpośrednio za pomocą interfejsu API REST. Przykłady pokazują dane wejściowe w postaci samego tekstu, ale Gemini może też generować odpowiedzi w formacie JSON na potrzeby żądań multimodalnych, które obejmują obrazy, filmy i dźwięk.
Zanim zaczniesz: skonfiguruj projekt i klucz interfejsu API
Zanim wywołasz interfejs Gemini API, musisz skonfigurować projekt i klucz interfejsu API.
Wygeneruj kod JSON
Gdy model jest skonfigurowany tak, aby zwracać dane w formacie JSON, odpowiada na każdy prompt z danymi w tym formacie.
Możesz kontrolować strukturę odpowiedzi JSON, podając schemat. Schemat możesz podać modelowi na 2 sposoby:
- Jako tekst w promptach
- Jako uporządkowany schemat dostarczony w ramach konfiguracji modelu
Oba podejścia działają zarówno w przypadku Gemini 1.5 Flash, jak i Gemini 1.5 Pro.
Podać schemat jako tekst w promptach
W tym przykładzie model zwraca przepisy na ciasteczka w określonym formacie JSON.
Ponieważ model otrzymuje specyfikację formatu z tekstu w promptzie, możesz mieć pewną swobodę w sposobie jej przedstawienia. Możesz użyć dowolnego formatu, który umożliwia wyświetlanie schematu JSON.
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-1.5-flash",
});
const prompt = `List a few popular cookie recipes using this JSON schema:
Recipe = {'recipeName': string}
Return: Array<Recipe>`;
const result = await model.generateContent(prompt);
console.log(result.response.text());
Dane wyjściowe mogą wyglądać tak:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
Przekazywanie schematu w ramach konfiguracji modelu
Ten przykład wykonuje następujące czynności:
- Tworzy instancję modelu skonfigurowanego za pomocą schematu, aby zwracać odpowiedzi w formacie JSON.
- Prosimy o zwrócenie przepisów na ciasteczka.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const schema = {
description: "List of recipes",
type: SchemaType.ARRAY,
items: {
type: SchemaType.OBJECT,
properties: {
recipeName: {
type: SchemaType.STRING,
description: "Name of the recipe",
nullable: false,
},
},
required: ["recipeName"],
},
};
const model = genAI.getGenerativeModel({
model: "gemini-1.5-pro",
generationConfig: {
responseMimeType: "application/json",
responseSchema: schema,
},
});
const result = await model.generateContent(
"List a few popular cookie recipes.",
);
console.log(result.response.text());
Dane wyjściowe mogą wyglądać tak:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]