Puoi garantire che l'output generato da un modello rispetti sempre uno schema specifico, in modo da ricevere risposte formattate in modo coerente. Ad esempio, potresti avere uno schema di dati consolidato che utilizzi per altre attività. Se fai in modo che il modello segua lo stesso schema, puoi estrarre direttamente i dati dall'output del modello senza alcuna post-elaborazione.
Per specificare la struttura dell'output di un modello, definisci uno schema di risposta, che funziona come un progetto per le risposte del modello. Quando invii un prompt e includi lo schema di risposta, la risposta del modello segue sempre lo schema definito.
Puoi controllare l'output generato quando utilizzi i seguenti modelli:
- Modelli Gemini:
Fai clic per espandere i modelli supportati
- Gemini Robotics ER 2
- Gemini 4 Carbon per la cybersicurezza
- Gemini 4 Carbon
- Gemini 4 Argon Cyber Permissive
- Gemini 4 Argon
- Gemini 3.8 Flash Cyber
- Gemini 3.8 Flash
- Gemini 3.7 Flash
- Gemini 3.6 Flash
- Gemini 3.5 Flash-Lite
- Gemini 3.5 Flash
- Gemini 3.1 Pro
- Gemini 3.1 Flash-Lite
- Gemini 3 Flash
- Gemini 2.5 Pro
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash
Modelli aperti:
Per i modelli aperti, segui questa guida dell'utente.
Esempi di casi d'uso
Un caso d'uso per l'applicazione di uno schema di risposta è garantire che la risposta di un modello produca un JSON valido e sia conforme allo schema. Gli output dei modelli generativi possono avere un certo grado di variabilità, quindi l'inclusione di uno schema di risposta garantisce di ricevere sempre un JSON valido. Di conseguenza, le attività downstream possono aspettarsi in modo affidabile un input JSON valido dalle risposte generate.
Un altro esempio è limitare il modo in cui un modello può rispondere. Ad esempio, puoi fare in modo che un modello annoti il testo con etichette definite dall'utente, non con etichette prodotte dal modello. Questo vincolo è utile quando ti aspetti un insieme specifico di etichette come positive o negative e non vuoi ricevere un mix di altre etichette che il modello potrebbe generare, come good, positive, negative o bad.
Considerazioni
Le seguenti considerazioni illustrano le potenziali limitazioni se prevedi di utilizzare uno schema di risposta:
- Devi utilizzare l'API per definire e utilizzare uno schema di risposta. Non è disponibile il supporto della console.
- Le dimensioni dello schema di risposta vengono conteggiate ai fini del limite di token di input.
Sono supportati solo alcuni formati di output, ad esempio
application/jsonotext/x.enum. Per quanto riguarda l'output JSON:- L'impostazione di
response_mime_typesuapplication/jsonsenza specificare unresponse_schemafunge solo da suggerimento forte e comporta un piccolo rischio di generare un JSON non valido. - Per garantire oggetti JSON validi al 100%, le richieste devono includere sia
response_schemasiaresponse_mime_typeimpostati suapplication/json. - Come best practice, se il tuo caso d'uso ti impedisce di predefinire uno schema, implementa un validator JSON lato client con un meccanismo di ripetizione.
- L'impostazione di
L'output strutturato supporta un sottoinsieme del riferimento dello schema di Gemini Enterprise Agent Platform. Per saperne di più, consulta Campi dello schema supportati.
Uno schema complesso può generare un errore
InvalidArgument: 400. La complessità potrebbe derivare da nomi di proprietà lunghi, limiti di lunghezza degli array lunghi, enum con molti valori, oggetti con molte proprietà facoltative o una combinazione di questi fattori.Se ricevi questo errore con uno schema valido, apporta una o più delle seguenti modifiche per risolverlo:
- Abbrevia i nomi delle proprietà o degli enum.
- Appiattisci gli array nidificati.
- Riduci il numero di proprietà con vincoli, ad esempio numeri con limiti minimi e massimi.
- Riduci il numero di proprietà con vincoli complessi, ad esempio proprietà con formati complessi come
date-time. - Riduci il numero di proprietà facoltative.
- Riduci il numero di valori validi per gli enum.
Campi dello schema supportati
Puoi specificare un response_schema che descrive il formato di output.
Il modello genera una risposta che corrisponde allo schema fornito. Quando utilizzi gli output strutturati, il modello produce output nello stesso ordine delle chiavi nello schema.
Sono supportati i seguenti campi dello schema di Agent Platform. Se utilizzi un campo non supportato, Agent Platform può comunque gestire la tua richiesta, ma ignora il campo:
anyOfenum: sono supportati solo elementistringnon vuoti. Se includi una stringa vuota (""), viene restituito un errore400 INVALID_ARGUMENT(cannot be empty).formatitemsmaximummaxItemsminimumminItemsnullableproperties: le chiavi delle proprietà devono essere stringhe non vuote. Se includi una chiave di stringa vuota (""), viene restituito un errore400 INVALID_ARGUMENT(key cannot be empty).descriptionpropertyOrdering*required
* propertyOrdering è specifico per l'output strutturato e non fa parte dello schema della piattaforma agentica. Questo campo definisce l'ordine in cui vengono generate le proprietà. Le proprietà elencate devono essere univoche e devono essere chiavi valide nel dizionario properties.
Quando definisci uno schema, il modello non segue rigorosamente l'ordine delle proprietà definite nel campo properties. Per applicare un ordine specifico per la generazione delle proprietà, utilizza il campo propertyOrdering. Le proprietà elencate in propertyOrdering vengono generate per prime, nell'ordine specificato, seguite da tutte le altre proprietà.
Se utilizzi l'SDK Python, l'ordinamento predefinito delle proprietà segue l'ordine definito nello schema. In tutti gli altri casi, le proprietà vengono generate in ordine alfabetico, con le proprietà obbligatorie raggruppate per prime, seguite da quelle facoltative.
Per il campo format, Agent Platform supporta i seguenti valori:
date, date-time, duration e time. La descrizione e il formato di ogni valore sono descritti nel registro OpenAPI Initiative.
Prima di iniziare
Definisci uno schema di risposta per specificare la struttura dell'output di un modello, i nomi dei campi e il tipo di dati previsto per ogni campo. Utilizza solo i campi supportati elencati nella sezione Considerazioni. Tutti gli altri campi vengono ignorati.
Includi lo schema di risposta solo nel campo responseSchema. Non duplicare lo schema nel prompt di input. In caso contrario, l'output generato potrebbe essere di qualità inferiore.
Per gli schemi di esempio, consulta la sezione Esempi di schemi e risposte del modello.
Comportamento del modello e schema di risposta
Quando un modello genera una risposta, utilizza il nome e la descrizione del campo dello schema fornito. Utilizza una struttura chiara e nomi di campi non ambigui in modo che l'intento sia chiaro. Come best practice, utilizza il campo description all'interno delle proprietà dello schema per definire lo scopo di ogni campo.
Per impostazione predefinita, i campi sono facoltativi, il che significa che il modello può compilarli o saltarli. Puoi impostare i campi come obbligatori per forzare il modello a fornire un valore. Se il contesto nel prompt di input associato non è sufficiente, il modello genera risposte basate principalmente sui dati su cui è stato addestrato.
Se non vedi i risultati previsti, inizia eseguendo l'iterazione delle descrizioni nello schema. Se non riesci a catturare le sfumature dello schema solo nella descrizione dello schema, puoi discutere lo schema nel prompt seguendo queste linee guida:
Specifica lo schema solo nell'oggetto schema. Non specificare lo schema anche nel prompt. Se esegui entrambe le operazioni, le prestazioni potrebbero diminuire.
Evita di discutere dello schema nel prompt (oltre a "segui lo schema fornito" o simili), a meno che non sia necessario. In questo modo, la manutenzione è più semplice: se lo schema deve essere modificato, puoi aggiornare solo lo schema anziché sia il prompt sia lo schema.
Se devi discutere lo schema nel prompt (per fornire esempi o istruzioni particolarmente dettagliate che altrimenti porterebbero a valori
descriptionlunghi nello schema), segui l'ordine exact dei campi nello schema fornito. Confondere l'ordine dei campi nello schema fornito rispetto al prompt può causare errori di output.
Invia un prompt con uno schema di risposta
Per impostazione predefinita, tutti i campi sono facoltativi, il che significa che un modello potrebbe generare una risposta per un campo. Per forzare il modello a generare sempre una risposta per un campo, imposta il campo come obbligatorio.
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
Scopri come installare o aggiornare l'Go.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
Installa
npm install @google/genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
Scopri come installare o aggiornare l'Java.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
REST
API GenerateContent
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- GENERATE_RESPONSE_METHOD: il tipo di risposta che vuoi che il modello generi.
Scegli un metodo che genera la modalità di restituzione della risposta del modello:
streamGenerateContent: la risposta viene trasmessa in streaming man mano che viene generata per ridurre la percezione della latenza per un pubblico umano.generateContent: la risposta viene restituita dopo essere stata generata completamente.
- LOCATION: la regione in cui elaborare la richiesta.
- PROJECT_ID: il tuo ID progetto
- MODEL_ID: l'ID modello del modello multimodale che vuoi utilizzare.
- ROLE:
Il ruolo in una conversazione associata ai contenuti. La specifica di un ruolo è obbligatoria anche nei casi d'uso single-turn.
I valori accettabili includono:
USER: specifica i contenuti inviati da te.
- TEXT: le istruzioni di testo da includere nel prompt.
- RESPONSE_MIME_TYPE: il tipo di formato del testo candidato generato. Per un elenco dei valori supportati, consulta il parametro
responseMimeTypenell'API Gemini. - RESPONSE_SCHEMA: lo schema che il modello deve seguire durante la generazione delle risposte. È buona norma utilizzare il campo
descriptionper descrivere lo scopo dello schema e le relative proprietà. Per saperne di più, consulta il riferimento Schema.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corpo JSON della richiesta:
{
"contents": {
"role": "user",
"parts": {
"text": "List a few popular cookie recipes."
}
},
"generation_config": {
"maxOutputTokens": 2048,
"responseMimeType": "application/json",
"responseSchema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recipe_name": {
"type": "string",
"description": "The name of the cookie recipe."
}
},
"required": ["recipe_name"]
}
}
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
API Interactions
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT_ID: il tuo ID progetto
- MODEL_ID: l'ID modello del modello multimodale che vuoi utilizzare.
Metodo HTTP e URL:
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/interactions
Corpo JSON della richiesta:
{
"model": "MODEL_ID",
"input": [
{
"type": "user_input",
"content": [
{
"type": "text",
"text": "List a few popular cookie recipes."
}
]
}
],
"generation_config": {
"max_output_tokens": 2048
},
"response_format": {
"type": "text",
"mime_type": "application/json",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recipe_name": {
"type": "string",
"description": "The name of the cookie recipe."
}
},
"required": ["recipe_name"]
}
}
}
}
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/interactions"
PowerShell
Salva il corpo della richiesta in un file denominato request.json,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Esempi di schemi per l'output JSON
Le sezioni seguenti mostrano una serie di prompt e schemi di risposta di esempio. Dopo ogni esempio di codice è inclusa anche una risposta di esempio del modello.
- Effettua previsioni meteo per ogni giorno della settimana in un array
- Classifica un prodotto con un enum ben definito
Effettua previsioni meteo per ogni giorno della settimana
L'esempio seguente restituisce un oggetto forecast per ogni giorno della settimana che include un array di proprietà, come la temperatura prevista e il livello di umidità per il giorno. Alcune proprietà sono impostate su nullable, in modo che il modello possa restituire un valore null quando non dispone di un contesto sufficiente per generare una risposta significativa. Questa strategia aiuta a ridurre le allucinazioni.
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
Scopri come installare o aggiornare l'Go.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
Installa
npm install @google/genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
Scopri come installare o aggiornare l'Java.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Classifica un prodotto
L'esempio seguente include enum in cui il modello deve classificare il tipo e la condizione di un oggetto da un elenco di valori specificati.
Python
Installa
pip install --upgrade google-genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Go
Scopri come installare o aggiornare l'Go.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Node.js
Installa
npm install @google/genai
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True
Java
Scopri come installare o aggiornare l'Java.
Per saperne di più, consulta la documentazione di riferimento dell'SDK.
Imposta le variabili di ambiente per utilizzare l'SDK Google Gen AI con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_ENTERPRISE=True