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:
- Sie haben die BigQuery API, die BigQuery Connection API und die Vertex AI API in Ihrem Projekt aktiviert. Google Cloud Informationen zum Aktivieren von APIs Google Cloud finden Sie unter APIs aktivieren.
- Die Abrechnung für Ihr Google Cloud -Projekt muss aktiviert sein.
- Das im Clientschlüssel für die Authentifizierung konfigurierte Dienstkonto muss die erforderlichen Berechtigungen haben.
- Sie haben das BigQuery AI & ML SDK for ABAP in Ihrer SAP-Umgebung installiert.
- Es wurde ein Remote-Modell für die unterstützten Gemini-Modelle erstellt.
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ürML.GENERATE_TEXT
.THRESHOLD
: Der entsprechende Blockierungsgrenzwert zum Filtern von Antworten. Suchen Sie unter Eingabesyntax nach wahrscheinlichen Werten aus dem Argument „Sicherheitseinstellungen“ fürML.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 ParameterFLATTEN_JSON_OUTPUT
in der Eingabeabfrage nicht aufTRUE
festgelegt ist.ET_BQML_RESPONSE_FLATTEN_JSON
wird ausgefüllt, wenn der ParameterFLATTEN_JSON_OUTPUT
in der Eingabeabfrage aufTRUE
festgelegt ist.ET_BQML_RESPONSE_GROUNDING
wird ausgefüllt, wenn der ParameterFLATTEN_JSON_OUTPUT
in der Eingabeabfrage aufTRUE
und der ParameterGROUNDING_WITH_GOOGLE_SEARCH
ebenfalls aufTRUE
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( ).