Générez du texte à l'aide de la fonction ML.GENERATE_TEXT

Ce document explique comment créer un modèle distant BigQuery ML représentant un modèle Vertex AI, puis comment utiliser ce modèle distant avec la fonction ML.GENERATE_TEXT pour générer du texte.

Les types de modèles à distance suivants sont acceptés :

Selon le modèle Vertex AI que vous choisissez, vous pouvez générer du texte à partir de données non structurées issues de tables d'objet ou de texte issu de tables standards.

Rôles requis

Pour créer un modèle à distance et générer du texte, vous avez besoin des rôles Identity and Access Management (IAM) suivants :

  • Créer et utiliser des ensembles de données, des tables et des modèles BigQuery : Éditeur de données BigQuery (roles/bigquery.dataEditor) sur votre projet.
  • Créer, déléguer et utiliser des connexions BigQuery : administrateur de connexion BigQuery (roles/bigquery.connectionsAdmin) sur votre projet.

    Si vous n'avez pas configuré de connexion par défaut, vous pouvez en créer une et la définir lors de l'exécution de l'instruction CREATE MODEL. Pour ce faire, vous devez disposer du rôle Administrateur BigQuery (roles/bigquery.admin) dans votre projet. Pour en savoir plus, consultez Configurer la connexion par défaut.

  • Accordez des autorisations au compte de service de la connexion : Administrateur IAM du projet (roles/resourcemanager.projectIamAdmin) sur le projet contenant le point de terminaison Vertex AI. Il s'agit du projet actuel pour les modèles distants que vous créez en spécifiant le nom du modèle comme point de terminaison. Il s'agit du projet identifié dans l'URL des modèles distants que vous créez en spécifiant une URL comme point de terminaison.

    Si vous utilisez le modèle distant pour analyser des données non structurées à partir d'une table d'objets et que le bucket Cloud Storage que vous utilisez dans la table d'objets se trouve dans un projet différent de votre point de terminaison Vertex AI, vous devez également disposer du rôle Administrateur de l'espace de stockage (roles/storage.admin) sur le bucket Cloud Storage utilisé par la table d'objets.

  • Créer des jobs BigQuery : rôle Utilisateur de job BigQuery (roles/bigquery.jobUser) sur votre projet.

Ces rôles prédéfinis contiennent les autorisations requises pour effectuer les tâches décrites dans ce document. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

  • Créez un ensemble de données : bigquery.datasets.create
  • Créer, déléguer et utiliser une connexion : bigquery.connections.*
  • Définissez les autorisations du compte de service : resourcemanager.projects.getIamPolicy et resourcemanager.projects.setIamPolicy.
  • Créez un modèle et exécutez l'inférence :
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Avant de commencer

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

Créer un ensemble de données

Créez un ensemble de données BigQuery pour contenir vos ressources :

Console

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à la page "BigQuery"

  2. Dans le volet Explorateur, cliquez sur le nom de votre projet.

  3. Cliquez sur Afficher les actions > Créer un ensemble de données.

  4. Sur la page Créer un ensemble de données, procédez comme suit :

    • Pour ID de l'ensemble de données, saisissez un nom pour l'ensemble de données.

    • Dans Type d'emplacement, sélectionnez un emplacement pour l'ensemble de données.

    • Cliquez sur Créer un ensemble de données.

bq

  1. Pour créer un ensemble de données, exécutez la commande bq mk en spécifiant l'option --location :

    bq --location=LOCATION mk -d DATASET_ID

    Remplacez les éléments suivants :

    • LOCATION : emplacement de l'ensemble de données.
    • DATASET_ID est l'ID de l'ensemble de données que vous créez.
  2. Vérifiez que l'ensemble de données a été créé :

    bq ls

Créer une connexion

Vous pouvez ignorer cette étape si vous avez configuré une connexion par défaut ou si vous disposez du rôle Administrateur BigQuery.

