Fonction ML.GENERATE_TEXT
Ce document décrit la fonction ML.GENERATE_TEXT
, qui vous permet d'effectuer des tâches de langage naturel génératives sur du texte stocké dans des tables BigQuery. Voici quelques exemples de tâches de langage :
- Classification
- Analyse des sentiments
- Extraction d'entités
- Systèmes de questions-réponses extractifs
- Synthèse
- Réécriture du texte dans un style différent
- Génération de contenu publicitaire
- Conceptualisation
La fonction envoie des requêtes à un modèle distant BigQuery ML qui représente l'un des modèles de base du langage naturel text-bison*
de Vertex AI (LLM), puis renvoie la réponse du LLM. Plusieurs arguments de la fonction fournissent les paramètres qui façonnent la réponse de LLM.
Le paramètre prompt
fournit le texte du modèle à analyser.
La conception des invites peut affecter fortement les réponses renvoyées par le LLM. Pour en savoir plus, consultez la section Concevoir des invites textuelles.
Syntaxe
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]) )
Arguments
ML.GENERATE_TEXT
utilise les arguments suivants :
project_id
: ID de votre projetdataset
: ensemble de données BigQuery contenant le modèle.model
: nom d'un modèle distant qui utilise l'un des LLMtext-bison*
Vertex AI. Pour en savoir plus sur la création de ce type de modèle distant, consultez la sectionENDPOINT
.table
: nom de la table BigQuery contenant les données d'invite. Le texte de la colonne nomméeprompt
est envoyé au modèle. Si votre table ne comporte pas de colonneprompt
, utilisez une instructionSELECT
pour cet argument afin de fournir un alias pour une colonne de table existante. Une erreur se produit si aucune colonneprompt
n'est disponible.query_statement
: requête GoogleSQL utilisée pour générer les données d'invite.max_output_tokens
: valeurINT64
comprise dans la plage[1,1024]
qui définit le nombre maximal de jetons générés par le modèle. Spécifiez une valeur inférieure pour les réponses plus courtes et une valeur plus élevée pour les réponses plus longues. La valeur par défaut est50
.Un jeton peut être plus petit qu'un mot et contient environ quatre caractères. 100 jetons correspondent à environ 60-80 mots.
temperature
: valeurFLOAT64
comprise dans la plage[0.0,1.0]
utilisée pour l'échantillonnage lors de la génération de la réponse, qui se produit lorsquetop_k
ettop_p
sont appliqués. Elle permet de contrôler le degré de hasard dans la sélection des jetons. Les valeurstemperature
inférieures sont idéales pour les invites qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurstemperature
plus élevées peuvent conduire à des résultats plus diversifiés ou créatifs. La valeurtemperature
de0
est déterministe, ce qui signifie que la réponse de probabilité la plus élevée est toujours sélectionnée. La valeur par défaut est1.0
.top_k
: valeurINT64
comprise dans la plage[1,40]
qui modifie la façon dont le modèle sélectionne les jetons pour la sortie. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est40
.Une valeur
top_k
de1
signifie que le prochain jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle, tandis qu'une valeurtop_k
de3
signifie que la valeur suivante est sélectionnée parmi les trois jetons les plus probables à l'aide de la valeurtemperature
.Pour chaque étape de sélection de jeton, les principaux jetons
top_k
ayant les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction de la valeurtop_p
avec le jeton final sélectionné à l'aide de l'échantillonnage de température.top_p
: valeurFLOAT64
comprise dans la plage[0.0,1.0]
qui modifie la façon dont le modèle sélectionne les jetons pour la sortie. Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut est1.0
.Les jetons sont sélectionnés de la probabilité la plus élevée (en fonction de la valeur
top_k
) à la probabilité la plus faible jusqu'à ce que la somme de leurs probabilités soit égale à la valeurtop_p
. Par exemple, si les jetons A, B et C ont une probabilité de0.3
,0.2
et0.1
, et que la valeurtop_p
est0.5
, le modèle sélectionne A ou B comme jeton suivant en utilisant la valeurtemperature
et ne prend pas en compte C.flatten_json_output
: valeurBOOL
qui détermine si le contenu JSON renvoyé par la fonction est analysé dans des colonnes distinctes. La valeur par défaut estFALSE
.
Sortie
ML.GENERATE_TEXT
renvoie la table d'entrée et les colonnes suivantes :
ml_generate_text_result
: réponse JSON de l'appelprojects.locations.endpoints.predict
au modèle. Le texte généré se trouve dans l'élémentcontent
. Les attributs de sécurité se trouvent dans l'élémentsafetyAttributes
. Cette colonne est renvoyée lorsqueflatten_json_output
est défini surFALSE
.ml_generate_text_llm_result
: valeurSTRING
contenant le texte généré renvoyé par l'appelprojects.locations.endpoints.predict
au modèle. Cette colonne est renvoyée lorsqueflatten_json_output
est défini surTRUE
.ml_generate_text_rai_result
: valeurSTRING
contenant les attributs de sécurité renvoyés par l'appelprojects.locations.endpoints.predict
au modèle. Cette colonne est renvoyée lorsqueflatten_json_output
est défini surTRUE
.ml_generate_text_status
: valeurSTRING
contenant l'état de réponse de l'API pour la ligne correspondante. Cette valeur est vide si l'opération a réussi.
Emplacement
ML.GENERATE_TEXT
doit s'exécuter dans la même région que le modèle distant auquel la fonction fait référence. Vous ne pouvez créer des modèles distants basés sur des modèles text-bison*
que dans les emplacements suivants:
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
Quotas
Consultez les quotas et limites des fonctions à valeur de table de service d'IA Cloud.
Examples
Exemple 1
Cet exemple montre une requête avec les caractéristiques suivantes :
- Fournit une seule invite.
- Renvoie une réponse textuelle générée plus longue.
- Renvoie une réponse textuelle moins probable.
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));
Exemple 2
Cet exemple montre une requête avec les caractéristiques suivantes :
- Fournit des données d'invite à partir d'une colonne de table nommée
prompt
. - Renvoie une réponse textuelle générée plus courte.
- Renvoie une réponse textuelle plus probable.
- Aplatit la réponse JSON dans des colonnes distinctes.
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));
Exemple 3
Cet exemple montre une requête avec les caractéristiques suivantes :
- Fournit des données d'invite à partir d'une colonne de table nommée
question
et utilisant l'aliasprompt
. - Renvoie une réponse textuelle de longueur moyenne.
- Renvoie une réponse textuelle relativement probable.
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));
Exemple 4
Cet exemple montre une requête avec les caractéristiques suivantes :
- Concatène les chaînes et une colonne de table pour fournir les données d'invite.
- Renvoie une réponse textuelle générée plus longue.
- Renvoie une réponse textuelle plus probable.
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));
Étapes suivantes
- Suivez un tutoriel sur la génération de texte à l'aide d'un ensemble de données public.
- Obtenez des instructions détaillées sur la façon de générer du texte à l'aide de vos propres données.
- Découvrez les fonctions IA que vous pouvez utiliser pour analyser les données BigQuery.