Régler un modèle à l'aide de vos données
Ce document explique comment créer un modèle distant BigQuery ML faisant référence à un modèle Vertex AI, puis comment configurer le modèle pour effectuer le réglage supervisé. Le modèle Vertex AI doit être l'un des suivants:
gemini-1.5-pro-002
gemini-1.5-flash-002
gemini-1.0-pro-002
(bêta)
Après avoir créé le modèle distant, vous utilisez la fonction ML.EVALUATE
pour évaluer le modèle et vérifier que ses performances conviennent à votre cas d'utilisation. Vous pouvez ensuite utiliser le modèle conjointement avec la fonction ML.GENERATE_TEXT
pour analyser du texte dans une table BigQuery.
Pour en savoir plus, consultez la section Réglage supervisé de modèle pour l'API Gemini Vertex AI.
Autorisations requises
Pour créer une connexion, vous devez disposer du rôle IAM (Identity and Access Management) suivant :
roles/bigquery.connectionAdmin
Pour accorder des autorisations au compte de service de la connexion, vous devez disposer de l'autorisation suivante :
resourcemanager.projects.setIamPolicy
Pour créer le modèle à l'aide de BigQuery ML, vous devez disposer des autorisations IAM suivantes :
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Pour exécuter une inférence, vous devez disposer des autorisations suivantes :
bigquery.tables.getData
sur la tablebigquery.models.getData
sur le modèlebigquery.jobs.create
Avant de commencer
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection,Vertex AI, and Compute Engine APIs.
Créer une connexion
Créez une connexion de ressource cloud et obtenez le compte de service de la connexion.
Sélectionnez l'une des options suivantes :
Console
Accédez à la page BigQuery.
Pour créer une connexion, cliquez sur
Ajouter, puis sur Connexions aux sources de données externes.Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions distantes et BigLake (ressource Cloud).
Dans le champ ID de connexion, saisissez un nom pour votre connexion.
Cliquez sur Create connection (Créer une connexion).
Cliquez sur Accéder à la connexion.
Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.
bq
Dans un environnement de ligne de commande, créez une connexion :
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
Le paramètre
--project_id
remplace le projet par défaut.Remplacez les éléments suivants :
REGION
: votre région de connexionPROJECT_ID
: ID de votre projet Google CloudCONNECTION_ID
: ID de votre connexion
Lorsque vous créez une ressource de connexion, BigQuery crée un compte de service système unique et l'associe à la connexion.
Dépannage : Si vous obtenez l'erreur de connexion suivante, mettez à jour le Google Cloud SDK :
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Récupérez et copiez l'ID du compte de service pour l'utiliser lors d'une prochaine étape :
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
Le résultat ressemble à ce qui suit :
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Utilisez la ressource google_bigquery_connection
.
Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
L'exemple suivant crée une connexion de ressources Cloud nommée my_cloud_resource_connection
dans la région US
:
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.
Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.
Préparer le répertoire
Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).
-
Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension
.tf
, par exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.
Copiez l'exemple de code dans le fichier
main.tf
que vous venez de créer.Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
terraform init
Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option
-upgrade
:terraform init -upgrade
Appliquer les modifications
-
Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
terraform plan
Corrigez les modifications de la configuration si nécessaire.
-
Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
Attendez que Terraform affiche le message "Apply completed!" (Application terminée).
- Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.
Accorder l'accès au compte de service de la connexion
Autorisez votre compte de service à accéder à Vertex AI. L'impossibilité de fournir des autorisations génère une erreur. Sélectionnez l'une des options suivantes :
Console
Accédez à la page IAM et administration.
Cliquez sur
Accorder l'accès.Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.
Cliquez sur Select a role (Sélectionner un rôle).
Dans le champ Filtre, saisissez
Vertex AI Service Agent
, puis sélectionnez ce rôle.Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None
Remplacez les éléments suivants :
PROJECT_NUMBER
: votre numéro de projet.MEMBER
: ID du compte de service que vous avez copié précédemment
Le compte de service associé à votre connexion est une instance de l'agent de service de délégation de connexion BigQuery. Vous pouvez donc lui attribuer un rôle d'agent de service.
Créer un modèle avec réglage supervisé
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez la requête suivante pour créer un modèle distant :
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( ENDPOINT = 'ENDPOINT', MAX_ITERATIONS = MAX_ITERATIONS, LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER, DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD', DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION, DATA_SPLIT_COL = 'DATA_SPLIT_COL', EVALUATION_TASK = 'EVALUATION_TASK', PROMPT_COL = 'INPUT_PROMPT_COL', INPUT_LABEL_COLS = INPUT_LABEL_COLS) AS SELECT PROMPT_COLUMN, LABEL_COLUMN FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet dans lequel créer le modèleDATASET_ID
: ID de l'ensemble de données pour contenir le modèle. Cet ensemble de données doit se trouver dans une région de job de pipeline et d'importation de modèle compatible.MODEL_NAME
: nom du modèleREGION
: région utilisée par la connexion.CONNECTION_ID
: ID de votre connexion BigQuery. Cette connexion doit se trouver dans le même emplacement que l'ensemble de données que vous utilisez.Lorsque vous affichez les détails de la connexion dans la console Google Cloud, il s'agit de la valeur de la dernière section de l'ID de connexion complet affiché dans ID de connexion (par exemple,
projects/myproject/locations/connection_location/connections/myconnection
).ENDPOINT
: valeurSTRING
spécifiant le nom du modèle à utiliser.MAX_ITERATIONS
: valeurINT64
qui spécifie le nombre d'étapes à exécuter pour le réglage supervisé. La valeur deMAX_ITERATIONS
doit être comprise entre1
et∞
.Les modèles Gemini sont entraînés en utilisant des époques plutôt que des étapes. BigQuery ML convertit donc la valeur
MAX_ITERATIONS
en époques. La valeur par défaut pourMAX_ITERATIONS
est le nombre de lignes dans les données d'entrée, ce qui équivaut à une époque. Pour utiliser plusieurs époques, spécifiez un multiple du nombre de lignes de vos données d'entraînement. Par exemple, si vous disposez de 100 lignes de données d'entrée et que vous souhaitez utiliser deux époques, spécifiez200
pour la valeur de l'argument. Si vous fournissez une valeur qui n'est pas un multiple du nombre de lignes dans les données d'entrée, BigQuery ML arrondit à l'époque la plus proche. Par exemple, si vous disposez de 100 lignes de données d'entrée et que vous spécifiez101
pour la valeur deMAX_ITERATIONS
, l'entraînement est effectué avec deux époques.Pour en savoir plus sur les paramètres utilisés pour régler les modèles Gemini, consultez la section Créer un job de réglage.
DATA_SPLIT_METHOD
: valeurSTRING
spécifiant la méthode utilisée pour scinder les données d'entrée en ensembles d'entraînement et d'évaluation. Les options valides sont les suivantes :AUTO_SPLIT
: BigQuery ML divise automatiquement les données. La manière dont les données sont réparties varie en fonction du nombre de lignes de la table d'entrée. Il s'agit de la valeur par défaut.RANDOM
: les données sont randomisées avant d'être divisées en ensembles. Pour personnaliser la répartition des données, vous pouvez utiliser cette option avec l'optionDATA_SPLIT_EVAL_FRACTION
.CUSTOM
: les données sont réparties à l'aide de la colonne fournie dans l'optionDATA_SPLIT_COL
. La valeurDATA_SPLIT_COL
doit correspondre au nom d'une colonne de typeBOOL
. Les lignes dont la valeur est définie surTRUE
ouNULL
sont utilisées en tant que données d'évaluation, tandis que les lignes dont la valeur est définie surFALSE
sont utilisées en tant que données d'entraînement.SEQ
: répartit les données à l'aide de la colonne fournie dans l'optionDATA_SPLIT_COL
. La valeurDATA_SPLIT_COL
doit correspondre au nom d'une colonne de l'un des types suivants :NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
Les données sont triées de la plus petite à la plus grande en fonction de la colonne spécifiée.
Les n premières lignes sont utilisées en tant que données d'évaluation, où n est la valeur spécifiée pour
DATA_SPLIT_EVAL_FRACTION
. Les lignes restantes sont utilisées en tant que données d'entraînement.NO_SPLIT
: pas de répartition des données ; toutes les données d'entrée sont utilisées comme données d'entraînement.
Pour en savoir plus sur ces options de répartition des données, consultez la page
DATA_SPLIT_METHOD
.DATA_SPLIT_EVAL_FRACTION
: valeurFLOAT64
spécifiant la fraction des données à utiliser en tant que données d'évaluation lors du réglage supervisé. La valeur doit être comprise dans la plage[0, 1.0]
. La valeur par défaut est0.2
.Utilisez cette option lorsque vous spécifiez
RANDOM
ouSEQ
comme valeur pour l'optionDATA_SPLIT_METHOD
. Pour personnaliser la répartition des données, vous pouvez utiliser l'optionDATA_SPLIT_METHOD
avec l'optionDATA_SPLIT_EVAL_FRACTION
.DATA_SPLIT_COL
: valeurSTRING
spécifiant le nom de la colonne à utiliser pour trier les données d'entrée dans l'ensemble d'entraînement ou d'évaluation. Utilisez-la lorsque vous spécifiezCUSTOM
ouSEQ
comme valeur pour l'optionDATA_SPLIT_METHOD
.EVALUATION_TASK
: valeurSTRING
spécifiant le type de tâche que le modèle doit effectuer. Les options valides sont les suivantes :TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
La valeur par défaut est
UNSPECIFIED
.INPUT_PROMPT_COL
: valeurSTRING
contenant le nom de la colonne de requête de la table de données d'entraînement à utiliser lors du réglage supervisé. La valeur par défaut estprompt
.INPUT_LABEL_COLS
: valeurARRAY<<STRING>
contenant le nom de la colonne d'étiquette de la table de données d'entraînement à utiliser dans le réglage supervisé. Vous ne pouvez spécifier qu'un seul élément dans le tableau. La valeur par défaut de cet attribut est un tableau vide. Ainsi,label
devient la valeur par défaut de l'argumentLABEL_COLUMN
.PROMPT_COLUMN
: colonne de la table de données d'entraînement contenant la requête permettant d'évaluer le contenu de la colonneLABEL_COLUMN
. Cette colonne doit être de typeSTRING
ou castée versSTRING
. Si vous spécifiez une valeur pour l'optionINPUT_PROMPT_COL
, vous devez spécifier la même valeur pourPROMPT_COLUMN
. Sinon, cette valeur doit êtreprompt
. Si votre table ne comporte pas de colonneprompt
, utilisez un alias pour spécifier une colonne de table existante. Par exemple,AS SELECT hint AS prompt, label FROM mydataset.mytable
.LABEL_COLUMN
: colonne de la table de données d'entraînement contenant les exemples avec lesquels entraîner le modèle. Cette colonne doit être de typeSTRING
ou castée versSTRING
. Si vous spécifiez une valeur pour l'optionINPUT_LABEL_COLS
, vous devez spécifier la même valeur pourLABEL_COLUMN
. Sinon, cette valeur doit êtrelabel
. Si votre table ne comporte pas de colonnelabel
, utilisez un alias pour spécifier une colonne de table existante. Par exemple,AS SELECT prompt, feature AS label FROM mydataset.mytable
.TABLE_PROJECT_ID
: ID du projet contenant la table de données d'entraînementTABLE_DATASET
: nom de l'ensemble de données contenant la table de données d'entraînementTABLE_NAME
: nom de la table contenant les données à utiliser pour entraîner le modèle
Évaluer le modèle réglé
Dans la console Google Cloud, accédez à la page BigQuery.
Dans l'éditeur de requête, exécutez la requête suivante pour évaluer le modèle réglé:
SELECT * FROM ML.EVALUATE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`, STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p));
Remplacez les éléments suivants :
PROJECT_ID
: ID du projet contenant le modèleDATASET_ID
: ID de l'ensemble de données contenant le modèle.MODEL_NAME
: nom du modèleTABLE_PROJECT_ID
: ID du projet contenant la table de données d'évaluation.TABLE_DATASET
: nom de l'ensemble de données contenant la table de données d'évaluationTABLE_NAME
: nom de la table contenant les données d'évaluation.La table doit comporter une colonne dont le nom correspond au nom de la colonne de requête fournie lors de l'entraînement du modèle. Vous pouvez fournir cette valeur à l'aide de l'option
prompt_col
lors de l'entraînement du modèle. Siprompt_col
n'est pas spécifié, la colonneprompt
dans les données d'entraînement est utilisée. Une erreur est renvoyée s'il n'existe aucune colonne nomméeprompt
.La table doit comporter une colonne dont le nom correspond au nom de la colonne d'étiquette fournie lors de l'entraînement du modèle. Vous pouvez fournir cette valeur à l'aide de l'option
input_label_cols
lors de l'entraînement du modèle. Siinput_label_cols
n'est pas spécifié, la colonnelabel
dans les données d'entraînement est utilisée. Une erreur est renvoyée s'il n'existe aucune colonne nomméelabel
.TASK_TYPE
: valeurSTRING
spécifiant le type de tâche pour lequel vous souhaitez évaluer le modèle. Les options valides sont les suivantes :TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
TOKENS
: valeurINT64
qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage[1,1024]
. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est128
.TEMPERATURE
: valeurFLOAT64
comprise dans la plage[0.0,1.0]
qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est0
.Des valeurs inférieures pour
temperature
conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pourtemperature
peuvent entraîner des résultats plus diversifiés ou créative. Une valeur0
pourtemperature
est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.TOP_K
: valeurINT64
comprise dans la plage[1,40]
qui détermine le pool initial de jetons pris en compte par le modèle pour la sélection. 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
.TOP_P
: une valeurFLOAT64
comprise dans la plage[0.0,1.0]
permet de déterminer quels jetons du pool déterminés parTOP_K
sont sélectionnés. 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 est0.95
.
Générer du texte
Générez du texte à l'aide de la fonction ML.GENERATE_TEXT
:
Colonne de requête
Générer du texte à l'aide d'une colonne de table pour fournir la requête.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.DATASET_ID
: ID de l'ensemble de données contenant le modèle.MODEL_NAME
: nom du modèleTABLE_NAME
: nom de la table contenant la requête. Cette table doit comporter une colonne dont le nom correspond au nom de la colonne de caractéristiques dans le modèle affiné. Le nom de la colonne de caractéristiques dans le modèle peut être défini à l'aide de l'optionPROMPT_COL
lors de la création du modèle. Sinon, le nom de la colonne de caractéristiques dans le modèle estprompt
par défaut. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.TOKENS
: valeurINT64
qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage[1,8192]
. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est128
.TEMPERATURE
: valeurFLOAT64
comprise dans la plage[0.0,1.0]
qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est1.0
.Des valeurs inférieures pour
temperature
conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pourtemperature
peuvent entraîner des résultats plus diversifiés ou créative. Une valeur0
pourtemperature
est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.TOP_P
: une valeurFLOAT64
comprise dans la plage[0.0,1.0]
permet de déterminer la probabilité de sélection des jetons. Spécifiez une valeur inférieure pour obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires. La valeur par défaut est0.95
.FLATTEN_JSON
: valeurBOOL
qui détermine si le texte généré et les attributs de sécurité doivent être renvoyés dans des colonnes distinctes. La valeur par défaut estFALSE
.STOP_SEQUENCES
: valeurARRAY<STRING>
qui supprime les chaînes spécifiées si elles sont incluses dans les réponses du modèle. Les chaînes correspondent exactement, y compris la casse. La valeur par défaut est un tableau vide.GROUND_WITH_GOOGLE_SEARCH
: valeurBOOL
qui détermine si le modèle Vertex AI utilise l'ancrage avec la recherche Google lors de la génération de réponses. L'ancrage permet au modèle d'utiliser des informations supplémentaires provenant d'Internet lors de la génération d'une réponse, afin de rendre les réponses du modèle plus spécifiques et factuelles. Lorsqueflatten_json_output
et ce champ sont tous deux définis surTrue
, une colonneml_generate_text_grounding_result
supplémentaire est incluse dans les résultats, fournissant ainsi les sources utilisées par le modèle pour collecter des informations supplémentaires. La valeur par défaut estFALSE
.SAFETY_SETTINGS
: valeurARRAY<STRUCT<STRING AS category, STRING AS threshold>>
qui configure les seuils de sécurité du contenu pour filtrer les réponses. Le premier élément de la structure spécifie une catégorie de préjudice, et le second élément de la structure spécifie un seuil de blocage correspondant. Le modèle filtre les contenus qui ne respectent pas ces paramètres. Vous ne pouvez spécifier chaque catégorie qu'une seule fois. Par exemple, vous ne pouvez pas spécifier à la foisSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
etSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
. Si aucun paramètre de sécurité n'est défini pour une catégorie donnée, le paramètre de sécuritéBLOCK_MEDIUM_AND_ABOVE
est utilisé.Les catégories acceptées sont les suivantes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Les seuils acceptés sont les suivants :
BLOCK_NONE
(Limité)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(par défaut)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Pour en savoir plus, consultez la définition de la catégorie de sécurité et du seuil de blocage.
L'exemple suivant montre une requête avec ces caractéristiques :
- Elle utilise la colonne
prompt
de la tableprompts
pour la requête. - Elle renvoie une réponse courte et relativement probable.
- Elle renvoie le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.mymodel`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output));
Requête à partir d'une recherche
Générer du texte à l'aide d'une recherche pour fournir la requête.
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, (PROMPT_QUERY), STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.DATASET_ID
: ID de l'ensemble de données contenant le modèle.MODEL_NAME
: nom du modèlePROMPT_QUERY
: fournit les données de la requête.TOKENS
: valeurINT64
qui définit le nombre maximal de jetons pouvant être générés dans la réponse. Cette valeur doit être comprise dans la plage[1,8192]
. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. La valeur par défaut est128
.TEMPERATURE
: valeurFLOAT64
comprise dans la plage[0.0,1.0]
qui contrôle le degré d'aléatoire dans la sélection des jetons. La valeur par défaut est1.0
.Des valeurs inférieures pour
temperature
conviennent aux requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des valeurs plus élevées pourtemperature
peuvent entraîner des résultats plus diversifiés ou créative. Une valeur0
pourtemperature
est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée est toujours sélectionnée.TOP_P
: une valeurFLOAT64
comprise dans la plage[0.0,1.0]
permet de déterminer la probabilité de sélection des jetons. Spécifiez une valeur inférieure pour obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires. La valeur par défaut est0.95
.FLATTEN_JSON
: valeurBOOL
qui détermine si le texte généré et les attributs de sécurité doivent être renvoyés dans des colonnes distinctes. La valeur par défaut estFALSE
.STOP_SEQUENCES
: valeurARRAY<STRING>
qui supprime les chaînes spécifiées si elles sont incluses dans les réponses du modèle. Les chaînes correspondent exactement, y compris la casse. La valeur par défaut est un tableau vide.GROUND_WITH_GOOGLE_SEARCH
: valeurBOOL
qui détermine si le modèle Vertex AI utilise l'ancrage avec la recherche Google lors de la génération de réponses. L'ancrage permet au modèle d'utiliser des informations supplémentaires provenant d'Internet lors de la génération d'une réponse, afin de rendre les réponses du modèle plus spécifiques et factuelles. Lorsqueflatten_json_output
et ce champ sont tous deux définis surTrue
, une colonneml_generate_text_grounding_result
supplémentaire est incluse dans les résultats, fournissant ainsi les sources utilisées par le modèle pour collecter des informations supplémentaires. La valeur par défaut estFALSE
.SAFETY_SETTINGS
: valeurARRAY<STRUCT<STRING AS category, STRING AS threshold>>
qui configure les seuils de sécurité du contenu pour filtrer les réponses. Le premier élément de la structure spécifie une catégorie de préjudice, et le second élément de la structure spécifie un seuil de blocage correspondant. Le modèle filtre les contenus qui ne respectent pas ces paramètres. Vous ne pouvez spécifier chaque catégorie qu'une seule fois. Par exemple, vous ne pouvez pas spécifier à la foisSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
etSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
. Si aucun paramètre de sécurité n'est défini pour une catégorie donnée, le paramètre de sécuritéBLOCK_MEDIUM_AND_ABOVE
est utilisé.Les catégories acceptées sont les suivantes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Les seuils acceptés sont les suivants :
BLOCK_NONE
(Limité)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(par défaut)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Pour en savoir plus, consultez la définition de la catégorie de sécurité et du seuil de blocage.
Exemple 1
L'exemple suivant montre une requête avec ces caractéristiques :
- Elle demande le résumé du texte dans la colonne
body
de la tablearticles
. - Elle renvoie une réponse relativement longue et plus probable.
- Elle renvoie le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.mymodel`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p, TRUE AS flatten_json_output));
Exemple 2
L'exemple suivant montre une requête avec ces caractéristiques :
- Elle utilise une requête pour créer les données de requête en concaténant les chaînes qui fournissent des préfixes de requête avec des colonnes de table.
- Elle renvoie une réponse courte et relativement probable.
- Elle ne renvoie pas le texte généré et les attributs de sécurité dans des colonnes distinctes.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.mytuned_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));