ML.GENERATE_TEXT-Funktion
In diesem Dokument wird die Funktion ML.GENERATE_TEXT
beschrieben, mit der Sie für Text, der in BigQuery-Tabellen gespeichert ist, generative Natural Language-Aufgaben ausführen können. Zu Beispielen für Sprachaufgaben gehören:
- Klassifizierung
- Sentimentanalyse
- Entitätsextraktion
- Extraktives Question Answering
- Zusammenfassung
- Text in einem anderen Stil umschreiben
- Erstellung von Anzeigentexten
- Entwicklung von Konzeptideen
Die Funktion sendet Anfragen an ein BigQuery ML-Remote-Modell, das eines der text-bison*
-Fundament-Modelle von Vertex AI darstellt. (LLMs) und dann die Antwort des LLM zurück. Einige Argumente der Funktion stellen die Parameter bereit, die die Antwort des LLM bestimmen.
Der Parameter prompt
stellt den Text bereit, den das Modell analysieren soll.
Der Prompt-Entwurf kann sich stark auf die vom LLM zurückgegebenen Antworten auswirken. Weitere Informationen finden Sie unter Chat-Prompts erstellen.
Syntax
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]) )
Argumente
ML.GENERATE_TEXT
verwendet die folgenden Argumente:
project_id
: Ihre Projekt-ID.dataset
: Das BigQuery-Dataset, das das Modell enthält.model
: Der Name eines Remote-Modells, das eines dertext-bison*
Vertex AI LLMs verwendet. Weitere Informationen zum Erstellen dieses Remote-Modelltyps finden Sie unterENDPOINT
.table
: Der Name der BigQuery-Tabelle, die die Eingabedaten enthält. Der Text in der Spalte mit dem Namenprompt
wird an das Modell gesendet. Wenn Ihre Tabelle keineprompt
-Spalte enthält, verwenden Sie eineSELECT
-Anweisung für dieses Argument, um einen Alias für eine vorhandene Tabellenspalte anzugeben. Wenn keine Spalteprompt
verfügbar ist, tritt ein Fehler auf.query_statement
: Die GoogleSQL-Abfrage, die zum Generieren der Eingabeaufforderungsdaten verwendet wird.max_output_tokens
: Ein Wert fürINT64
im Bereich[1,1024]
, der die maximale Anzahl von Tokens festlegt, die das Modell ausgibt. Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an. Der Standardwert ist50
.Ein Token kann kleiner als ein Wort sein und umfasst etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.
temperature
: einFLOAT64
-Wert im Bereich[0.0,1.0]
, der während der Antwortgenerierung für die Stichprobenerfassung verwendet wird. Dieser Wert tritt auf, wenntop_k
undtop_p
angewendet werden. Er bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Werte vontemperature
eignen sich für Prompts, die deterministischere und weniger offene oder kreative Reaktionen erfordern, während höhere Werte vontemperature
zu vielfältigeren oder kreativen Ergebnissen führen können. Eintemperature
-Wert von0
ist deterministisch, d. h. die Antwort mit der höchsten Wahrscheinlichkeit wird immer ausgewählt. Der Standardwert ist1.0
.top_k
: einINT64
-Wert im Bereich[1,40]
, der ändert, wie das Modell Tokens für die Ausgabe auswählt. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist40
.Ein Wert
top_k
von1
bedeutet, dass das nächste ausgewählte Token das wahrscheinlichste unter allen Tokens im Modell-Vokabular ist, während ein Werttop_k
von3
bedeutet, dass das nächste Token mithilfe des Wertstemperature
aus den drei wahrscheinlichsten Tokens ausgewählt wird.Für jeden Tokenauswahlschritt werden die
top_k
-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Anschließend werden Tokens anhand des Wertstop_p
weiter gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.top_p
: einFLOAT64
-Wert im Bereich[0.0,1.0]
, der ändert, wie das Modell Tokens für die Ausgabe auswählt. Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an. Der Standardwert ist1.0
.Tokens werden von den wahrscheinlichsten (basierend auf dem Wert
top_k
) bis zu den unwahrscheinlichsten Werten ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Werttop_p
entspricht. Beispiel: Wenn die Tokens A, B und C eine Wahrscheinlichkeit von0.3
,0.2
und0.1
haben und der Werttop_p
0.5
ist, wählt das Modell entweder A oder B als nächstes Token unter Verwendung des Wertstemperature
aus und berücksichtigt C nicht.flatten_json_output
ist ein Wert fürBOOL
, der bestimmt, ob der von der Funktion zurückgegebene Inhalt in separate Spalten geparst wird. Die Standardeinstellung istFALSE
.
Ausgabe
ML.GENERATE_TEXT
gibt die Eingabetabelle sowie die folgenden Spalten zurück:
ml_generate_text_result
: die JSON-Antwort aus demprojects.locations.endpoints.predict
-Aufruf an das Modell. Der generierte Text befindet sich im Elementcontent
. Die Sicherheitsattribute befinden sich im ElementsafetyAttributes
. Diese Spalte wird zurückgegeben, wennflatten_json_output
den WertFALSE
hat.ml_generate_text_llm_result
: ein WertSTRING
, der den generierten Text enthält, der vom Aufrufprojects.locations.endpoints.predict
an das Modell zurückgegeben wurde. Diese Spalte wird zurückgegeben, wennflatten_json_output
den WertTRUE
hat.ml_generate_text_rai_result
: einSTRING
-Wert, der die Sicherheitsattribute enthält, die vom Aufrufprojects.locations.endpoints.predict
an das Modell zurückgegeben werden. Diese Spalte wird zurückgegeben, wennflatten_json_output
den WertTRUE
hat.ml_generate_text_status
: einSTRING
-Wert, der den API-Antwortstatus für die entsprechende Zeile enthält. Dieser Wert ist leer, wenn der Vorgang erfolgreich war.
Standorte
ML.GENERATE_TEXT
muss in derselben Region ausgeführt werden wie das Remote-Modell, auf das die Funktion verweist. Remote-Modelle können nur anhand von text-bison*
-Modellen an folgenden Standorten erstellt werden:
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
Kontingente
Weitere Informationen finden Sie unter Kontingente und Limits für Cloud AI-Diensttabellenwertfunktionen.
Beispiele
Beispiel 1
Dieses Beispiel zeigt eine Anfrage mit den folgenden Merkmalen:
- Stellt einen einzelnen Prompt bereit.
- Gibt eine längere generierte Textantwort zurück.
- Gibt eine weniger wahrscheinliche generierte Textantwort zurück.
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));
Beispiel 2
Dieses Beispiel zeigt eine Anfrage mit den folgenden Merkmalen:
- Stellt Prompt-Daten aus einer Tabellenspalte mit dem Namen
prompt
bereit. - Gibt eine kürzere generierte Textantwort zurück.
- Gibt eine wahrscheinlichere generierte Textantwort zurück.
- Vereinfacht die JSON-Antwort in separate Spalten.
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));
Beispiel 3:
Dieses Beispiel zeigt eine Anfrage mit den folgenden Merkmalen:
- Stellt Prompt-Daten aus einer Tabellenspalte mit dem Namen
question
und dem Aliasprompt
bereit. - Gibt eine moderat lange generierte Textantwort zurück.
- Gibt eine moderat wahrscheinlich generierte Textantwort zurück.
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));
Beispiel 4
Dieses Beispiel zeigt eine Anfrage mit den folgenden Merkmalen:
- Verkettet Strings und eine Tabellenspalte, um die Prompt-Daten bereitzustellen.
- Gibt eine längere generierte Textantwort zurück.
- Gibt eine wahrscheinlichere generierte Textantwort zurück.
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));
Nächste Schritte
- Anleitung zum Generieren von Text mit einem öffentlichen Dataset
- Schritt-für-Schritt-Anleitung zum Generieren von Text mit eigenen Daten
- Weitere Informationen zu KI-Funktionen, die Sie zum Analysieren von BigQuery-Daten verwenden können