Gemini-Statistiken zu BigQuery-Daten abrufen

Mit dem BigQuery AI and ML SDK for ABAP können Sie Gemini-Abfragen auf Ihre in BigQuery gespeicherten Unternehmensdaten anwenden und die Ergebnisse aus Ihren ABAP-basierten Agenten oder Anwendungen abrufen. Mit dem SDK können Sie Gemini-Modelle für Folgendes verwenden:

  • Statistiken aus Textdaten in BigQuery generieren
  • Statistiken aus Bild- oder Videodaten in BigQuery generieren

Mit der BigQuery-Funktion ML.GENERATE_TEXT können Sie Gemini-basierte Statistiken zu Ihren in BigQuery-Datasets gespeicherten Unternehmensdaten erstellen.

Sie können auf Gemini-Modelle in Vertex AI zugreifen, indem Sie in BigQuery ML ein Remote-Modell erstellen, das den Endpunkt des Vertex AI-Modells darstellt. Nachdem Sie ein Remote-Modell für das Vertex AI-Modell erstellt haben, das Sie verwenden möchten, können Sie die Funktionalität dieses Modells nutzen. Dazu führen Sie die BigQuery ML-Funktion für das Remote-Modell aus.

Hinweise

Bevor Sie das BigQuery AI & ML SDK for ABAP mit den Gemini-Modellen verwenden, müssen Sie oder Ihre Administratoren die folgenden Voraussetzungen erfüllen:

Preise

Das BigQuery AI and ML SDK for ABAP wird kostenlos angeboten. Sie sind jedoch für die Kosten auf den BigQuery- und Vertex AI-Plattformen verantwortlich:

  • BigQuery ML: Für die Daten, die Sie in BigQuery verarbeiten, fallen Kosten an.
  • Vertex AI: Es fallen Kosten für Aufrufe an den Vertex AI-Dienst an, der durch das Remote-Modell dargestellt wird.

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

Weitere Informationen zu den Preisen von BigQuery finden Sie auf der Seite BigQuery-Preise.

Weitere Informationen zu den Preisen für Vertex AI finden Sie auf der Seite Vertex AI-Preise.

Gemini-Abfragen in BigQuery ausführen

In diesem Abschnitt wird erläutert, wie Sie mit dem BigQuery AI & ML SDK für ABAP Gemini-basierte Statistiken aus Unternehmensdaten in BigQuery generieren.

Mit der im SDK enthaltenen ABAP-Klasse /GOOG/CL_BQ_GENERATIVE_MODEL können Sie Gemini-Abfragen mithilfe der BigQuery-Funktion ML.GENERATE_TEXT ausführen.

Gemini-Abfrage festlegen

Sie können das SDK auf folgende Arten verwenden, um Gemini-Abfragen auszuführen:

  • Speichern Sie die Abfrage, um Gemini in BigQuery auszuführen. Verwenden Sie die Klasse /GOOG/CL_BQ_QUERY und geben Sie den Namen der gespeicherten Abfrage an, wenn Sie die Klasse aus Ihrer Anwendungslogik instanziieren.

    TRY.
        DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                                  iv_location_id = 'QUERY_LOCATION_ID'
          iv_query_name  = 'SAVED_QUERY_NAME' ).
    CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
        cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
    
    ENDTRY.
    

    Ersetzen Sie Folgendes:

    • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
    • QUERY_LOCATION_ID: Der Speicherort Google Cloud , unter dem die Abfrage gespeichert wird.
    • SAVED_QUERY_NAME: Der Name der Abfrage, mit dem die Abfrage in BigQuery gespeichert wird.
  • Übergeben Sie den Abfragetext, um Gemini aufzurufen, wenn Sie die Klasse /GOOG/CL_BQ_QUERY aus Ihrer Anwendungslogik instanziieren.

    TRY.
        DATA(lo_bq_query) = NEW /goog/cl_bq_query( iv_key         = 'CLIENT_KEY'
                                                  iv_location_id = 'QUERY_LOCATION_ID'
          iv_query_text  = 'QUERY_TEXT' ).
    CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
        cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
    
    ENDTRY.
    

    Ersetzen Sie Folgendes:

    • CLIENT_KEY: Der Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.
    • QUERY_LOCATION_ID: Der Speicherort, Google Cloud unter dem die Abfrage gespeichert wird.
    • QUERY_TEXT: Der Abfragetext, den Sie mit Gemini ausführen möchten.

Wenn Sie die /GOOG/CL_BQ_QUERY-Klasse mit dem Namen der gespeicherten Abfrage oder dem Text der direkten Abfrage instanziieren, wird die Abfrage in der Klasse festgelegt. Anschließend können Sie die Klassenreferenz als Eingabe an die /GOOG/CL_BQ_GENERATIVE_MODEL-ABAP-Klasse übergeben, um die Abfrage aufzurufen.

BigQuery-Gemini-Aufruferklasse instanziieren

