Kontingentfehler durch iteratives Aufrufen von ML.GENERATE_TEXT verarbeiten

Mit der öffentlichen gespeicherten Prozedur bqutil.procedure.bqml_generate_text in BigQuery können Sie Batchaufrufe der Funktion ML.GENERATE_TEXT durchlaufen, um große Datasets zu verarbeiten, ohne die Kontingente und Limits des Endpunkts zu überschreiten. Da BigQuery-Abfragejobs auch dann abgeschlossen werden, wenn die Funktion für einzelne Zeilen fehlschlägt, können bei einem hohen Anfragevolumen RESOURCE EXHAUSTED wiederholbare Fehler in der Ausgabetabelle auftreten. In dieser Anleitung erstellen Sie ein Remote-Modell und führen die gespeicherte Prozedur aus, um fehlgeschlagene Zeilen iterativ zu wiederholen, bis alle Datensätze in einem öffentlichen Nachrichten-Dataset verarbeitet wurden.

Den Quellcode für die gespeicherte Prozedur auf GitHub finden Sie unter bqml_generate_text.sqlx. Weitere Informationen zu den Parametern und zur Verwendung der gespeicherten Prozedur finden Sie in der README-Datei.

Ziele

  • BigQuery-Dataset erstellen
  • BigQuery ML-Remote-Modell über ein gemini-3.5-flash-lite-Modell erstellen
  • Führen Sie die gespeicherte Prozedur bqutil.procedure.bqml_generate_text aus, um iterativ Text aus dem öffentlichen Dataset bigquery-public-data.bbc_news.fulltext zu generieren.
  • Prüfen Sie die generierten Textergebnisse und bestätigen Sie, dass keine wiederholbaren Kontingentfehler mehr vorhanden sind.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.
  • Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform model.

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Neuen Nutzern von Google Cloud steht möglicherweise eine kostenlose Testversion zur Verfügung.

Weitere Informationen finden Sie unter BigQuery-Preise und Agent Platform-Preise.

Hinweis

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  3. Aktivieren Sie die BigQuery API, die BigQuery Connection API und die Agent Platform API, falls sie noch nicht aktiviert sind.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    APIs aktivieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:

  • BigQuery-Datasets, -Verbindungen und -Modelle erstellen und verwenden: BigQuery-Administrator (roles/bigquery.admin) für Ihr Projekt
  • Gewähren Sie dem Dienstkonto der Verbindung die Berechtigungen Project IAM Admin (roles/resourcemanager.projectIamAdmin) für Ihr Projekt.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Abschließen dieser Anleitung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um diese Anleitung abzuschließen:

  • Dataset erstellen: bigquery.datasets.create
  • Verbindung erstellen, delegieren und verwenden: bigquery.connections.*
  • Legen Sie die Standardverbindung fest: bigquery.config.*
  • Legen Sie die Dienstkontoberechtigungen fest:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Modell erstellen und Inferenz ausführen:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Dataset erstellen

Wählen Sie eine der folgenden Optionen aus, um ein BigQuery-Dataset zu erstellen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im linken Bereich auf Explorer:

    Hervorgehobener Button für den Explorer-Bereich.

    Wenn der linke Bereich nicht angezeigt wird, klicken Sie auf Linken Bereich maximieren, um ihn zu öffnen.

  3. Maximieren Sie im Explorer Ihr Projekt und klicken Sie dann auf Datasets.

  4. Klicken Sie auf der Seite Datasets auf Dataset erstellen.

  5. Führen Sie im Bereich Dataset erstellen die folgenden Schritte aus:

    • Geben Sie unter Dataset-ID bqml_tutorial ein.

    • Wählen Sie unter Speicherort der Daten die Option USA aus.

    Übernehmen Sie die anderen Standardeinstellungen.

  6. Klicken Sie auf Dataset erstellen.

bq

Wenn Sie ein neues Dataset erstellen möchten, verwenden Sie den Befehl bq mk --dataset.

  1. Erstellen Sie ein Dataset mit dem Namen bqml_tutorial und dem Datenspeicherort US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Prüfen Sie, ob das Dataset erstellt wurde:

    bq ls

