Binjakët gjenerojnë tekst të pastrukturuar si parazgjedhje, por disa aplikacione kërkojnë tekst të strukturuar. Për këto raste përdorimi, mund ta kufizoni Gemini të përgjigjet me JSON, një format i strukturuar i të dhënave i përshtatshëm për përpunim të automatizuar. Ju gjithashtu mund ta kufizoni modelin që të përgjigjet me një nga opsionet e specifikuara në një numër.
Këtu janë disa raste përdorimi që mund të kërkojnë dalje të strukturuar nga modeli:
- Ndërtoni një bazë të dhënash të kompanive duke nxjerrë informacionin e kompanisë nga artikujt e gazetave.
- Tërhiqni informacionin e standardizuar nga CV-të.
- Nxjerr përbërësit nga recetat dhe shfaq një lidhje në një faqe interneti ushqimore për secilin përbërës.
Në kërkesën tuaj, mund t'i kërkoni Binjakëve që të prodhojë dalje të formatuar JSON, por kini parasysh se modeli nuk është i garantuar të prodhojë JSON dhe asgjë tjetër përveç JSON. Për një përgjigje më deterministe, ju mund të kaloni një skemë specifike JSON në një fushë responseSchema
në mënyrë që Binjakët të përgjigjen gjithmonë me një strukturë të pritshme. Për të mësuar më shumë rreth punës me skemat, shihni Më shumë rreth skemave JSON .
Ky udhëzues ju tregon se si të gjeneroni JSON duke përdorur metodën generateContent
përmes SDK-së së zgjedhjes suaj ose duke përdorur drejtpërdrejt API REST. Shembujt tregojnë hyrjen vetëm me tekst, megjithëse Gemini mund të prodhojë gjithashtu përgjigje JSON ndaj kërkesave multimodale që përfshijnë imazhe , video dhe audio .
Përpara se të filloni: Vendosni projektin tuaj dhe çelësin API
Përpara se të telefononi Gemini API, duhet të konfiguroni projektin tuaj dhe të konfiguroni çelësin tuaj API.
Zgjero për të parë se si të konfigurosh projektin dhe çelësin API
Merrni dhe sigurojeni çelësin tuaj API
Ju duhet një çelës API për të thirrur Gemini API. Nëse nuk e keni tashmë një të tillë, krijoni një çelës në Google AI Studio.
Rekomandohet fuqimisht që të mos kontrolloni një çelës API në sistemin tuaj të kontrollit të versionit.
Duhet të përdorni një dyqan sekretesh për çelësin tuaj API, siç është Menaxheri i fshehtë i resë kompjuterike të Google.
Të gjitha fragmentet në këtë tutorial supozojnë se po i aksesoni çelësin tuaj API si një konstante globale.
Gjeneroni JSON
Kur modeli është konfiguruar për të nxjerrë JSON, ai i përgjigjet çdo kërkese me dalje të formatuar JSON.
Ju mund të kontrolloni strukturën e përgjigjes JSON duke ofruar një skemë. Ekzistojnë dy mënyra për t'i dhënë një skemë modelit:
- Si tekst në prompt
- Si një skemë e strukturuar e ofruar përmes konfigurimit të modelit
Jepni një skemë si tekst në prompt
Shembulli i mëposhtëm e shtyn modelin të kthejë recetat e cookie-ve në një format specifik JSON.
Meqenëse modeli merr specifikimin e formatit nga teksti në prompt, mund të keni njëfarë fleksibiliteti në mënyrën se si e përfaqësoni specifikimin. Çdo format i arsyeshëm për paraqitjen e një skeme JSON mund të funksionojë.
// 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());
Prodhimi mund të duket si ky:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
Siguroni një skemë përmes konfigurimit të modelit
Shembulli i mëposhtëm bën sa vijon:
- Instancon një model të konfiguruar përmes një skeme për t'u përgjigjur me JSON.
- E kërkon modelin të kthejë recetat e biskotave.
Kjo metodë më formale për deklarimin e skemës JSON ju jep kontroll më të saktë sesa të mbështeteni vetëm në tekstin në kërkesë.
// 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());
Prodhimi mund të duket si ky:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
Më shumë rreth skemave JSON
Kur konfiguroni modelin që të kthejë një përgjigje JSON, mund të përdorni një objekt Schema
për të përcaktuar formën e të dhënave JSON. Schema
përfaqëson një nënbashkësi të zgjedhur të objektit OpenAPI 3.0 Schema .
Këtu është një përfaqësim pseudo-JSON i të gjitha fushave Schema
:
{
"type": enum (Type),
"format": string,
"description": string,
"nullable": boolean,
"enum": [
string
],
"maxItems": string,
"minItems": string,
"properties": {
string: {
object (Schema)
},
...
},
"required": [
string
],
"propertyOrdering": [
string
],
"items": {
object (Schema)
}
}
Type
i skemës duhet të jetë një nga llojet e të dhënave OpenAPI. Vetëm një nëngrup fushash është e vlefshme për çdo Type
. Lista e mëposhtme harton çdo Type
në fusha të vlefshme për atë lloj:
-
string
-> enum, format -
integer
-> format -
number
-> format -
boolean
-
array
-> minItems, maxItems, artikuj -
object
-> vetitë, të kërkuara, pronëRendimi, i pavlefshëm
Këtu janë disa skema shembuj që tregojnë kombinime të vlefshme të tipit dhe fushës:
{ "type": "string", "enum": ["a", "b", "c"] }
{ "type": "string", "format": "date-time" }
{ "type": "integer", "format": "int64" }
{ "type": "number", "format": "double" }
{ "type": "boolean" }
{ "type": "array", "minItems": 3, "maxItems": 3, "items": { "type": ... } }
{ "type": "object",
"properties": {
"a": { "type": ... },
"b": { "type": ... },
"c": { "type": ... }
},
"nullable": true,
"required": ["c"],
"propertyOrdering": ["c", "b", "a"]
}
Për dokumentacionin e plotë të fushave të Skemës pasi ato përdoren në API-në Gemini, shihni referencën e skemës .
Renditja e pronës
Kur jeni duke punuar me skemat JSON në Gemini API, renditja e vetive është e rëndësishme. Si parazgjedhje, API i rendit pronat në mënyrë alfabetike dhe nuk ruan rendin në të cilin përcaktohen vetitë (edhe pse SDK-të e AI të Genit të Google mund ta ruajnë këtë renditje). Nëse po i jepni shembuj modelit me një skemë të konfiguruar dhe renditja e vetive të shembujve nuk është në përputhje me renditjen e vetive të skemës, rezultati mund të jetë i ngathët ose i papritur.
Për të siguruar një renditje të qëndrueshme dhe të parashikueshme të pronave, mund të përdorni fushën opsionale propertyOrdering[]
.
"propertyOrdering": ["recipe_name", "ingredients"]
propertyOrdering[]
– jo një fushë standarde në specifikimin OpenAPI – është një grup vargjesh që përdoren për të përcaktuar rendin e vetive në përgjigje. Duke specifikuar rendin e vetive dhe më pas duke ofruar shembuj me vetitë në të njëjtin rend, mund të përmirësoni potencialisht cilësinë e rezultateve.