Créez une connexion de ressource cloud pour que le modèle distant puisse l'utiliser, et obtenez le compte de service de la connexion. Créez la connexion dans le même emplacement que l'ensemble de données que vous avez créé à l'étape précédente.

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, cliquez sur Ajouter des données :

    Élément d'interface utilisateur "Ajouter des données".

    La boîte de dialogue Ajouter des données s'ouvre.

  3. Dans le panneau Filtrer par, dans la section Type de source de données, sélectionnez Applications métier.

    Vous pouvez également saisir Vertex AI dans le champ Rechercher des sources de données.

  4. Dans la section Sources de données recommandées, cliquez sur Vertex AI.

  5. Cliquez sur la fiche solution Modèles Vertex AI : fédération BigQuery.

  6. Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions à distance et BigLake (Ressource cloud).

  7. Dans le champ ID de connexion, saisissez un nom pour votre connexion.

  8. Cliquez sur Créer une connexion.

  9. Cliquez sur Accéder à la connexion.

  10. Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.

bq

  1. 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 connexion
    • PROJECT_ID : ID de votre projet Google Cloud
    • CONNECTION_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...
    
  2. 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 :


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Pour appliquer votre configuration Terraform dans un projet Google Cloud , suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. 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).

  1. 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 exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. 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

  1. 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.

  2. 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).

  3. 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 aux comptes de service

Vous devez attribuer le rôle Utilisateur Vertex AI au compte de service de la connexion utilisée par le modèle distant. Si vous utilisez le modèle distant pour générer du texte à partir des données de la table d'objets, vous devez également attribuer le rôle Utilisateur Vertex AI au compte de service de la connexion utilisée par la table d'objets.

Attribuer un rôle au compte de service de la connexion au modèle distant

Attribuez le rôle d'utilisateur Vertex AI au compte de service de la connexion.

Si vous envisagez de spécifier le point de terminaison en tant qu'URL lors de la création du modèle distant (par exemple, endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash'), accordez ce rôle dans le projet que vous spécifiez dans l'URL.

Si vous envisagez de spécifier le point de terminaison à l'aide du nom du modèle lors de la création du modèle distant (par exemple endpoint = 'gemini-2.0-flash'), accordez ce rôle dans le projet dans lequel vous prévoyez de créer le modèle distant.

L'attribution du rôle dans un autre projet génère l'erreur bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.

Pour accorder le rôle, procédez comme suit :

Console

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Ajouter.

    La boîte de dialogue Ajouter des comptes principaux s'ouvre.

  3. Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.

  4. Dans le champ Sélectionner un rôle, sélectionnez Vertex AI, puis Utilisateur Vertex AI.

  5. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud projects add-iam-policy-binding.

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --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

Attribuer un rôle au compte de service de la connexion à la table d'objets

Si vous utilisez le modèle distant pour générer du texte à partir des données de la table d'objets, accordez le rôle Utilisateur Vertex AI au compte de service de la connexion à la table d'objets.

Pour trouver le compte de service associé à la connexion à la table d'objets, procédez comme suit :

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Dans le volet Explorateur, développez l'ensemble de données contenant la table d'objets.

  3. Sélectionnez la table d'objets.

  4. Dans le volet de l'éditeur, cliquez sur l'onglet Détails.

  5. Notez le nom de la connexion dans le champ ID de connexion.

  6. Dans le volet Explorateur, développez le dossier Connexions externes.

  7. Sélectionnez la connexion qui correspond à celle du champ ID de connexion du tableau d'objets.

  8. Copiez la valeur du champ ID du compte de service.

Pour accorder le rôle, procédez comme suit :

Console

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Ajouter.

    La boîte de dialogue Ajouter des comptes principaux s'ouvre.

  3. Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.

  4. Dans le champ Sélectionner un rôle, sélectionnez Vertex AI, puis Utilisateur Vertex AI.

  5. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud projects add-iam-policy-binding.

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --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

Activer un modèle partenaire

