O SDK de IA e ML do BigQuery para ABAP permite usar consultas do Gemini nos dados corporativos armazenados no BigQuery e retornar os resultados dos agentes ou aplicativos baseados em ABAP. Com o SDK, você pode usar os modelos do Gemini para fazer o seguinte:
- Gerar insights de dados de texto no BigQuery
- Gerar insights de dados de imagens ou vídeos no BigQuery
É possível executar insights com base no Gemini nos dados corporativos armazenados nos conjuntos de dados do BigQuery usando a função ML.GENERATE_TEXT
.
Para acessar os modelos Gemini na Vertex AI, crie um modelo remoto no BigQuery ML que represente o endpoint do modelo da Vertex AI. Depois de criar um modelo remoto sobre o modelo da Vertex AI que você quer usar, é possível acessar os recursos desse modelo executando a função do BigQuery ML no modelo remoto.
Antes de começar
Antes de usar o SDK de IA e ML do BigQuery para ABAP com os modelos Gemini, verifique se você ou seus administradores concluíram os seguintes pré-requisitos:
- Ative a API BigQuery, a API BigQuery Connection e a API Vertex AI no seu projeto do Google Cloud. Para informações sobre como ativar Google Cloud APIs, consulte Como ativar APIs.
- Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- A conta de serviço configurada na chave do cliente para autenticação precisa ter as permissões necessárias.
- Instalou o SDK de IA e ML do BigQuery para ABAP no seu ambiente SAP.
- Crie um modelo remoto para os modelos do Gemini compatíveis.
Preços
O SDK de IA e ML do BigQuery para ABAP é oferecido sem custos financeiros. No entanto, você é responsável pelas cobranças nas plataformas BigQuery e Vertex AI da seguinte maneira:
- BigQuery ML: há cobrança pelos dados processados no BigQuery.
- Vertex AI: haverá custos pelas chamadas para o serviço da Vertex AI representado pelo modelo remoto.
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações sobre os preços do BigQuery, consulte a página Preços do BigQuery.
Para mais informações sobre os preços da Vertex AI, consulte a página Preços da Vertex AI.
Executar consultas do Gemini no BigQuery
Esta seção explica como gerar insights com base no Gemini a partir de dados corporativos no BigQuery usando o SDK de IA e ML do BigQuery para ABAP.
A classe ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
enviada com o SDK permite
executar consultas do Gemini usando a
função ML.GENERATE_TEXT
do BigQuery.
Definir consulta do Gemini
É possível usar o SDK para executar consultas do Gemini das seguintes maneiras:
Salve a consulta para executar o Gemini no BigQuery. Use a classe
/GOOG/CL_BQ_QUERY
e forneça o nome da consulta salva quando você instanciar a classe na lógica do aplicativo.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.
Substitua:
CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.SAVED_QUERY_NAME
: o nome da consulta em que a consulta é salva no BigQuery.
Transmita o texto da consulta para invocar o Gemini ao instanciar a classe
/GOOG/CL_BQ_QUERY
da lógica do aplicativo.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.
Substitua:
CLIENT_KEY
: a chave de cliente configurada para autenticação em Google Cloud durante a configuração de autenticação.QUERY_LOCATION_ID
: o Google Cloud local em que a consulta é salva.QUERY_TEXT
: o texto da consulta que você quer executar com o Gemini.
Quando você instancia a classe /GOOG/CL_BQ_QUERY
com o nome da consulta salva
ou o texto da consulta direta, ela define a consulta na classe. Em seguida, você pode transmitir
a referência de classe como entrada para a classe ABAP /GOOG/CL_BQ_GENERATIVE_MODEL
para invocar a consulta.
Instancie a classe de invocação do Gemini do BigQuery
Para invocar os modelos multimodais e de texto do Gemini em conjuntos de dados do BigQuery,
use a 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.
Substitua CLIENT_KEY
pela chave do cliente configurada para
autenticação em Google Cloud durante a configuração de autenticação.
Executar consulta do Gemini
Para executar consultas do Gemini com a função ML.GENERATE_TEXT
do BigQuery,
use o método EXECUTE_QUERY
da classe /GOOG/CL_BQ_GENERATIVE_MODEL
.
O objeto da classe /GOOG/CL_BQ_QUERY
definido com a consulta
é transmitido como uma entrada para o método.
lo_bq_generative_model->execute_query( io_query = lo_bq_query ).
LO_BQ_QUERY
é a referência da classe /GOOG/CL_BQ_QUERY
após
definir a consulta.
Modificar os parâmetros de geração de modelos
É possível definir os parâmetros de geração do modelo Gemini
em uma consulta salva no BigQuery ou no texto de consulta transmitido. No entanto, se você precisar substituir os
parâmetros da mesma consulta da lógica do aplicativo ABAP, use
o método SET_GENERATION_CONFIG
da classe /GOOG/CL_BQ_GENERATIVE_MODEL
.
Os parâmetros de geração na consulta inicial são substituídos pelos parâmetros
transmitidos por esse 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 ).
Substitua:
STOP_SEQUENCE
: o valor que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo.CATEGORY
: a categoria de segurança de conteúdo para filtrar respostas. Procure valores prováveis do argumento de configurações de segurança na sintaxe de entrada paraML.GENERATE_TEXT
.THRESHOLD
: o limite de bloqueio correspondente para filtrar respostas. Procure valores prováveis do argumento de configurações de segurança na sintaxe de entrada paraML.GENERATE_TEXT
.TEMPERATURE
: o valor que controla o grau de aleatoriedade na seleção de token.TOP_P
: o valor que muda a forma como o modelo seleciona tokens para saída.TOP_K
: o valor que muda a forma como o modelo seleciona tokens para saída.MAX_OUTPUT_TOKENS
: o valor que define o número máximo de tokens que podem ser gerados na resposta.IS_FLATTEN_JSON_OUTPUT
: um valor booleano que determina se o conteúdo JSON retornado pela função é analisado em colunas separadas.IS_GROUND_WITH_GOOGLE_SEARCH
: um valor booleano que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas.
Conferir os resultados das consultas do Gemini
Para receber respostas processadas do BigQuery ML para consultas do Gemini
e apresentá-las de maneira significativa, use a classe /GOOG/CL_BQ_MODEL_RESPONSE
.
A resposta capturada pela classe /GOOG/CL_BQ_MODEL_RESPONSE
é encadeada
às solicitações feitas pelos métodos da classe /GOOG/CL_BQ_GENERATIVE_MODEL
para que você possa acessar diretamente a resposta em uma única instrução
sem precisar de variáveis para armazenar os resultados intermediários.
Receber resposta de texto
Para receber uma resposta de texto do modelo, use o método GET_TEXT_RESPONSE
.
DATA(lt_bq_response) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_text_response( ).
Conferir o status do job de consulta
Cada consulta no BigQuery é executada como um job de consulta.
Para conferir o status do job de consulta, use o 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) ).
O método retorna as seguintes métricas de status do job:
- Se a consulta foi concluída ou não
- O motivo da criação de um job
- Referência ao job que foi criado para executar a consulta
- ID gerado automaticamente para a consulta
- O número total de bytes processados para esta consulta
- O número total de linhas no conjunto de resultados da consulta
Receber erros de jobs de consulta
Para buscar os erros (se houver), use o 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( ).
Receber o motivo do término
Para saber o motivo pelo qual
o modelo parou de gerar tokens para cada linha, use o método GET_FINISH_REASON
.
DATA(lt_finish_reason) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_finish_reason( ).
Receber metadados de uso
Para conferir os metadados de uso sobre a resposta gerada para cada linha, use o método GET_USAGE_METADATA
.
DATA(lt_usage_metadata) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_usage_metadata( ).
Os metadados de uso consistem nas seguintes métricas:
- Contagem total de tokens na resposta de uma linha
- Contagem de tokens no comando de entrada
- Contagem total de tokens
Receber classificação de segurança
Para conferir a classificação de segurança da resposta, use o método GET_SAFETY_RATING
.
As classificações de segurança precisam ser definidas como parâmetros de geração de modelos na consulta de entrada
para receber a classificação de segurança da resposta.
DATA(lt_safety_ratings) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_safety_rating( ).
Receber a tabela de respostas geral
Para acessar a tabela de respostas geral da consulta do Gemini que você executou, use o 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) ).
Apenas uma tabela de resposta é preenchida com base no parâmetro de geração definido na consulta:
ET_BQML_RESPONSE
é preenchido quando o parâmetroFLATTEN_JSON_OUTPUT
não é definido comoTRUE
na consulta de entrada.ET_BQML_RESPONSE_FLATTEN_JSON
é preenchido quando o parâmetroFLATTEN_JSON_OUTPUT
é definido comoTRUE
na consulta de entrada.ET_BQML_RESPONSE_GROUNDING
é preenchido quando o parâmetroFLATTEN_JSON_OUTPUT
é definido comoTRUE
na consulta de entrada e o parâmetroGROUNDING_WITH_GOOGLE_SEARCH
também é definido comoTRUE
na consulta de entrada.
Acessar a fonte de embasamento
Para listar as fontes de fundamentação que o modelo usou para gerar as respostas,
use o método GET_GROUNDING_SOURCE
.
DATA(lt_query_grounding_sources) = lo_bq_generative_model->execute_query( io_query = lo_bq_query
)->get_grounding_source( ).