Wenn Sie die Gemini-Text- und multimodalen Modelle in BigQuery-Datensätzen aufrufen möchten, verwenden Sie die Klasse /GOOG/CL_BQ_GENERATIVE_MODEL.

TRY.
    DATA(lo_bq_generative_model) = NEW /goog/cl_bq_generative_model( iv_key = 'CLIENT_KEY' ).
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
    cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ersetzen Sie CLIENT_KEY durch den Clientschlüssel, den Sie während der Einrichtung der Authentifizierung für die Authentifizierung bei Google Cloud konfiguriert haben.

Gemini-Abfrage ausführen

Wenn Sie Gemini-Abfragen mit der BigQuery-Funktion ML.GENERATE_TEXT ausführen möchten, verwenden Sie die Methode EXECUTE_QUERY der Klasse /GOOG/CL_BQ_GENERATIVE_MODEL. Das mit der Abfrage festgelegte Objekt der Klasse /GOOG/CL_BQ_QUERY wird als Eingabe an die Methode übergeben.

lo_bq_generative_model->execute_query( io_query = lo_bq_query ).

LO_BQ_QUERY ist die Referenz der Klasse /GOOG/CL_BQ_QUERY nach Festlegen der Abfrage.

Parameter für die Modellgenerierung überschreiben

Sie können Generierungsparameter für Gemini-Modelle in einer gespeicherten Abfrage in BigQuery oder in übergebenem Abfragetext definieren. Wenn Sie die Parameter für dieselbe Abfrage jedoch aus der ABAP-Anwendungslogik überschreiben möchten, können Sie die Methode SET_GENERATION_CONFIG der Klasse /GOOG/CL_BQ_GENERATIVE_MODEL verwenden. Die Generierungsparameter in der ursprünglichen Abfrage werden durch die Parameter überschrieben, die über diese Methode übergeben werden.

DATA lt_stop_sequences TYPE /goog/cl_bigquery_v2=>ty_t_string.
DATA lt_safety_settings TYPE /goog/cl_bq_generative_model=>ty_t_safety_settings.
DATA ls_safety_settings TYPE /goog/cl_bq_generative_model=>ty_safety_setting.

APPEND 'STOP_SEQUENCE' TO lt_stop_sequences.

ls_safety_settings-category = 'CATEGORY'.
ls_safety_settings-threshold = 'THRESHOLD'.

APPEND ls_safety_settings TO lt_safety_settings.

lo_bq_generative_model->set_generation_config( iv_temperature               = 'TEMPERATURE'
                               iv_top_p                     = 'TOP_P'
       iv_top_k                     = 'TOP_K'
       iv_max_output_tokens         = 'MAX_OUTPUT_TOKENS'
       iv_flatten_json_output       = 'IS_FLATTEN_JSON_OUTPUT'
       iv_ground_with_google_search = 'IS_GROUND_WITH_GOOGLE_SEARCH'
it_stop_sequences            = lt_stop_sequences
it_safety_settings           = lt_safety_settings ).

Ersetzen Sie Folgendes:

  • STOP_SEQUENCE: Der Wert, mit dem die angegebenen Strings entfernt werden, wenn sie in Antworten des Modells enthalten sind.
  • CATEGORY: Die Kategorie für die Sicherheit von Inhalten, nach der Antworten gefiltert werden sollen. Suchen Sie unter Eingabesyntax nach wahrscheinlichen Werten aus dem Argument „Sicherheitseinstellungen“ für ML.GENERATE_TEXT.
  • THRESHOLD: Der entsprechende Blockierungsgrenzwert zum Filtern von Antworten. Suchen Sie unter Eingabesyntax nach wahrscheinlichen Werten aus dem Argument „Sicherheitseinstellungen“ für ML.GENERATE_TEXT.
  • TEMPERATURE: Der Wert, der den Grad der Zufälligkeit bei der Tokenauswahl steuert.
  • TOP_P: Der Wert, der ändert, wie das Modell Tokens für die Ausgabe auswählt.
  • TOP_K: Der Wert, der ändert, wie das Modell Tokens für die Ausgabe auswählt.
  • MAX_OUTPUT_TOKENS: Der Wert, der die maximale Anzahl von Tokens festlegt, die in der Antwort generiert werden können.
  • IS_FLATTEN_JSON_OUTPUT: Ein boolescher Wert, der bestimmt, ob der von der Funktion zurückgegebene JSON-Inhalt in separate Spalten geparst wird.
  • IS_GROUND_WITH_GOOGLE_SEARCH: Ein boolescher Wert, der angibt, ob das Vertex AI-Modell beim Generieren von Antworten die Fundierung mit der Google Suche verwendet.

Abfrageergebnisse von Gemini-Abfragen abrufen

Wenn Sie verarbeitete Antworten von BigQuery ML für Gemini-Abfragen erhalten und auf sinnvolle Weise präsentieren möchten, verwenden Sie die Klasse /GOOG/CL_BQ_MODEL_RESPONSE.