Cette étape n'est requise que si vous souhaitez utiliser les modèles d'IA Anthropic Claude, Llama ou Mistral.

  1. Dans la console Google Cloud , accédez à la page Model Garden de Vertex AI.

    Accéder à la page "Jardin de modèles"

  2. Recherchez le modèle Claude que vous souhaitez utiliser.

  3. Cliquez sur la fiche de modèle.

  4. Sur la page du modèle, cliquez sur Activer.

  5. Remplissez les informations d'activation demandées, puis cliquez sur Suivant.

  6. Dans la section Conditions d'utilisation, cochez la case.

  7. Cliquez sur Accepter pour accepter les conditions d'utilisation et activer le modèle.

Déployer un modèle ouvert

Si vous souhaitez utiliser un modèle ouvert compatible, vous devez d'abord le déployer sur Vertex AI. Pour en savoir plus, consultez Déployer des modèles ouverts.

Créer un modèle distant BigQuery ML

Créez un modèle distant :

Modèles ouverts

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. À l'aide de l'éditeur SQL, créez un modèle distant :

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID');

    Remplacez l'élément suivant :

    • PROJECT_ID : ID de votre projet.
    • DATASET_ID : ID de l'ensemble de données pour contenir le modèle. Cet ensemble de données doit se trouver dans le même emplacement que la connexion que vous utilisez.
    • MODEL_NAME : nom du modèle
    • REGION : région utilisée par la connexion.
    • CONNECTION_ID : ID de votre connexion BigQuery.

      Vous pouvez obtenir cette valeur en affichant les détails de la connexion dans la console Google Cloud et en copiant 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_REGION : région dans laquelle le modèle ouvert est déployé.
    • ENDPOINT_PROJECT_ID : projet dans lequel le modèle ouvert est déployé.
    • ENDPOINT_ID : ID du point de terminaison HTTPS utilisé par le modèle ouvert. Pour obtenir l'ID du point de terminaison, recherchez le modèle ouvert sur la page Prédiction en ligne et copiez la valeur dans le champ ID.

Tous les autres modèles

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

  2. À l'aide de l'éditeur SQL, créez 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');

    Remplacez l'élément suivant :

    • PROJECT_ID : ID de votre projet.
    • DATASET_ID : ID de l'ensemble de données pour contenir le modèle. Cet ensemble de données doit se trouver dans le même emplacement que la connexion que vous utilisez.
    • MODEL_NAME : nom du modèle
    • REGION : région utilisée par la connexion.
    • CONNECTION_ID : ID de votre connexion BigQuery.

      Vous pouvez obtenir cette valeur en affichant les détails de la connexion dans la console Google Cloud et en copiant 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 : point de terminaison du modèle Vertex AI à utiliser.

      Pour les modèles Vertex AI pré-entraînés, les modèles Claude et les modèles Mistral AI, spécifiez le nom du modèle. Pour certains de ces modèles, vous pouvez spécifier une version particulière du modèle dans le nom. Pour les modèles Gemini compatibles, vous pouvez spécifier le point de terminaison mondial afin d'améliorer la disponibilité.

      Pour les modèles Llama, spécifiez un point de terminaison de l'API OpenAI au format openapi/<publisher_name>/<model_name>. Par exemple, openapi/meta/llama-3.1-405b-instruct-maas.

      Pour en savoir plus sur les noms et les versions de modèle compatibles, consultez ENDPOINT.

      Le modèle Vertex AI que vous spécifiez doit être disponible dans l'emplacement où vous créez le modèle distant. Pour en savoir plus, consultez Emplacements.

Générer du texte à partir de données de tables standards

Générez du texte à l'aide de la fonction ML.GENERATE_TEXT avec des données d'invite provenant d'une table standard :