API

Rufen Sie die Methode datasets.insert mit einer definierten Dataset-Ressource auf:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Remote-Modell erstellen

Verwenden Sie die Anweisung CREATE MODEL, um ein Remote-Modell zu erstellen, das ein gehostetes Agent Platform-gemini-3.5-flash-lite-Modell darstellt:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    CREATE OR REPLACE MODEL `bqml_tutorial.generate_text`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'gemini-3.5-flash-lite');

    Die Abfrage dauert mehrere Sekunden. Anschließend wird das Modell generate_text im bqml_tutorial-Dataset des Bereichs Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Führen Sie die gespeicherte Prozedur aus.

Verwenden Sie die Anweisung CALL, um die gespeicherte Prozedur bqutil.procedure.bqml_generate_text auszuführen. Diese gespeicherte Prozedur durchläuft Aufrufe der Funktion ML.GENERATE_TEXT mithilfe des Modells bqml_tutorial.generate_text und der öffentlichen Tabelle bigquery-public-data.bbc_news.fulltext:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Führen Sie im Abfrageeditor folgende Abfrage aus:

    CALL `bqutil.procedure.bqml_generate_text`(
        "bigquery-public-data.bbc_news.fulltext",          -- source table
        "PROJECT_ID.bqml_tutorial.news_generated_text",  -- destination table
        "PROJECT_ID.bqml_tutorial.generate_text",        -- model
        "body",                                            -- prompt column
        ["filename"],                                      -- key columns
        '{"flatten_json_output": true}'                    -- optional arguments
    );

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    Die gespeicherte Prozedur erstellt die bqml_tutorial.news_generated_text-Tabelle, die die Ausgabe der Funktion ML.GENERATE_TEXT enthält.

  3. Wenn die Abfrage abgeschlossen ist, bestätigen Sie, dass die Tabelle bqml_tutorial.news_generated_text keine Zeilen mit einem wiederholbaren Fehler enthält. Führen Sie im Abfrageeditor die folgende Anweisung aus:

    SELECT *
    FROM `bqml_tutorial.news_generated_text`
    WHERE ml_generate_text_status LIKE '%A retryable error occurred%';

    Die Abfrage gibt die Nachricht There is no data to display zurück.

  4. Führen Sie im Abfrageeditor die folgende Anweisung aus, um eine Stichprobe der generierten Textergebnisse zu prüfen:

    SELECT
      filename,
      prompt,
      ml_generate_text_llm_result,
      ml_generate_text_status
    FROM `bqml_tutorial.news_generated_text`
    LIMIT 3;

    Die Ausgabe sieht etwa so aus:

    +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+
    | filename               | prompt                                   | ml_generate_text_llm_result                               | ml_generate_text_status |
    +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+
    | bbc/tech/209.txt       | A 20-year-old US man is selling...       | It looks like you shared a news article about Andrew...   |                         |
    | bbc/business/375.txt   | South Korea's largest credit card...     | It looks like you shared a news article about the 2004... |                         |
    | bbc/sport/139.txt      | A brave defensive display, led by...     | It looks like you have shared a match report from a...    |                         |
    +------------------------+------------------------------------------+-----------------------------------------------------------+-------------------------+
    

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

    Google Cloud -Projekt löschen:

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Wenn Sie das Projekt wiederverwenden möchten, löschen Sie die für diese Anleitung erstellten Ressourcen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. Löschen Sie das Dataset bqml_tutorial. Durch das Löschen des Datasets werden auch das Remote-Modell und die Ausgabetabelle gelöscht:

    1. Maximieren Sie im Bereich Explorer Ihr Projekt und klicken Sie auf Datasets.

    2. Klicken Sie in der Liste Datasets auf das Dataset bqml_tutorial.

    3. Klicken Sie im Detailbereich auf Löschen.

    4. Klicken Sie im Dialogfeld Dataset löschen auf Löschen.

bq

Löschen Sie das Dataset bqml_tutorial, das Remote-Modell und die Ausgabetabelle:

bq rm --dataset --recursive bqml_tutorial

Nächste Schritte