Die von der Klasse /GOOG/CL_BQ_MODEL_RESPONSE erfasste Antwort wird mit den Anfragen verkettet, die über die Methoden der Klasse /GOOG/CL_BQ_GENERATIVE_MODEL gestellt werden. Sie können also in einer einzigen Anweisung direkt auf die Antwort zugreifen, ohne Variablen zum Speichern der Zwischenergebnisse nutzen zu müssen.

Textantwort abrufen

Wenn Sie eine Textantwort vom Modell erhalten möchten, verwenden Sie die Methode GET_TEXT_RESPONSE.

DATA(lt_bq_response) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                            )->get_text_response( ).

Abfragejobstatus abrufen

Jede Abfrage in BigQuery wird als Abfragejob ausgeführt. Verwenden Sie die Methode GET_QUERY_JOB_STATUS, um den Status des Abfragejobs abzurufen.

lo_bq_generative_model->execute_query( io_query = lo_bq_query
                     )->get_query_job_status(
IMPORTING ev_job_complete          = DATA(lv_job_complete)
  ev_job_creation_reason   = DATA(lv_job_creation_reason)
  ev_job_id                = DATA(lv_job_id)
  ev_query_id              = DATA(lv_query_id)
  ev_total_bytes_processed = DATA(lv_total_bytes_processed)
  ev_total_rows            = DATA(lv_total_rows) ).

Die Methode gibt die folgenden Jobstatusmesswerte zurück:

  • Gibt an, ob die Abfrage abgeschlossen wurde oder nicht.
  • Der Grund, warum ein Job erstellt wurde
  • Verweis auf den Job, der zum Ausführen der Abfrage erstellt wurde
  • Automatisch generierte ID für die Abfrage
  • Die Gesamtzahl der für diese Abfrage verarbeiteten Byte
  • Die Gesamtzahl der Zeilen im vollständigen Abfrageergebnissatz

Abfragejobfehler abrufen

Verwenden Sie die Methode GET_QUERY_JOB_ERRORS, um die Fehler (falls vorhanden) abzurufen.

DATA(lt_query_job_errors) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                                 )->get_query_job_errors( ).

Grund für das Ende abrufen

Mit der Methode GET_FINISH_REASON können Sie den Grund ermitteln, warum das Modell für jede Zeile keine Tokens mehr generiert.

DATA(lt_finish_reason) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                              )->get_finish_reason( ).

Nutzungsmetadaten abrufen

Verwenden Sie die Methode GET_USAGE_METADATA, um die Nutzungsmetadaten für die Antwort zu erhalten, die für jede Zeile generiert wurde .

DATA(lt_usage_metadata) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                               )->get_usage_metadata( ).

Nutzungsmetadaten umfassen die folgenden Messwerte:

  • Gesamtzahl der Tokens in der Antwort für eine Zeile
  • Tokenanzahl im Eingabeprompt
  • Gesamtzahl der Tokens

Sicherheitsbewertung erhalten

Verwenden Sie die Methode GET_SAFETY_RATING, um die Sicherheitsbewertung für die Antwort abzurufen. Sicherheitsbewertungen müssen in der Eingabeabfrage als Parameter für die Modellgenerierung festgelegt werden, um die Sicherheitsbewertung für die Antwort zu erhalten.

DATA(lt_safety_ratings) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                               )->get_safety_rating( ).

Tabelle mit Gesamtantworten abrufen

Verwenden Sie die Methode GET_RESPONSE_TABLE, um die Gesamtantworttabelle für die von Ihnen ausgeführte Gemini-Abfrage abzurufen.

lo_bq_model_response->get_response_table(
IMPORTING et_bqml_response              = DATA(lt_bqml_response)
                  et_bqml_response_flatten_json = DATA(lt_bqml_response_flatten_json)
                  et_bqml_response_grounding    = DATA(lt_bqml_response_grounding) ).

Basierend auf dem in der Abfrage festgelegten Generierungsparameter wird nur eine Antworttabelle ausgefüllt:

  • ET_BQML_RESPONSE wird ausgefüllt, wenn der Parameter FLATTEN_JSON_OUTPUT in der Eingabeabfrage nicht auf TRUE festgelegt ist.
  • ET_BQML_RESPONSE_FLATTEN_JSON wird ausgefüllt, wenn der Parameter FLATTEN_JSON_OUTPUT in der Eingabeabfrage auf TRUE festgelegt ist.
  • ET_BQML_RESPONSE_GROUNDING wird ausgefüllt, wenn der Parameter FLATTEN_JSON_OUTPUT in der Eingabeabfrage auf TRUE und der Parameter GROUNDING_WITH_GOOGLE_SEARCH ebenfalls auf TRUE festgelegt ist.

Fundierungsquelle abrufen

Mit der Methode GET_GROUNDING_SOURCE können Sie die Fundierungsquellen auflisten, die das Modell zum Generieren der Antworten verwendet hat.

DATA(lt_query_grounding_sources) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
                                                        )->get_grounding_source( ).