Gemini

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_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,
  GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search,
  SAFETY_SETTINGS AS safety_settings,
  REQUEST_TYPE AS request_type)
);

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit avoir une colonne nommée prompt. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • PROMPT_QUERY : requête qui fournit les données de la requête. Cette requête doit générer une colonne nommée prompt.
  • TOKENS : valeur INT64 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 est 128.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré de randomisation dans la sélection des jetons. La valeur par défaut est 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 pour temperature peuvent entraîner des résultats plus diversifiés ou créatifs. Une valeur 0 pour temperature 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 valeur FLOAT64 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 est 0.95.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.
  • STOP_SEQUENCES : valeur ARRAY<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 : valeur BOOL qui détermine si le modèle Vertex AI utilise l'[ancrage avec la recherche Google](/vertex-ai/generative-ai/docs/grounding/overview#ground-public) lors de la génération de réponses. L'ancrage permet au modèle d'utiliser des informations supplémentaires provenant d'Internet lorsqu'il génère une réponse, afin de rendre les réponses plus spécifiques et factuelles. Lorsque flatten_json_output et ce champ sont tous deux définis sur True, une colonne ml_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 est FALSE.
  • SAFETY_SETTINGS : valeur ARRAY<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 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 fois STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) et STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). S'il n'existe aucun paramètre de sécurité pour une catégorie donnée, le paramètre de sécurité BLOCK_MEDIUM_AND_ABOVE est utilisé. Voici les catégories acceptées :
    • 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 catégorie de sécurité et de seuil de blocage.
  • REQUEST_TYPE : valeur STRING spécifiant le type de requête d'inférence à envoyer au modèle Gemini. Le type de requête détermine le quota utilisé par la requête. Les valeurs admises sont les suivantes :
    • DEDICATED : la fonction ML.GENERATE_TEXT n'utilise que le quota de débit provisionné. La fonction ML.GENERATE_TEXT renvoie l'erreur Provisioned throughput is not purchased or is not active si le quota de débit provisionné n'est pas disponible.
    • SHARED : la fonction ML.GENERATE_TEXT n'utilise que le quota partagé dynamique (QPD), même si vous avez acheté un quota de débit provisionné.
    • UNSPECIFIED : la fonction ML.GENERATE_TEXT utilise le quota comme suit :
      • Si vous n'avez pas acheté de quota de débit provisionné, la fonction ML.GENERATE_TEXT utilise le quota de DSQ.
      • Si vous avez acheté un quota de débit provisionné, la fonction ML.GENERATE_TEXT l'utilise en premier. Si les requêtes dépassent le quota de débit provisionné, le trafic excédentaire utilise le quota DSQ.
    • La valeur par défaut est UNSPECIFIED.

      Pour en savoir plus, consultez Utiliser le débit provisionné Vertex AI.

    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 table articles.
    • Analyse la réponse JSON du modèle en colonnes distinctes.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.text_model`,
        (
          SELECT CONCAT('Summarize this text', body) AS prompt
          FROM mydataset.articles
        ),
        STRUCT(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.
    • N'analyse pas la réponse JSON du modèle dans des colonnes distinctes.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.text_model`,
        (
          SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
          FROM mydataset.input_table
        ),
        STRUCT(
          100 AS max_output_tokens,
          FALSE AS flatten_json_output));

    Exemple 3

    L'exemple suivant montre une requête avec ces caractéristiques :

    • Elle utilise la colonne prompt de la table prompts pour la requête.
    • Analyse la réponse JSON du modèle en colonnes distinctes.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.text_model`,
        TABLE mydataset.prompts,
        STRUCT(TRUE AS flatten_json_output));

    Exemple 4

    L'exemple suivant montre une requête avec ces caractéristiques :

    • Elle utilise la colonne prompt de la table prompts pour la requête.
    • Elle renvoie une réponse courte.
    • Aplatit la réponse JSON en colonnes distinctes.
    • Récupère et renvoie des données Web publiques pour ancrer la réponse.
    • Filtre les réponses non sécurisées à l'aide de deux paramètres de sécurité.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.text_model`,
        TABLE mydataset.prompts,
        STRUCT(
          100 AS max_output_tokens, 0.5 AS top_p,
          TRUE AS flatten_json_output,
          TRUE AS ground_with_google_search,
          [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category,
            'BLOCK_LOW_AND_ABOVE' AS threshold),
          STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category,
            'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));

    Exemple 5

    L'exemple suivant montre une requête avec ces caractéristiques :

    • Elle utilise la colonne prompt de la table prompts pour la requête.
    • Renvoie une réponse plus longue.
    • Aplatit la réponse JSON en colonnes distinctes.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.flash_2_model`,
        TABLE mydataset.prompts,
        STRUCT(
          0.4 AS temperature, 8192 AS max_output_tokens,
          TRUE AS flatten_json_output));

    Exemple 6

    L'exemple suivant montre une requête avec ces caractéristiques :

    • Elle demande le résumé du texte dans la colonne body de la table articles.
    • Aplatit la réponse JSON en colonnes distinctes.
    • Récupère et renvoie des données Web publiques pour ancrer la réponse.
    • Filtre les réponses non sécurisées à l'aide de deux paramètres de sécurité.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.text_model`,
        (
          SELECT CONCAT('Summarize this text', body) AS prompt
          FROM mydataset.articles
        ),
        STRUCT(
          .1 AS TEMPERATURE,
          TRUE AS flatten_json_output, TRUE AS ground_with_google_search,
          [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category,
            'BLOCK_LOW_AND_ABOVE' AS threshold),
          STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category,
            'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));

Claude

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k,
  TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output)
);

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit avoir une colonne nommée prompt. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • PROMPT_QUERY : requête qui fournit les données de la requête. Cette requête doit générer une colonne nommée prompt.
  • TOKENS : valeur INT64 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,4096]. 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 est 128.
  • TOP_K : valeur INT64 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 obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • TOP_P : une valeur FLOAT64 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. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.

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 table articles.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(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.
  • N'analyse pas la réponse JSON du modèle dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens,
      FALSE AS flatten_json_output));

