Generare output strutturati (come JSON) utilizzando l'API Gemini


Per impostazione predefinita, Gemini API restituisce le risposte come testo non strutturato. Tuttavia, alcuni casi d'uso richiedono testo strutturato, come JSON. Ad esempio, potresti utilizzare la risposta per altre attività a valle che richiedono uno schema di dati stabilito.

Per garantire che l'output generato del modello rispetti sempre uno schema specifico, puoi definire uno schema di risposta, che funziona come un progetto per le risposte del modello. Puoi quindi estrarre direttamente i dati dall'output del modello riducendo il tempo di post-elaborazione.

Ecco alcuni esempi:

  • Assicurati che la risposta di un modello generi JSON valido e sia conforme allo schema fornito.
    Ad esempio, il modello può generare voci strutturate per ricette che includono sempre il nome della ricetta, l'elenco di ingredienti e i passaggi. In questo modo, potrai analizzare e visualizzare più facilmente queste informazioni nell'interfaccia utente della tua app.

  • Limita il modo in cui un modello può rispondere durante le attività di classificazione.
    Ad esempio, puoi fare in modo che il modello annota il testo con un insieme specifico di etichette (ad esempio, un insieme specifico di enumerazioni come positive e negative), anziché etichette generate dal modello (che potrebbero avere un certo grado di variabilità come good, positive, negative o bad).

Questa guida mostra come generare un output JSON fornendo un responseSchema in una chiamata a generateContent. Si concentra sull'input di solo testo, ma Gemini può anche produrre risposte strutturate a richieste multimodali che includono immagini, video e audio come input.

Nella parte inferiore di questa pagina sono riportati altri esempi, ad esempio come generare valori enum come output. Per visualizzare altri esempi di come generare output strutturato, consulta l'elenco di schemi di esempio e risposte del modello nella documentazione di Google Cloud.

Prima di iniziare

Se non l'hai ancora fatto, consulta la Guida introduttiva agli SDK Vertex AI in Firebase. Assicurati di avere eseguito tutte le seguenti operazioni:

  1. Imposta un progetto Firebase nuovo o esistente, incluso l'utilizzo del piano tariffario Blaze e l'abilitazione delle API richieste.

  2. Collega la tua app a Firebase, registrandola e aggiungendo la configurazione di Firebase all'app.

  3. Aggiungi l'SDK e inizializza il servizio Vertex AI e il modello generativo nella tua app.

Dopo aver connesso la tua app a Firebase, aggiunto l'SDK e inizializzato il servizio Vertex AI e il modello generativo, puoi chiamare Gemini API.

Passaggio 1: definisci uno schema di risposta

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.

Quando un modello genera la sua risposta, utilizza il nome e il contesto del campo del prompt. Per chiarire l'intento, ti consigliamo di utilizzare una struttura chiara, nomi dei campi e persino descrizioni, se necessario.

Considerazioni sugli schemi di risposta

Quando scrivi lo schema di risposta, tieni presente quanto segue:

  • Le dimensioni dello schema di risposta vengono conteggiate ai fini del limite di token di input.

  • La funzionalità dello schema di risposta supporta i seguenti tipi MIME di risposta:

    • application/json: output JSON come definito nello schema di risposta (utile per i requisiti di output strutturato)

    • text/x.enum: restituisce un valore enum come definito nello schema di risposta (utile per le attività di classificazione)

  • La funzionalità dello schema di risposta supporta i seguenti campi dello schema:

    enum
    items
    maxItems
    nullable
    properties
    required

    Se utilizzi un campo non supportato, il modello può comunque gestire la tua richiesta, ma ignora il campo. Tieni presente che l'elenco precedente è un sottoinsieme dell'oggetto dello schema OpenAPI 3.0 (consulta la documentazione di riferimento allo schema Vertex AI).

  • Per impostazione predefinita, per gli SDK Vertex AI in Firebase tutti i campi sono considerati obbligatori, a meno che non li specifichi come facoltativi in un array optionalProperties. Per questi campi facoltativi, il modello può completarli o ignorarli.

    Tieni presente che questo è il contrario del comportamento predefinito per Vertex AI Gemini API.

Passaggio 2: invia un prompt con uno schema di risposta per generare JSON

L'esempio seguente mostra come generare un output JSON strutturato.

Per generare un output strutturato, devi specificare durante l'inizializzazione del modello il responseMimeType appropriato (in questo esempio application/json) nonché il responseSchema che vuoi che il modello utilizzi.

L'utilizzo di responseSchema è supportato da Gemini 1.5 Pro e Gemini 1.5 Flash.

Scopri come scegliere un modello Gemini e, facoltativamente, una posizione appropriata per il tuo caso d'uso e la tua app.

Altri esempi

Per visualizzare altri esempi di come utilizzare e generare output strutturato, consulta l'elenco di schemi di esempio e risposte del modello nella documentazione di Google Cloud.

Genera valori enum come output

L'esempio seguente mostra come utilizzare uno schema di risposta per un'attività di classificazione. Al modello viene chiesto di identificare il genere di un film in base alla descrizione. L'output è un valore enumerato in testo normale selezionato dal modello da un elenco di valori definiti nello schema di risposta fornito.

Per eseguire questa attività di classificazione strutturata, devi specificare durante l'inizializzazione del modello il responseMimeType appropriato (in questo esempio, text/x.enum) e il responseSchema che vuoi che il modello utilizzi.

Scopri come scegliere un modello Gemini e, facoltativamente, una posizione appropriata per il tuo caso d'uso e la tua app.

Altre opzioni per controllare la generazione di contenuti

  • Scopri di più sul design dei prompt per poter influenzare il modello in modo che generi output specifici per le tue esigenze.
  • Configura i parametri del modello per controllare il modo in cui il modello genera una risposta. Questi parametri includono il numero massimo di token di output, temperatura, topK e topP.
  • Utilizza le impostazioni di sicurezza per modificare la probabilità di ricevere risposte che potrebbero essere considerate dannose, inclusi contenuti di incitamento all'odio e sessualmente espliciti.
  • Imposta le istruzioni di sistema per orientare il comportamento del modello. Questa funzionalità è simile a un "preambolo" che viene aggiunto prima che il modello venga esposto ad eventuali ulteriori istruzioni dell'utente finale.


Fornisci un feedback sulla tua esperienza con Vertex AI in Firebase