Nell'ambito della tua esperienza di Retrieval Augmented Generation (RAG) in Vertex AI Agent Builder, puoi generare risposte basate su fatti ai prompt in base alle seguenti fonti di grounding:
- Ricerca Google: utilizza il grounding con la Ricerca Google se vuoi collegare il modello alle conoscenze del mondo, a un'ampia gamma di argomenti o a informazioni aggiornate su internet. La funzionalità di grounding con la Ricerca Google supporta il recupero dinamico che ti consente di generare Risultati fondati con la Ricerca Google solo quando necessario. Pertanto, la configurazione del recupero dinamico valuta se un prompt richiede la conoscenza di eventi recenti e attiva il grounding con la Ricerca Google. Per ulteriori informazioni, consulta la sezione Ricerca dinamica.
- Testo in linea: utilizza la definizione del contesto con il testo in linea per basare la risposta su frammenti di testo chiamati testo di fatto forniti nella richiesta. Un testo fattuale è un'affermazione fornita dall'utente che viene considerata fattuale per una determinata richiesta. Il modello non verifica l'autenticità del testo del fatto.
- Data store Vertex AI Search: utilizza il grounding con Vertex AI Search se vuoi collegare il modello ai documenti aziendali dai datastore Vertex AI Search.
Questa pagina descrive come generare risposte basate su queste fonti di riferimento utilizzando i seguenti approcci:
Generazione di risposte in un solo passaggio
Inoltre, puoi scegliere di riprodurre in streaming le risposte del modello. La generazione di una risposta basata su dati attendibili tramite streaming è una funzionalità sperimentale.
Puoi utilizzare altri metodi per generare risposte fondate, in base alle tue esigenze. Per saperne di più, consulta API Vertex AI per la creazione di esperienze di ricerca e RAG.
Terminologia
Prima di utilizzare il metodo di generazione di risposte basate su dati, è utile comprendere gli input e gli output, come strutturare la richiesta e la terminologia relativa alla RAG.
Termini RAG
La RAG è una metodologia che consente ai modelli linguistici di grandi dimensioni (LLM) di generare risposte basate sull'origine dati che preferisci. Il RAG prevede due fasi:
- Rievocazione: trovare rapidamente i fatti più pertinenti può essere un problema comune della ricerca. Con la RAG, puoi recuperare rapidamente i fatti importanti per generare una risposta.
- Generare: i fatti recuperati vengono utilizzati dall'LLM per generare una risposta fondata.
Pertanto, il metodo di generazione di risposte fondate recupera i fatti dalla fonte di grounding e genera una risposta fondata.
Dati di input
Il metodo di generazione di risposte basate sui dati richiede i seguenti input nella richiesta:
Ruolo: il mittente di un determinato testo che può essere un utente (
user
) o un modello (model
).Testo: quando il ruolo è
user
, il testo è un prompt e quando il ruolo èmodel
, il testo è una risposta basata su dati. La modalità di specifica del ruolo e del testo in una richiesta è determinata come segue:- Per la generazione di una risposta con un solo turno, l'utente invia il testo del prompt nella richiesta e il modello invia il testo della risposta nella risposta.
- Per la generazione di una risposta con più turni, la richiesta contiene la coppia prompt-risposta per tutti i turni precedenti e il testo del prompt dell'utente per il turno corrente. Pertanto, in una richiesta di questo tipo, il ruolo è
user
per il testo del prompt ed èmodel
per il testo della risposta.
Istruzioni di sistema: un preambolo al prompt che regola il comportamento del modello e modifica di conseguenza l'output. Ad esempio, puoi aggiungere una persona alla risposta generata o chiedere al modello di formattare il testo di output in un determinato modo. Per la generazione di risposte con più turni, devi fornire al sistema le istruzioni per ogni turno. Per ulteriori informazioni, consulta Utilizzare le istruzioni di sistema.
Origine di grounding: la fonte su cui si basa la risposta e che può essere una o più delle seguenti:
Ricerca Google: fonda le risposte sui risultati della Ricerca Google. Quando l'origine di ancoraggio è la Ricerca Google, puoi specificare una configurazione di recupero dinamico con una soglia di recupero dinamico. Per ulteriori informazioni, consulta la sezione Ricerca dinamica.
Testo in linea: basa la risposta sul testo fattuale fornito nella richiesta. Un testo fattuale è un'affermazione fornita dall'utente che viene considerata fattuale per una determinata richiesta. Il modello non verifica l'autenticità del testo del fatto. Puoi fornire un massimo di 100 testi di fatti in ogni fonte di testo in linea. I testi dei fatti possono essere supportati utilizzando attributi meta, come titolo, autore e URI. Questi attributi meta vengono restituiti nella risposta quando vengono citati i chunk che supportano la risposta.
Data store di Vertex AI Search: basa la risposta sui documenti nei datastore di Vertex AI Search. Non puoi specificare un datastore di ricerca sul sito web come origine di riferimento.
In una determinata richiesta, puoi fornire sia un'origine di testo in linea sia un'origine del datastore di Vertex AI Search. Non puoi combinare la Ricerca Google con nessuna di queste origini. Pertanto, se vuoi basare le tue risposte sui risultati della Ricerca Google, devi inviare una richiesta distinta specificando la Ricerca Google come unica fonte di riferimento.
Puoi fornire un massimo di 10 origini di messa a terra in qualsiasi ordine. Ad esempio, supponi di fornire le sorgenti di messa a terra con il seguente conteggio, nell'ordine seguente per ottenere un totale di 10 sorgenti di messa a terra:
- Tre origini di testo in linea, ciascuna delle quali può contenere un massimo di 100 testi informativi
- Sei datastore di Vertex AI Search
- Un'origine di testo in linea contenente un massimo di 100 testi informativi
A ogni origine viene assegnato un indice nell'ordine in cui è specificato nella richiesta. Ad esempio, se hai specificato una combinazione di origini nella richiesta, l'indice di origine viene assegnato come illustrato nella tabella seguente:
Origine di grounding Indice Testo in linea 1 0 Testo in linea 2 1 Vertex AI Search datastore 1 2 Testo in linea 3 3 Datastore Vertex AI Search 2 4 Questo indice è riportato nella risposta ed è utile per risalire alla provenienza.
Specifiche di generazione: le specifiche per la configurazione del modello che consiste nelle seguenti informazioni:
ID modello: specifica il modello Vertex AI Gemini da utilizzare per la generazione di risposte. Per un elenco dei modelli che puoi utilizzare per generare risposte basate su dati, consulta Modelli supportati.
Parametri del modello: specifica i parametri che puoi impostare per il modello scelto. Questi parametri sono: lingua, temperatura, top-P e top-K. Per informazioni dettagliate su questi parametri, consulta Parametri del modello Gemini.
Codice lingua: la lingua della risposta generata è generalmente impostata in modo da corrispondere alla lingua del prompt. Se il prompt non è in una sola lingua (ad esempio, se è molto breve e può essere valido in più lingue), il campo del codice lingua determina la lingua della risposta.
Per un elenco dei codici lingua, consulta Lingue.
Latitudine e longitudine: specifica la latitudine e la longitudine dell'utente. Se la query contiene domande specifiche per località, ad esempio "Trova un bar nelle vicinanze", vengono utilizzati questi campi. Se non è possibile determinare la lingua della query e il codice lingua non è impostato, vengono utilizzate la latitudine e la longitudine per determinare la lingua della risposta.
Dati di output
La risposta generata dal modello è chiamata candidato e contiene i seguenti dati. Non tutti i campi potrebbero essere presenti nell'output.
Ruolo: il mittente della risposta basata su fatti. La risposta contiene sempre il testo della risposta basata su fatti. Pertanto, il ruolo in una risposta è sempre un modello.
Testo: una risposta basata su dati.
Punteggio di fondamento: un valore float nell'intervallo [0, 1] che indica l'attendibilità di una risposta nelle fonti indicate.
Metadati di messa a terra: metadati relativi all'origine di messa a terra. I metadati di ancoraggio contengono le seguenti informazioni:
Chunk di supporto: un elenco di chunk che supportano la risposta. A ogni frammento di supporto viene assegnato un indice utile per risalire alla provenienza. Ogni chunk di supporto contiene quanto segue:
- Testo del blocco: una parte di testo citata testualmente dalla fonte da cui viene estratta la risposta o una parte della risposta (chiamata testo della rivendicazione). Questo valore potrebbe non essere sempre presente nella risposta.
- Origine: un indice assegnato all'origine nella richiesta.
Metadati di origine: metadati relativi al chunk. A seconda dell'origine, i metadati dell'origine possono essere uno dei seguenti:
- Per un'origine in linea, i metadati possono essere i dettagli aggiuntivi specificati nella richiesta, come titolo, autore o URI.
- Per l'datastore di Vertex AI Search, i metadati possono essere l'ID del documento, il titolo del documento, l'URI (posizione Cloud Storage) o il numero di pagina.
- Per il grounding con la Ricerca Google, quando viene generato un risultato basato su dati, i metadati contengono un URI che reindirizza al publisher dei contenuti utilizzati per generare il risultato basato su dati. I metadati contengono anche il dominio dell'editore. Gli URI forniti rimangono accessibili per un massimo di 30 giorni dopo la generazione del risultato basato su dati.
Supporto per l'approfondimento: informazioni di approfondimento per una rivendicazione nella risposta. Il supporto di messa a terra contiene le seguenti informazioni:
- Testo della rivendicazione: la risposta o una parte della risposta supportata con il testo del chunk di supporto.
- Indice del chunk di supporto: un indice assegnato al chunk di supporto nell'ordine in cui il chunk viene visualizzato nell'elenco dei chunk di supporto.
- Query di ricerca web: le query di ricerca suggerite per i suggerimenti della Ricerca Google.
- Suggerimenti di ricerca: se ricevi i suggerimenti di ricerca di Google con una risposta, questa risposta è un "Risultato fondato" soggetto ai termini di servizio per il grounding con la Ricerca Google. Per ulteriori informazioni, consulta i Termini di servizio
.
Il campo
renderedContent
all'interno del camposearchEntryPoint
è il codice fornito per l'implementazione dei suggerimenti della Ricerca Google. Per usare i suggerimenti della Ricerca Google, consulta l'articolo Utilizzare i suggerimenti della Ricerca Google.
Generare una risposta basata su dati in un solo turno
Questa sezione descrive come generare risposte basate sulle seguenti fonti:
Basarla sul testo in linea e sul datastore di Vertex AI Search
L'esempio seguente mostra come inviare il testo del prompt specificando un testo in linea e un datastore di Vertex AI Search come origine del grounding.
Non puoi specificare un datastore di ricerca del sito web come origine di riferimento.
Questo esempio utilizza il metodo generateGroundedContent
.
REST
Invia il prompt nella seguente richiesta curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_1", "attributes": { "title": "TITLE_1", "uri": "URI_1", "author": "AUTHOR_1" } } ] } }, { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_2", "attributes": { "title": "TITLE_2", "uri": "URI_2" } }, { "factText": "FACT_TEXT_3", "attributes": { "title": "TITLE_3", "uri": "URI_3" } } ] } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search" } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud.PROMPT_TEXT
: il prompt dell'utente.SYSTEM_INSTRUCTION
: un campo facoltativo per fornire un preambolo o un contesto aggiuntivo.FACT_TEXT_N
: il testo in linea che fornisce le basi della risposta. Puoi fornire un massimo di 100 testi informativi.TITLE_N
: un campo facoltativo per impostare l'attributo meta title per il testo in linea.URI_N
: un campo facoltativo per impostare l'attributo meta URI per il testo in linea.AUTHOR_N
: un campo facoltativo per impostare l'attributo meta autore per il testo in linea.APP_ID_N
: l'ID dell'app Vertex AI Search.MODEL_ID
: un campo facoltativo per impostare l'ID del modello Gemini che vuoi utilizzare per generare la risposta basata su dati. Per un elenco degli ID modello disponibili, consulta Modelli supportati.TEMPERATURE
: un campo facoltativo per impostare la temperatura utilizzata per il campionamento. Google consiglia una temperatura di 0,0 °C. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_P
: un campo facoltativo per impostare il valore P superiore per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_K
: un campo facoltativo per impostare il valore top-K per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.LANGUAGE_CODE
: un campo facoltativo che può essere utilizzato per impostare la lingua della risposta generata e del testo del chunk restituito. Se non è possibile determinare la lingua dalla query, viene utilizzato questo campo. Il valore predefinito èen
. Per un elenco dei codici lingua, consulta Lingue.LATITUDE
: un campo facoltativo per impostare la latitudine. Inserisci il valore in gradi decimali, ad esempio-25.34
.LONGITUDE
: un campo facoltativo per impostare la longitudine. Inserisci il valore in gradi decimali, ad esempio131.04
.
Python
Esempio di generazione di risposte a una sola volta basata sul testo in linea e su Vertex AI Search
Nell'esempio seguente, la richiesta specifica le seguenti fonti di grounding: un fatto di testo in linea e un datastore di Vertex AI Search. Questo esempio utilizza il metodo generateGroundedContent
. Questo esempio utilizza anche un'istruzione di sistema per terminare la risposta con un'emoji smiley.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "How did google do in 2020? Where can I find Bigquery docs?" } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction", "attributes": { "title": "BigQuery Overview", "uri": "https://cloud.google.com/bigquery/docs/introduction" } } ] } }, { "searchSource": { "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" }, "user_context": { "languageCode: "en", "latLng": { "latitude": 37.422131, "longitude": -122.084801 } } }'
Generare una risposta basata su fatti con la Ricerca Google
Puoi basare le risposte generate sui dati web disponibili pubblicamente.
Recupero dinamico
Puoi utilizzare il recupero dinamico nella tua richiesta per scegliere quando disattivare il grounding con la Ricerca Google. Questa opzione è utile quando il prompt non richiede una risposta basata sulla Ricerca Google e i modelli supportati possono fornire una risposta in base alle loro conoscenze senza alcuna base. In questo modo puoi gestire la latenza, la qualità e il costo in modo più efficace.
Punteggio e soglia di previsione del recupero dinamico
Quando invii una richiesta per generare una risposta basata su dati, Vertex AI Agent Builder assegna un punteggio di previsione al prompt. Il punteggio di previsione è un valore con virgola mobile nell'intervallo [0,1]. Il suo valore dipende dal fatto che il prompt possa trarre vantaggio dalla fondazione della risposta con le informazioni più aggiornate della Ricerca Google. Pertanto, un prompt che richiede una risposta basata sui fatti più recenti sul web ha un punteggio di previsione più alto, mentre un prompt per il quale è sufficiente una risposta generata da un modello ha un punteggio di previsione più basso.
Ecco alcuni esempi di prompt e i relativi punteggi di previsione.
Prompt | Punteggio di previsione | Commento |
---|---|---|
"Scrivi una poesia sulle peonie" | 0,13 | Il modello può fare affidamento sulle sue conoscenze e la risposta non richiede grounding |
"Consigliami un giocattolo per un bambino di 2 anni" | 0,36 | Il modello può fare affidamento sulle sue conoscenze e la risposta non richiede grounding |
"Puoi darmi la ricetta di un guacamole di ispirazione asiatica?" | 0,55 | La Ricerca Google può dare una risposta basata su dati, ma il grounding non è strettamente necessario; le conoscenze del modello potrebbero essere sufficienti |
"Che cos'è Agent Builder? Come viene addebitato il grounding in Agent Builder?" | 0,72 | Richiede che la Ricerca Google generi una risposta ben fondata |
"Chi ha vinto l'ultimo Gran Premio di Formula 1?" | 0,97 | Richiede che la Ricerca Google generi una risposta ben fondata |
Nella richiesta di generazione di risposte basate su fatti, puoi specificare una configurazione di recupero dinamico con una soglia. La soglia è un valore a virgola mobile nell'intervallo [0,1] e il valore predefinito è 0,7. Se il valore della soglia è zero, la risposta si basa sempre sulla Ricerca Google. Per tutti gli altri valori di soglia, si applica quanto segue:
- Se il punteggio di previsione è maggiore o uguale alla soglia, la risposta si basa sulla Ricerca Google. Una soglia più bassa implica che più prompt hanno risposte generate utilizzando il Grounding con la Ricerca Google.
- Se il punteggio di previsione è inferiore alla soglia, il modello potrebbe comunque generare la risposta, ma non è basato sulla Ricerca Google.
Per trovare una soglia adatta alle esigenze della tua attività, puoi creare un insieme rappresentativo di query che prevedi di trovare. Poi, puoi ordinare le query in base al punteggio di previsione nella risposta e selezionare una soglia adatta al tuo caso d'uso.
Basarla sulla Ricerca Google
L'esempio seguente mostra come generare una risposta basata su dati da un prompt specificando la Ricerca Google come origine della base. Questo esempio utilizza il metodo
generateGroundedContent
.
REST
Invia il prompt nella seguente richiesta curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": DYNAMIC_RETRIEVAL_THRESHOLD } } } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud.PROMPT_TEXT
: il prompt dell'utente.SYSTEM_INSTRUCTION
: un campo facoltativo per fornire un preambolo o un contesto aggiuntivo.DYNAMIC_RETRIEVAL_THRESHOLD
: un campo facoltativo per impostare la soglia per richiamare la configurazione del recupero dinamico. È un valore in virgola mobile compreso nell'intervallo [0,1]. Se aggiungi il campodynamicRetrievalConfig
, ma non imposti il campopredictor
othreshold
, il valore della soglia predefinito è 0,7. Se non imposti il campodynamicRetrievalConfig
, la risposta è sempre basata su dati.MODEL_ID
: un campo facoltativo per impostare l'ID del modello Gemini che vuoi utilizzare per generare la risposta basata su dati. Per un elenco degli ID modello disponibili, consulta Modelli supportati.TEMPERATURE
: un campo facoltativo per impostare la temperatura utilizzata per il campionamento. Google consiglia una temperatura di 0,0 °C. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_P
: un campo facoltativo per impostare il valore P superiore per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_K
: un campo facoltativo per impostare il valore top-K per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.LANGUAGE_CODE
: un campo facoltativo che può essere utilizzato per impostare la lingua della risposta generata e del testo del chunk restituito. Se non è possibile determinare la lingua dalla query, viene utilizzato questo campo. Il valore predefinito èen
. Per un elenco dei codici lingua, consulta Lingue.LATITUDE
: un campo facoltativo per impostare la latitudine. Inserisci il valore in gradi decimali, ad esempio-25.34
.LONGITUDE
: un campo facoltativo per impostare la longitudine. Inserisci il valore in gradi decimali, ad esempio131.04
.
Python
Esempio di generazione di una risposta con un solo turno basata sulla Ricerca Google
Nell'esempio seguente, la richiesta specifica la Ricerca Google come fonte di riferimento. Questo esempio utilizza il metodo generateGroundedContent
. Questo esempio utilizza anche un'istruzione di sistema per terminare la risposta con un'emoji smiley.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [{ "role": "user", "parts": [{ "text": "What is vertex ai agent builder?" }] }], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": 0.6 } } } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } '
Generare una risposta fondata in più turni
Nella generazione di risposte con più turni, in ogni richiesta devi inviare tutto il testo scambiato tra l'utente e il modello in tutti i turni precedenti. In questo modo viene garantita la continuità e viene mantenuto il contesto per generare la risposta all'ultimo prompt.
Per ottenere una risposta fondata mediante la generazione di risposte con più turni:
REST
Gli esempi riportati di seguito mostrano come inviare il testo del prompt di follow-up su più turni. Questi esempi utilizzano il metodo generateGroundedContent
e basano le risposte sulla Ricerca Google.
Puoi utilizzare passaggi simili per generare risposte fondate utilizzando altre fonti di fondamento.
Invia il primo prompt nella seguente richiesta curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_1" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud.PROMPT_TEXT_TURN_1
: il testo del prompt dell'utente nel primo turno.SYSTEM_INSTRUCTION_TURN_1
: un campo facoltativo per fornire un preambolo o un contesto aggiuntivo. Per la generazione di risposte con più turni, devi fornire le istruzioni di sistema per ogni turno.MODEL_ID
: un campo facoltativo per impostare l'ID del modello Gemini che vuoi utilizzare per generare la risposta basata su dati. Per un elenco degli ID modello disponibili, consulta Modelli supportati.TEMPERATURE
: un campo facoltativo per impostare la temperatura utilizzata per il campionamento. Google consiglia una temperatura di 0,0 °C. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_P
: un campo facoltativo per impostare il valore P superiore per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_K
: un campo facoltativo per impostare il valore top-K per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.LANGUAGE_CODE
: un campo facoltativo che può essere utilizzato per impostare la lingua della risposta generata e del testo del chunk restituito. Se non è possibile determinare la lingua dalla query, viene utilizzato questo campo. Il valore predefinito èen
. Per un elenco dei codici lingua, consulta Lingue.LATITUDE
: un campo facoltativo per impostare la latitudine. Inserisci il valore in gradi decimali, ad esempio-25.34
.LONGITUDE
: un campo facoltativo per impostare la longitudine. Inserisci il valore in gradi decimali, ad esempio131.04
.
Invia la seconda richiesta come follow-up. Aggiungi il primo prompt dell'utente seguito dalla risposta corrispondente del modello per il contesto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] }, { "role": "model", "parts": [ { "text": "ANSWER_TEXT_TURN_1" } ] }, { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_2" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_2" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud.PROMPT_TEXT_TURN_1
: il testo del prompt dell'utente nel primo turno.ANSWER_TEXT_TURN_1
: il testo della risposta del modello nel primo turno.PROMPT_TEXT_TURN_2
: il testo del prompt dell'utente nel secondo turno.SYSTEM_INSTRUCTION_TURN_2
: un campo facoltativo per fornire un preambolo o un contesto aggiuntivo. Per la generazione di risposte con più turni, devi fornire le istruzioni di sistema per ogni turno.MODEL_ID
: un campo facoltativo per impostare l'ID del modello Gemini che vuoi utilizzare per generare la risposta basata su dati. Per un elenco degli ID modello disponibili, consulta Modelli supportati.TEMPERATURE
: un campo facoltativo per impostare la temperatura utilizzata per il campionamento. Google consiglia una temperatura di 0,0 °C. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_P
: un campo facoltativo per impostare il valore P superiore per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_K
: un campo facoltativo per impostare il valore top-K per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.LANGUAGE_CODE
: un campo facoltativo che può essere utilizzato per impostare la lingua della risposta generata e del testo del chunk restituito. Se non è possibile determinare la lingua dalla query, viene utilizzato questo campo. Il valore predefinito èen
. Per un elenco dei codici lingua, consulta Lingue.LATITUDE
: un campo facoltativo per impostare la latitudine. Inserisci il valore in gradi decimali, ad esempio-25.34
.LONGITUDE
: un campo facoltativo per impostare la longitudine. Inserisci il valore in gradi decimali, ad esempio131.04
.
Ripeti questa procedura per ricevere ulteriori risposte. In ogni turno, aggiungi tutti i prompt precedenti dell'utente seguiti dalle relative risposte del modello.
Esempio di generazione di risposte con più turni
Nel seguente esempio, la richiesta specifica tre testi di fatti in linea come fonte di fondamento per generare risposte in due turni. Questo
esempio utilizza il metodo generateGroundedContent
. Questo esempio utilizza anche un'istruzione di sistema per terminare la risposta nel primo turno con un'emoji smiley.
REST
Invia il primo prompt nella seguente richiesta curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Invia la seconda richiesta come follow-up. Aggiungi il primo prompt dell'utente seguito dalla risposta corrispondente del modello per il contesto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] }, { "role": "model", "parts": [ { "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion. 😊 \n" } ] }, { "role": "user", "parts": [ { "text": "Rephrase the answer in an abstracted list." } ] } ], "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Mostrare gradualmente le risposte fondate
Puoi scegliere di riprodurre in streaming le risposte del modello. Questa funzionalità è utile nei casi d'uso in cui la risposta è particolarmente lunga e l'invio dell'intera risposta contemporaneamente causa un ritardo significativo. Lo streaming della risposta suddivide la risposta in un array di diversi candidati che contengono parti sequenziali del testo della risposta.
Per ottenere una risposta basata su dati e in streaming:
REST
L'esempio seguente mostra come trasmettere in streaming una risposta basata su dati.
Questo esempio utilizza il metodo streamGenerateGroundedContent
e basa la risposta sulla Ricerca Google senza la configurazione del recupero dinamico. Puoi utilizzare passaggi simili per generare risposte fondate utilizzando altre fonti di fondamento.
Invia il prompt nella seguente richiesta curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } } ]'
Sostituisci quanto segue:
PROJECT_NUMBER
: il numero del tuo progetto Google Cloud.PROMPT_TEXT
: il prompt dell'utente.SYSTEM_INSTRUCTION
: un campo facoltativo per fornire un preambolo o un contesto aggiuntivo.MODEL_ID
: un campo facoltativo per impostare l'ID del modello Gemini che vuoi utilizzare per generare la risposta basata su dati. Per un elenco degli ID modello disponibili, consulta Modelli supportati.TEMPERATURE
: un campo facoltativo per impostare la temperatura utilizzata per il campionamento. Google consiglia una temperatura di 0,0 °C. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_P
: un campo facoltativo per impostare il valore P superiore per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.TOP_K
: un campo facoltativo per impostare il valore top-K per il modello. Per ulteriori informazioni, consulta i parametri del modello Gemini.LANGUAGE_CODE
: un campo facoltativo che può essere utilizzato per impostare la lingua della risposta generata e del testo del chunk restituito. Se non è possibile determinare la lingua dalla query, viene utilizzato questo campo. Il valore predefinito èen
. Per un elenco dei codici lingua, consulta Lingue.LATITUDE
: un campo facoltativo per impostare la latitudine. Inserisci il valore in gradi decimali, ad esempio-25.34
.LONGITUDE
: un campo facoltativo per impostare la longitudine. Inserisci il valore in gradi decimali, ad esempio131.04
.
Python
Esempio per lo streaming di risposte fondate
Nell'esempio seguente, la richiesta specifica la Ricerca Google come origine di riferimento per trasmettere una risposta senza la configurazione del recupero dinamico. La risposta in streaming viene distribuita su più candidati per la risposta. Questo esempio utilizza il metodo streamGenerateGroundedContent
.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "Summarize How to delete a data store in Vertex AI Agent Builder?" } ] } ], "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } ]'
Modelli supportati
I seguenti modelli supportano la messa a terra:
- Gemini 1.5 Pro solo con input di testo
- Gemini 1.5 Flash con solo input di testo
- Gemini 1.0 Pro solo con input di testo
Per scoprire di più su questi modelli Gemini, consulta Versioni e ciclo di vita dei modelli Gemini.
Quando chiami il metodo generateGroundedContent
, puoi utilizzare i seguenti ID modello:
ID modello | Aggiornato automaticamente |
---|---|
default |
Sì |
gemini-1.0-pro |
Sì |
gemini-1.0-pro-001 |
No |
gemini-1.0-pro-002 |
No |
gemini-1.5-flash |
Sì |
gemini-1.5-flash-001 |
No |
gemini-1.5-flash-002 |
No |
gemini-1.5-pro |
Sì |
gemini-1.5-pro-001 |
No |
gemini-1.5-pro-002 |
No |
Modelli ad alta fedeltà
Per i casi d'uso generici, come l'assistenza per i viaggi, il metodo di generazione di risposte basate su dati può generare buoni risultati unendo il contesto fornito, come il testo in linea o i dati aziendali, con l'addestramento del modello. Tuttavia, i settori specializzati, come i servizi finanziari, la sanità e le assicurazioni, spesso richiedono che i risultati generati provengano esclusivamente dal contesto fornito. Per supportare questi casi d'uso basati su dati, è disponibile il seguente modello ad alta fedeltà da utilizzare con il metodo di generazione di risposte basate su dati:
Nome modello | ID modello | Basata su | Finestra di contesto | Descrizione |
---|---|---|---|---|
Alta fedeltà Gemini 1.5 Flash | gemini-1.5-flash-002-high-fidelity |
Modello Gemini 1.5 Flash | 32.000 | Accetta prompt di testo come input e genera risposte di testo basate sul contesto. Si concentra su precisione, affidabilità e sicurezza. |
Passaggi successivi
Scopri come utilizzare il metodo di generazione con grounding con altre API RAG per generare risposte basate su dati non strutturati.