Exemple 3

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise la colonne prompt de la table prompts pour la requête.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts,
    STRUCT(TRUE AS flatten_json_output));

Llama

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_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 l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit avoir une colonne nommée prompt. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • PROMPT_QUERY : requête qui fournit les données de la requête. Cette requête doit générer une colonne nommée prompt.
  • TOKENS : valeur INT64 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,4096]. 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 est 128.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré de randomisation dans la sélection des jetons. La valeur par défaut est 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 pour temperature peuvent entraîner des résultats plus diversifiés ou créatifs. Une valeur 0 pour temperature 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 valeur FLOAT64 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 est 0.95.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.
  • STOP_SEQUENCES : valeur ARRAY<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.

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 table articles.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(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.
  • N'analyse pas la réponse JSON du modèle dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens,
      FALSE AS flatten_json_output));

Exemple 3

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise la colonne prompt de la table prompts pour la requête.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts,
    STRUCT(TRUE AS flatten_json_output));

Mistral AI

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_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 l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit avoir une colonne nommée prompt. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • PROMPT_QUERY : requête qui fournit les données de la requête. Cette requête doit générer une colonne nommée prompt.
  • TOKENS : valeur INT64 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,4096]. 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 est 128.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré de randomisation dans la sélection des jetons. La valeur par défaut est 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 pour temperature peuvent entraîner des résultats plus diversifiés ou créatifs. Une valeur 0 pour temperature 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 valeur FLOAT64 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 est 0.95.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.
  • STOP_SEQUENCES : valeur ARRAY<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.

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 table articles.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(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.
  • N'analyse pas la réponse JSON du modèle dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens,
      FALSE AS flatten_json_output));

Exemple 3

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise la colonne prompt de la table prompts pour la requête.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts,
    STRUCT(TRUE AS flatten_json_output));

