El SDK de BigQuery AI y ML para ABAP te permite usar consultas de Gemini en tus datos empresariales almacenados en BigQuery y mostrar los resultados desde tus agentes o aplicaciones basados en ABAP. Con el SDK, puedes usar modelos de Gemini para hacer lo siguiente:
- Genera estadísticas a partir de datos de texto en BigQuery
- Genera estadísticas a partir de datos de imágenes o videos en BigQuery
Puedes ejecutar estadísticas basadas en Gemini en tus datos empresariales almacenados en tus conjuntos de datos de BigQuery con la función ML.GENERATE_TEXT
de BigQuery.
Para acceder a los modelos de Gemini en Vertex AI, crea un modelo remoto en BigQuery ML que represente el extremo del modelo de Vertex AI. Una vez que hayas creado un modelo remoto sobre el modelo de Vertex AI que deseas usar, puedes acceder a las capacidades de ese modelo mediante la ejecución de la función de BigQuery ML en el modelo remoto.
Antes de comenzar
Antes de usar el SDK de BigQuery AI y ML para ABAP con los modelos de Gemini, asegúrate de que tú o tus administradores hayan completado los siguientes requisitos previos:
- Habilitaste la API de BigQuery, la API de BigQuery Connection y la API de Vertex AI en tu proyecto de Google Cloud. Para obtener información sobre cómo habilitar las Google Cloud APIs, consulta Habilita las APIs.
- Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
- La cuenta de servicio configurada en la clave de cliente para la autenticación debe tener los permisos necesarios.
- Instalaste el SDK de BigQuery AI y ML para ABAP en tu entorno de SAP.
- Creaste un modelo remoto para los modelos de Gemini compatibles.
Precios
El SDK de BigQuery AI y ML para ABAP se ofrece sin costo. Sin embargo, eres responsable de los cargos en las plataformas de BigQuery y Vertex AI de la siguiente manera:
- BigQuery ML: Se generan costos por los datos que procesas en BigQuery.
- Vertex AI: Se generan costos por las llamadas al servicio de Vertex AI que representa el modelo remoto.
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Para obtener más información sobre los precios de BigQuery, consulta la página Precios de BigQuery.
Para obtener más información sobre los precios de Vertex AI, consulta la página Precios de Vertex AI.
Ejecuta consultas de Gemini en BigQuery
En esta sección, se explica cómo generar estadísticas basadas en Gemini a partir de datos empresariales en BigQuery con el SDK de BigQuery AI y ML para ABAP.
La clase ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
que se incluye con el SDK te permite ejecutar consultas de Gemini con la función ML.GENERATE_TEXT
de BigQuery.
Cómo configurar una consulta de Gemini
Puedes usar el SDK para ejecutar consultas de Gemini de las siguientes maneras:
Guarda tu consulta para ejecutar Gemini en BigQuery. Usa la clase
/GOOG/CL_BQ_QUERY
y proporciona el nombre de la consulta guardada cuando crees una instancia de la clase desde la lógica de tu aplicación.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.
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.SAVED_QUERY_NAME
: Es el nombre de la consulta con la que se guarda la consulta en BigQuery.
Pasa el texto de la consulta para invocar a Gemini cuando crees una instancia de la clase
/GOOG/CL_BQ_QUERY
desde la lógica de tu aplicación.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.
Reemplaza lo siguiente:
CLIENT_KEY
: Es la clave del cliente que configuraste para la autenticación a Google Cloud durante la configuración de la autenticación.QUERY_LOCATION_ID
: Es la Google Cloud ubicación en la que se guarda la consulta.QUERY_TEXT
: Es el texto de la consulta que deseas ejecutar con Gemini.
Cuando creas una instancia de la clase /GOOG/CL_BQ_QUERY
con el nombre de la consulta guardada o el texto de la consulta directa, se establece la consulta dentro de la clase. Luego, puedes pasar la referencia de clase como entrada a la clase ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
para invocar la consulta.
Crea una instancia de la clase de invocador de Gemini de BigQuery
Para invocar los modelos multimodales y de texto de Gemini en conjuntos de datos de BigQuery, usa la clase /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.
Reemplaza CLIENT_KEY
por la clave de cliente que configuraste para la autenticación en Google Cloud durante la configuración de autenticación.
Ejecuta una consulta de Gemini
Para ejecutar consultas de Gemini con la función ML.GENERATE_TEXT
de BigQuery, usa el método EXECUTE_QUERY
de la clase /GOOG/CL_BQ_GENERATIVE_MODEL
.
El objeto de la clase /GOOG/CL_BQ_QUERY
establecido con la consulta se pasa como entrada al método.
lo_bq_generative_model->execute_query( io_query = lo_bq_query ).
LO_BQ_QUERY
es la referencia de la clase /GOOG/CL_BQ_QUERY
después de configurar la consulta.
Cómo anular los parámetros de generación de modelos
Puedes definir los parámetros de generación del modelo de Gemini en una consulta guardada en BigQuery o en el texto de la consulta que pases. Sin embargo, si necesitas anular los parámetros de la misma consulta desde la lógica de la aplicación ABAP, puedes usar el método SET_GENERATION_CONFIG
de la clase /GOOG/CL_BQ_GENERATIVE_MODEL
.
Los parámetros de generación en la consulta inicial se anulan con los parámetros que se pasan a través de este método.
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 ).
Reemplaza lo siguiente:
STOP_SEQUENCE
: Es el valor que quita las cadenas especificadas si se incluyen en respuestas del modelo.CATEGORY
: Es la categoría de seguridad del contenido para filtrar las respuestas. Busca valores probables del argumento de configuración de seguridad en la sintaxis de entrada paraML.GENERATE_TEXT
.THRESHOLD
: El umbral de bloqueo correspondiente para filtrar las respuestas. Busca valores probables en el argumento de configuración de seguridad en sintaxis de entrada paraML.GENERATE_TEXT
.TEMPERATURE
: Es el valor que controla el grado de aleatoriedad en la selección de tokens.TOP_P
: Es el valor que cambia la forma en que el modelo selecciona tokens para el resultado.TOP_K
: Es el valor que cambia la forma en que el modelo selecciona tokens para el resultado.MAX_OUTPUT_TOKENS
: Es el valor que establece la cantidad máxima de tokens que se pueden generar en la respuesta.IS_FLATTEN_JSON_OUTPUT
: Es un valor booleano que determina si el contenido JSON que muestra la función se analiza en columnas separadas.IS_GROUND_WITH_GOOGLE_SEARCH
: Un valor booleano que determina si el modelo de Vertex AI usa Fundamentación con la Búsqueda de Google cuando genera respuestas.
Cómo obtener resultados de las consultas de Gemini
Para recibir respuestas procesadas de las consultas de BigQuery ML para Gemini y presentarlas de una manera significativa, usa la clase /GOOG/CL_BQ_MODEL_RESPONSE
.
La respuesta que captura la clase /GOOG/CL_BQ_MODEL_RESPONSE
se encadena a las solicitudes realizadas a través de los métodos de la clase /GOOG/CL_BQ_GENERATIVE_MODEL
, de modo que puedas acceder directamente a la respuesta en una sola sentencia sin necesidad de variables para almacenar los resultados intermedios.
Obtén una respuesta de texto
Para recibir una respuesta de texto del modelo, usa el método GET_TEXT_RESPONSE
.
DATA(lt_bq_response) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_text_response( ).
Obtén el estado del trabajo de consulta
Cada consulta en BigQuery se ejecuta como un trabajo de consulta.
Para obtener el estado de la tarea de consulta, usa el método 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) ).
El método muestra las siguientes métricas de estado del trabajo:
- Si la consulta se completó o no
- El motivo por el que se creó un trabajo
- Es la referencia al trabajo que se creó para ejecutar la consulta.
- ID generado automáticamente para la consulta
- Es la cantidad total de bytes procesados para esta consulta.
- Es la cantidad total de filas en el conjunto de resultados de la consulta completa.
Cómo obtener errores de trabajos de consulta
Para recuperar los errores (si los hay), usa el método GET_QUERY_JOB_ERRORS
.
DATA(lt_query_job_errors) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_query_job_errors( ).
Obtén el motivo de finalización
Para obtener el motivo por el que el modelo dejó de generar tokens para cada fila, usa el método GET_FINISH_REASON
.
DATA(lt_finish_reason) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_finish_reason( ).
Cómo obtener metadatos de uso
Para obtener los metadatos de uso sobre la respuesta generada para cada fila, usa el método GET_USAGE_METADATA
.
DATA(lt_usage_metadata) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_usage_metadata( ).
Los metadatos de uso consisten en las siguientes métricas:
- Cantidad total de tokens en la respuesta de una fila
- Recuento de tokens en la instrucción de entrada
- Cantidad total de tokens
Obtén la calificación de seguridad
Para obtener la calificación de seguridad de la respuesta, usa el método GET_SAFETY_RATING
.
Las calificaciones de seguridad se deben establecer como parámetros de generación de modelos en la consulta de entrada para obtener la calificación de seguridad de la respuesta.
DATA(lt_safety_ratings) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_safety_rating( ).
Cómo obtener la tabla de respuestas general
Para obtener la tabla de respuestas general de la consulta de Gemini que ejecutas, usa el método 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) ).
Solo se propaga una tabla de respuestas según el parámetro de generación establecido en la consulta:
ET_BQML_RESPONSE
se completa cuando el parámetroFLATTEN_JSON_OUTPUT
no se establece enTRUE
en la consulta de entrada.ET_BQML_RESPONSE_FLATTEN_JSON
se propaga cuando el parámetroFLATTEN_JSON_OUTPUT
se establece enTRUE
en la consulta de entrada.ET_BQML_RESPONSE_GROUNDING
se propaga cuando el parámetroFLATTEN_JSON_OUTPUT
se establece enTRUE
en la consulta de entrada y el parámetroGROUNDING_WITH_GOOGLE_SEARCH
también se establece enTRUE
en la consulta de entrada.
Cómo obtener la fuente de los fundamentos
Para enumerar las fuentes de fundamentación que usó el modelo para generar las respuestas, usa el método GET_GROUNDING_SOURCE
.
DATA(lt_query_grounding_sources) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_grounding_source( ).