La funzione ML.GENERATE_TEXT
Questo documento descrive la funzione ML.GENERATE_TEXT
, che consente di eseguire attività generative di linguaggio naturale su testo archiviato nelle tabelle BigQuery. Ecco alcuni esempi di attività relative alle lingue:
- Classificazione
- Analisi del sentiment
- Estrazione di entità
- Risposta estrattiva alle domande
- Riassunto
- Riscrittura del testo in uno stile diverso
- Generazione di testo pubblicitario
- Ideazione del concetto
La funzione invia richieste a un modello remoto di BigQuery ML che rappresenta uno dei modelli di base (LLM) di Vertex AI text-bison*
e restituisce la risposta dell'LLM. Molti degli argomenti della funzione forniscono i parametri che modellano la risposta dell'LLM.
Il parametro prompt
fornisce il testo da analizzare.
La progettazione dei prompt può influire notevolmente sulle risposte restituite dall'LLM. Per ulteriori informazioni, consulta l'articolo Progettare prompt di testo.
Sintassi
ML.GENERATE_TEXT( MODEL `project_id.dataset.model`, { TABLE `project_id.dataset.table` | (query_statement) }, STRUCT( [number_of_output_tokens AS max_output_tokens] [, top_k_value AS top_k] [, top_p_value AS top_p] [, temperature AS temperature] [, flatten_json_output AS flatten_json_output]) )
Argomenti
ML.GENERATE_TEXT
accetta i seguenti argomenti:
project_id
: l'ID del tuo progetto.dataset
: il set di dati BigQuery contenente il modello.model
: il nome di un modello remoto che utilizza uno deitext-bison*
LLM Vertex AI. Per saperne di più su come creare questo tipo di modello remoto, consultaENDPOINT
.table
: il nome della tabella BigQuery che contiene i dati del prompt. Il testo nella colonnaprompt
viene inviato al modello. Se la tabella non ha una colonnaprompt
, utilizza un'istruzioneSELECT
per questo argomento per fornire un alias per una colonna esistente della tabella. Si verifica un errore se non è disponibile nessuna colonnaprompt
.query_statement
: la query GoogleSQL utilizzata per generare i dati dei prompt.max_output_tokens
: un valoreINT64
nell'intervallo[1,1024]
che imposta il numero massimo di token restituiti dal modello. Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe. Il valore predefinito è50
.Un token potrebbe essere più piccolo di una parola e avere circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.
temperature
: un valoreFLOAT64
nell'intervallo[0.0,1.0]
utilizzato per il campionamento durante la generazione della risposta, che si verifica quando vengono applicatitop_k
etop_p
. Controlla il grado di casualità nella selezione dei token. Valoritemperature
più bassi sono ideali per prompt che richiedono una risposta più deterministica e meno aperta o creativa, mentre valoritemperature
più alti possono portare a risultati più diversificati o creativi. Un valoretemperature
di0
è deterministico, il che significa che la risposta con la probabilità più alta viene sempre selezionata. Il valore predefinito è1.0
.top_k
: un valoreINT64
nell'intervallo[1,40]
che cambia il modo in cui il modello seleziona i token per l'output. Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali. Il valore predefinito è40
.Un valore
top_k
pari a1
indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello, mentre un valoretop_k
pari a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando il valoretemperature
.Per ogni passaggio di selezione dei token, vengono campionati i token
top_k
con le probabilità più elevate. Quindi i token vengono ulteriormente filtrati in base al valoretop_p
e il token finale viene selezionato utilizzando il campionamento con temperatura.top_p
: un valoreFLOAT64
nell'intervallo[0.0,1.0]
che cambia il modo in cui il modello seleziona i token per l'output. Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali. Il valore predefinito è1.0
.I token vengono selezionati dal più probabile (in base al valore
top_k
) al meno probabile finché la somma delle loro probabilità non raggiunge il valore ditop_p
. Ad esempio, se i token A, B e C hanno una probabilità di0.3
,0.2
e0.1
e il valore ditop_p
è0.5
, il modello seleziona A o B come token successivo utilizzando il valoretemperature
e non considera C.flatten_json_output
: un valoreBOOL
che determina se i contenuti JSON restituiti dalla funzione vengono analizzati in colonne separate. Il valore predefinito èFALSE
.
Output
ML.GENERATE_TEXT
restituisce la tabella di input e le seguenti colonne:
ml_generate_text_result
: la risposta JSON dalla chiamataprojects.locations.endpoints.predict
al modello. Il testo generato si trova nell'elementocontent
. Gli attributi di sicurezza sono nell'elementosafetyAttributes
. Questa colonna viene restituita quandoflatten_json_output
èFALSE
.ml_generate_text_llm_result
: un valoreSTRING
che contiene il testo generato restituito dalla chiamataprojects.locations.endpoints.predict
al modello. Questa colonna viene restituita quandoflatten_json_output
èTRUE
.ml_generate_text_rai_result
: un valoreSTRING
contenente gli attributi di sicurezza restituiti dalla chiamataprojects.locations.endpoints.predict
al modello. Questa colonna viene restituita quandoflatten_json_output
èTRUE
.ml_generate_text_status
: un valoreSTRING
che contiene lo stato della risposta dell'API per la riga corrispondente. Questo valore è vuoto se l'operazione è riuscita.
Località
ML.GENERATE_TEXT
deve essere eseguito nella stessa regione del modello remoto a cui fa riferimento la funzione. Puoi creare modelli remoti basati solo su text-bison*
modelli nelle seguenti località:
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
Quote
Consulta Quote e limiti delle funzioni con valore di tabella del servizio Cloud AI.
Esempi
Esempio 1
Questo esempio mostra una richiesta con le seguenti caratteristiche:
- Fornisce un singolo prompt.
- Restituisce una risposta di testo generata più lunga.
- Restituisce una risposta di testo generata meno probabile.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT 'What is the purpose of dreams?' AS prompt), STRUCT( 0.8 AS temperature, 1024 AS max_output_tokens, 0.95 AS top_p, 40 AS top_k));
Esempio 2
Questo esempio mostra una richiesta con le seguenti caratteristiche:
- Fornisce dati dei prompt da una colonna della tabella denominata
prompt
. - Restituisce una risposta di testo generata più breve.
- Restituisce una risposta di testo generata più probabile.
- Suddivide la risposta JSON in colonne separate.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model` TABLE `mydataset.prompt_table`, STRUCT( 0.2 AS temperature, 75 AS max_output_tokens, 0.3 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
Esempio 3
Questo esempio mostra una richiesta con le seguenti caratteristiche:
- Fornisce dati dei prompt da una colonna della tabella denominata
question
con aliasprompt
. - Restituisce una risposta di testo generata di durata moderata.
- Restituisce una risposta di testo generata moderatamente probabile.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT question AS prompt FROM `mydataset.prompt_table`), STRUCT( 0.4 AS temperature, 750 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k));
Esempio 4
Questo esempio mostra una richiesta con le seguenti caratteristiche:
- Concatena stringhe e una colonna di tabella per fornire i dati del prompt.
- Restituisce una risposta di testo generata più lunga.
- Restituisce una risposta di testo generata più probabile.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT( 'Classify the sentiment of the following text as positive or negative.Text:', input_column, 'Sentiment:') AS prompt FROM `mydataset.input_table` ), STRUCT( 0.1 AS temperature, 1000 AS max_output_tokens, 0.1 AS top_p, 10 AS top_k));
Passaggi successivi
- Prova un tutorial sulla generazione di testo utilizzando un set di dati pubblico.
- Ottieni istruzioni dettagliate su come generare testo utilizzando i tuoi dati.
- Scopri di più sulle funzioni IA utilizzabili per analizzare i dati di BigQuery.