Modèles ouverts

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)},
  STRUCT(TOKENS AS max_output_tokens,
   TEMPERATURE AS temperature, TOP_K AS top_k,
  TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output)
);

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • TABLE_NAME : nom de la table contenant la requête. Cette table doit avoir une colonne nommée prompt. Vous pouvez également utiliser un alias pour utiliser une colonne portant un nom différent.
  • PROMPT_QUERY : requête qui fournit les données de la requête. Cette requête doit générer une colonne nommée prompt.
  • TOKENS : valeur INT64 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,4096]. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré de randomisation dans la sélection des jetons. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.

    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 pour temperature peuvent entraîner des résultats plus diversifiés ou créatifs. Une valeur 0 pour temperature 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 : valeur INT64 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 obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • TOP_P : une valeur FLOAT64 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. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.

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 table articles.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(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.
  • N'analyse pas la réponse JSON du modèle dans des colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      100 AS max_output_tokens,
      FALSE AS flatten_json_output));

Exemple 3

L'exemple suivant montre une requête avec ces caractéristiques :

  • Elle utilise la colonne prompt de la table prompts pour la requête.
  • Analyse la réponse JSON du modèle en colonnes distinctes.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.text_model`,
    TABLE mydataset.prompts,
    STRUCT(TRUE AS flatten_json_output));

Générer du texte à partir des données d'une table d'objets

Générez du texte à l'aide de la fonction ML.GENERATE_TEXT avec un modèle Gemini pour analyser les données non structurées d'une table d'objets. Vous fournissez les données d'invite dans le paramètre prompt.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
  STRUCT(PROMPT AS prompt, TOKENS AS max_output_tokens,
  TEMPERATURE AS temperature, TOP_P AS top_p,
  FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences,
  SAFETY_SETTINGS AS safety_settings)
);

Remplacez l'élément suivant :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle Il doit s'agir d'un modèle Gemini.
  • TABLE_NAME : nom de la table d'objets contenant le contenu à analyser. Pour en savoir plus sur les types de contenu que vous pouvez analyser, consultez Entrée.

    Le bucket Cloud Storage utilisé par la table d'objets doit se trouver dans le même projet que celui où vous avez créé le modèle et où vous appelez la fonction ML.GENERATE_TEXT. Si vous souhaitez appeler la fonction ML.GENERATE_TEXT dans un projet différent de celui qui contient le bucket Cloud Storage utilisé par la table d'objets, vous devez attribuer le rôle d'Administrateur de l'espace de stockage au niveau du bucket au compte de service service-A@gcp-sa-aiplatform.iam.gserviceaccount.com.

  • PROMPT : requête à utiliser pour analyser le contenu.
  • TOKENS : valeur INT64 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,4096]. Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses plus longues. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • TEMPERATURE : valeur FLOAT64 comprise dans la plage [0.0,1.0] qui contrôle le degré de randomisation dans la sélection des jetons. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.

    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 pour temperature peuvent entraîner des résultats plus diversifiés ou créatifs. Une valeur 0 pour temperature 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 : valeur INT64 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 obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • TOP_P : une valeur FLOAT64 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. Si vous ne spécifiez pas de valeur, le modèle détermine une valeur appropriée.
  • FLATTEN_JSON : valeur BOOL 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 est FALSE.

Exemples

Cet exemple traduit et transcrit le contenu audio d'une table d'objets nommée feedback :

SELECT * FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.audio_model`,
    TABLE `mydataset.feedback`,
      STRUCT('What is the content of this audio clip, translated into Spanish?' AS PROMPT,
      TRUE AS FLATTEN_JSON_OUTPUT));

Cet exemple classe le contenu PDF d'une table d'objets nommée invoices :

SELECT * FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.classify_model`,
    TABLE `mydataset.invoices`,
      STRUCT('Classify this document based on the invoice total, using the following categories: 0 to 100, 101 to 200, greater than 200' AS PROMPT,
      TRUE AS FLATTEN_JSON_OUTPUT));