Le SDK BigQuery AI et ML pour ABAP vous permet d'utiliser des requêtes Gemini sur vos données d'entreprise stockées dans BigQuery et de récupérer les résultats à partir de vos agents ou applications basés sur ABAP. Avec le SDK, vous pouvez utiliser des modèles Gemini pour effectuer les opérations suivantes:
- Générer des insights à partir de données textuelles dans BigQuery
- Générer des insights à partir de données image ou vidéo dans BigQuery
Vous pouvez exécuter des insights basés sur Gemini sur vos données d'entreprise stockées dans vos ensembles de données BigQuery à l'aide de la fonction BigQuery ML.GENERATE_TEXT
.
Vous pouvez accéder aux modèles Gemini sur Vertex AI en créant un modèle distant dans BigQuery ML qui représente le point de terminaison du modèle Vertex AI. Une fois que vous avez créé un modèle distant basé sur le modèle Vertex AI que vous souhaitez utiliser, vous pouvez accéder aux fonctionnalités de ce modèle en exécutant la fonction BigQuery ML sur le modèle distant.
Avant de commencer
Avant d'utiliser le SDK BigQuery AI et ML pour ABAP avec les modèles Gemini, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes:
- Vous avez activé l'API BigQuery, l'API BigQuery Connection et l'API Vertex AI dans votre Google Cloud projet. Pour savoir comment activer des Google Cloud API, consultez Activer des API.
- Assurez-vous que la facturation est activée pour votre Google Cloud projet.
- Le compte de service configuré dans la clé client pour l'authentification doit disposer des autorisations requises.
- Installer le SDK BigQuery AI et ML pour ABAP dans votre environnement SAP.
- Vous avez créé un modèle distant pour les modèles Gemini compatibles.
Tarifs
Le SDK BigQuery AI et ML pour ABAP est proposé sans frais. Toutefois, vous êtes responsable des frais sur les plates-formes BigQuery et Vertex AI comme suit:
- BigQuery ML: les données que vous traitez dans BigQuery sont facturées.
- Vertex AI: des frais vous sont facturés pour les appels au service Vertex AI représenté par le modèle distant.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Pour en savoir plus sur les tarifs de BigQuery, consultez la page Tarifs de BigQuery.
Pour en savoir plus sur les tarifs de Vertex AI, consultez la page Tarifs de Vertex AI.
Exécuter des requêtes Gemini dans BigQuery
Cette section explique comment générer des insights basés sur Gemini à partir de données d'entreprise dans BigQuery à l'aide du SDK BigQuery AI et ML pour ABAP.
La classe ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
fournie avec le SDK vous permet d'exécuter des requêtes Gemini à l'aide de la fonction BigQuery ML.GENERATE_TEXT
.
Définir la requête Gemini
Vous pouvez utiliser le SDK pour exécuter des requêtes Gemini de différentes manières:
Enregistrez votre requête pour exécuter Gemini dans BigQuery. Utilisez la classe
/GOOG/CL_BQ_QUERY
et fournissez le nom de la requête enregistrée lorsque vous instanciez la classe à partir de votre logique d'application.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.
Remplacez les éléments suivants :
CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.SAVED_QUERY_NAME
: nom de la requête avec laquelle la requête est enregistrée dans BigQuery.
Transmettez le texte de la requête pour appeler Gemini lorsque vous instanciez la classe
/GOOG/CL_BQ_QUERY
à partir de la logique de votre application.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.
Remplacez les éléments suivants :
CLIENT_KEY
: clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.QUERY_LOCATION_ID
: emplacement Google Cloud où la requête est enregistrée.QUERY_TEXT
: texte de la requête que vous souhaitez exécuter avec Gemini.
Lorsque vous instanciez la classe /GOOG/CL_BQ_QUERY
avec le nom de la requête enregistrée ou le texte de la requête directe, la requête est définie dans la classe. Vous pouvez ensuite transmettre la référence de classe en entrée à la classe ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
pour appeler la requête.
Instancier la classe d'appelant Gemini BigQuery
Pour appeler les modèles textuels et multimodaux Gemini sur des ensembles de données BigQuery, utilisez la classe /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.
Remplacez CLIENT_KEY
par la clé client que vous avez configurée pour l'authentification à Google Cloud lors de la configuration de l'authentification.
Exécuter une requête Gemini
Pour exécuter des requêtes Gemini avec la fonction BigQuery ML.GENERATE_TEXT
, utilisez la méthode EXECUTE_QUERY
de la classe /GOOG/CL_BQ_GENERATIVE_MODEL
.
L'objet de la classe /GOOG/CL_BQ_QUERY
défini avec la requête est transmis en entrée à la méthode.
lo_bq_generative_model->execute_query( io_query = lo_bq_query ).
LO_BQ_QUERY
est la référence de la classe /GOOG/CL_BQ_QUERY
après avoir défini la requête.
Remplacer les paramètres de génération de modèle
Vous pouvez définir des paramètres de génération de modèle Gemini dans une requête enregistrée dans BigQuery ou dans le texte de la requête transmise. Toutefois, si vous devez remplacer les paramètres de la même requête à partir de la logique d'application ABAP, vous pouvez utiliser la méthode SET_GENERATION_CONFIG
de la classe /GOOG/CL_BQ_GENERATIVE_MODEL
.
Les paramètres de génération de la requête initiale sont remplacés par les paramètres transmis via cette méthode.
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 ).
Remplacez les éléments suivants :
STOP_SEQUENCE
: valeur qui supprime les chaînes spécifiées si elles sont incluses dans les réponses du modèle.CATEGORY
: catégorie de sécurité du contenu à filtrer. Recherchez les valeurs probables de l'argument des paramètres de sécurité sous la syntaxe d'entrée pourML.GENERATE_TEXT
.THRESHOLD
: seuil de blocage correspondant pour filtrer les réponses. Recherchez les valeurs probables de l'argument des paramètres de sécurité sous Syntaxe d'entrée pourML.GENERATE_TEXT
.TEMPERATURE
: valeur qui contrôle le degré de randomisation dans la sélection des jetons.TOP_P
: valeur qui modifie la façon dont le modèle sélectionne les jetons pour la sortie.TOP_K
: valeur qui modifie la façon dont le modèle sélectionne les jetons pour la sortie.MAX_OUTPUT_TOKENS
: valeur qui définit le nombre maximal de jetons pouvant être générés dans la réponse.IS_FLATTEN_JSON_OUTPUT
: valeur booléenne qui détermine si le contenu JSON renvoyé par la fonction est analysé dans des colonnes distinctes.IS_GROUND_WITH_GOOGLE_SEARCH
: valeur booléenne 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.
Obtenir les résultats des requêtes Gemini
Pour recevoir des réponses traitées par BigQuery ML pour les requêtes Gemini et les présenter de manière pertinente, utilisez la classe /GOOG/CL_BQ_MODEL_RESPONSE
.
La réponse capturée par la classe /GOOG/CL_BQ_MODEL_RESPONSE
est associée aux requêtes effectuées via les méthodes de la classe /GOOG/CL_BQ_GENERATIVE_MODEL
. Vous pouvez ainsi accéder directement à la réponse dans une seule instruction sans avoir besoin de variables pour stocker les résultats intermédiaires.
Obtenir une réponse textuelle
Pour recevoir une réponse textuelle du modèle, utilisez la méthode GET_TEXT_RESPONSE
.
DATA(lt_bq_response) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_text_response( ).
Obtenir l'état d'une requête
Chaque requête dans BigQuery est exécutée en tant que tâche de requête.
Pour obtenir l'état de la tâche de requête, utilisez la méthode GET_QUERY_JOB_STATUS
.
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) ).
La méthode renvoie les métriques d'état de la tâche suivantes:
- Indique si la requête est terminée ou non
- Raison pour laquelle une tâche a été créée
- Référence à la tâche créée pour exécuter la requête
- ID généré automatiquement pour la requête
- Nombre total d'octets traités pour cette requête
- Nombre total de lignes dans l'ensemble de résultats de la requête complète
Obtenir les erreurs de requête
Pour récupérer les erreurs (le cas échéant), utilisez la méthode GET_QUERY_JOB_ERRORS
.
DATA(lt_query_job_errors) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
Obtenir le motif de fin
Pour connaître la raison pour laquelle le modèle a cessé de générer des jetons pour chaque ligne, utilisez la méthode GET_FINISH_REASON
.
DATA(lt_finish_reason) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_finish_reason( ).
Obtenir des métadonnées d'utilisation
Pour obtenir les métadonnées d'utilisation de la réponse générée pour chaque ligne, utilisez la méthode GET_USAGE_METADATA
.
DATA(lt_usage_metadata) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_usage_metadata( ).
Les métadonnées d'utilisation se composent des métriques suivantes:
- Nombre total de jetons dans la réponse pour une ligne
- Nombre de jetons dans la requête d'entrée
- Nombre total de jetons
Obtenir une évaluation de sécurité
Pour obtenir la note de sécurité de la réponse, utilisez la méthode GET_SAFETY_RATING
.
Les évaluations de sécurité doivent être définies comme paramètres de génération de modèle dans la requête d'entrée pour obtenir l'évaluation de sécurité de la réponse.
DATA(lt_safety_ratings) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_safety_rating( ).
Obtenir le tableau des réponses globales
Pour obtenir le tableau de réponses global de la requête Gemini que vous exécutez, utilisez la méthode GET_RESPONSE_TABLE
.
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) ).
Un seul tableau de réponses est renseigné en fonction du paramètre de génération défini dans la requête:
ET_BQML_RESPONSE
est renseigné lorsque le paramètreFLATTEN_JSON_OUTPUT
n'est pas défini surTRUE
dans la requête d'entrée.ET_BQML_RESPONSE_FLATTEN_JSON
est renseigné lorsque le paramètreFLATTEN_JSON_OUTPUT
est défini surTRUE
dans la requête d'entrée.ET_BQML_RESPONSE_GROUNDING
est renseigné lorsque le paramètreFLATTEN_JSON_OUTPUT
est défini surTRUE
dans la requête d'entrée et que le paramètreGROUNDING_WITH_GOOGLE_SEARCH
est également défini surTRUE
dans la requête d'entrée.
Obtenir la source d'ancrage
Pour lister les sources d'ancrage que le modèle a utilisées pour générer les réponses, utilisez la méthode GET_GROUNDING_SOURCE
.
DATA(lt_query_grounding_sources) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_grounding_source( ).