Obtén estadísticas de Gemini sobre los datos de BigQuery

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:

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 para ML.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 para ML.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ámetro FLATTEN_JSON_OUTPUT no se establece en TRUE en la consulta de entrada.
  • ET_BQML_RESPONSE_FLATTEN_JSON se propaga cuando el parámetro FLATTEN_JSON_OUTPUT se establece en TRUE en la consulta de entrada.
  • ET_BQML_RESPONSE_GROUNDING se propaga cuando el parámetro FLATTEN_JSON_OUTPUT se establece en TRUE en la consulta de entrada y el parámetro GROUNDING_WITH_GOOGLE_SEARCH también se establece en TRUE 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( ).