1. Introdução
Neste codelab, você vai usar o modelo Gemini Pro para fazer uma análise de sentimento em avaliações de produtos com o SDK ABAP para Google Cloud. Vamos mostrar as etapas para configurar a autenticação e acessar a API Vertex AI do Google Cloud usando tokens quando o sistema SAP está hospedado em uma instância de VM do Compute Engine.
Os serviços usados são:
- Compute Engine
- Serviços de rede
- Cloud Shell
- Vertex AI
O que você vai criar
Você vai fazer o seguinte:
- Configure o ABAP SDK instalado no sistema SAP para se conectar às APIs do Google.
- Crie um programa de exemplo de relatório para chamar o Gemini AI e realizar uma análise de sentimento nas avaliações de produtos.
2. Requisitos
- Um navegador, como o Chrome ou o Firefox
- Um projeto do Google Cloud com o faturamento ativado ou crie uma conta de teste sem custo financeiro de 90 dias para o Google Cloud Platform.
- A GUI do SAP (Windows ou Java) instalada no seu sistema. Se a GUI do SAP já estiver instalada no seu sistema, conecte-se ao SAP usando o endereço IP externo da VM como o IP do servidor de aplicativos. Se você estiver no Mac, também poderá instalar a GUI do SAP para Java disponível neste link.
3. Antes de começar
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud (por exemplo,
abap-sdk-poc).
- Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto. Pule esta etapa se você estiver usando a conta de teste sem custo financeiro de 90 dias.
- Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud. No console do Cloud, clique em Ativar o Cloud Shell no canto superior direito:
- Verifique se todas as APIs necessárias (API AM Service Account Credentials, API Vertex AI) estão ativadas.
- Execute os comandos a seguir para autenticar sua conta e definir o projeto padrão como
abap-sdk-poc
. A zonaus-west4-b
é usada como exemplo. Se necessário, mude o projeto e a zona nos comandos a seguir de acordo com sua preferência.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
PROJECT_NAME=abap-sdk-poc
REGION=us-west4
ZONE=us-west4-b
- Verifique se você tem acesso a um sistema SAP com o ABAP SDK for Google Cloud instalado com dados do SAP EPM.
- Consulte o codelab Instalar a versão de teste da plataforma ABAP no Google Cloud Platform e instalar o SDK do ABAP para configurar um novo sistema.
4. Criar uma conta de serviço e definir o papel de usuário da Vertex AI
- Execute o comando a seguir para criar uma conta de serviço, caso ela ainda não tenha sido criada.
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- Execute o comando a seguir para definir o papel de usuário da Vertex AI.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
--role=roles/aiplatform.user
5. Configurar chave do cliente
Faça login no sistema SAP. Se você estiver usando o sistema provisionado pelo codelab "Instalar a versão de teste da plataforma ABAP no Google Cloud Platform e instalar o SDK do ABAP", use o nome de usuário e a senha padrão provisionados para fazer login.
- Na GUI do SAP, insira o código da transação SPRO.
- Clique em IMG de referência SAP.
- Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.
- Clique em Novas entradas.
- Insira valores nos campos a seguir:
Campo | Descrição |
Nome da chave do Google Cloud | ABAP_SDK_DEMO |
Nome da conta de serviço do Google Cloud | abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com |
Escopo do Google Cloud | https://www.googleapis.com/auth/cloud-platform |
Identificador de projeto do Google Cloud | abap-sdk-poc |
Classe de autorização | /GOOG/CL_AUTH_GOOGLE. |
Deixe os outros campos em branco
6. Criar destino de RFC
Crie um destino RFC para a credencial do IAM e a API Vertex AI usando o código de transação SM59. Se necessário, consulte aqui as etapas detalhadas para criar um destino RFC.
Nome do destino do RFC | Host de destino (endpoint da API) | Observações |
ZGOOG_IAMCREDENTIALS |
| Este destino do RFC é destinado à API do IAM. |
ZGOOG_VERTEX_AI |
| Este destino RFC segmenta o endpoint us-central1 da API Vertex AI. |
- Na guia Configurações técnicas, insira os seguintes detalhes para o destino ZGOOG_IAMCREDENTIALS.
- Na guia Configurações técnicas, insira os seguintes detalhes para o destino ZGOOG_VERTEX_AI.
- No campo Certificado SSL, verifique se a opção Cliente SSL PADRÃO (padrão) está selecionada para os dois destinos RFC.
7. Configurar o mapeamento de serviços
Para configurar a tabela de mapeamento de serviço para a API IAM e a API Vertex AI, siga estas etapas:
- Na GUI do SAP, insira o código da transação SPRO.
- Clique em IMG de referência SAP.
- Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar mapeamento de serviços.
- Clique em Novas entradas para a credencial do IAM e a API Vertex AI e atualize os destinos RFC conforme mostrado abaixo.
8. Validar configuração
Para validar a configuração da autenticação, execute as seguintes etapas:
- Na GUI do SAP, insira o código da transação SPRO.
- Clique em IMG de referência SAP.
- Clique em ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration.
- Insira o nome da chave do cliente como
ABAP_SDK_DEMO
. - Clique em Executar para verificar se o fluxo geral foi configurado.
- Uma marca de seleção verde na coluna "Resultado" indica que todas as etapas de configuração foram concluídas com êxito.
9. Estudar os dados de avaliações do produto
A versão de teste da plataforma ABAP vem pré-instalada com o SAP Enterprise Procurement Model (EPM), um aplicativo completo fornecido pela SAP para fins de demonstração e teste. As avaliações de produtos que serão usadas para análise de sentimento são armazenadas na tabela SNWD_REV_ITEM.
É possível conferir os dados da tabela usando a Tcode: SE16. Vamos usar o texto de amostra do campo "RATING_TEXT".
Se quiser, acesse os dados no aplicativo "Gerenciar produtos" no Fiori Launchpad (TCode: /UI2/FLP).
A captura de tela a seguir mostra a lista de produtos.
Clique no produto para conferir a classificação e exemplos de avaliações.
Na próxima seção, vamos usar essas amostras de avaliações de produtos para analisar o sentimento usando o LLM do Google.
10. Analisar sentimentos usando o Vertex AI Studio
- Abra o painel da Vertex AI e selecione Idioma em "Vertex AI Studio".
- Crie um novo comando de texto.
- Confirme a seleção do modelo Gemini Pro.
- No editor, insira o seguinte comando para instruir o modelo a analisar o sentimento do cliente na avaliação do produto.
- Clique em Enviar para gerar a resposta do modelo.
Comando:
What's the Customer sentiment in the below product review
Horrible! Unsatisfied in every way! The description is wrong. I sent it back. I want my money back! It is so horrible that I can't even believe it! Too expensive for what I received. I'd expect a little more durability. No instructions included for use or installation. I'm actually really surprised by the positive reviews, which I relied on when ordering. Called customer service..no answer. Looks better than it works. The Worst I have ever seen! Honestly I have no clue what you had in mind when choosing to offer this product. Not sure if I should even post one star.... It broke after 1 day. Poor Quality. Didn't work, that is why I cannot recommend this product.
Os dados de avaliação da tabela "SNWD_REV_ITEM" podem ser usados para testar o modelo com mais comandos.
11. Criar um programa de relatório para chamar o modelo Gemini Pro
Nesta etapa, vamos chamar o modelo Gemini Pro do ABAP para realizar a análise de sentimento das avaliações de produtos. Para fins de demonstração, o programa vai selecionar até 10 avaliações de produtos e usar o SDK do ABAP para chamar o modelo Gemini Pro e determinar o sentimento de cada avaliação. Com base na análise, o modelo pode retornar valores como "Positivo", "Negativo", "Neutro" ou "Misto".
- Faça login no sistema SAP.
- Acesse o código de transação SE38 e crie um programa de relatório com o nome ZSENTIMENT_ANALYSIS.
- No pop-up que abrir, forneça os detalhes conforme mostrado abaixo e clique em Salvar.
- No próximo pop-up, selecione Objeto local ou forneça um nome de pacote, conforme apropriado.
REPORT zsentiment_analysis.
DATA lo_client TYPE REF TO /goog/cl_aiplatform_v1.
DATA lv_p_projects_id TYPE string.
DATA lv_p_locations_id TYPE string.
DATA lv_p_publishers_id TYPE string.
DATA lv_p_models_id TYPE string.
DATA ls_input TYPE /goog/cl_aiplatform_v1=>ty_726.
DATA ls_output TYPE /goog/cl_aiplatform_v1=>ty_727.
DATA lv_ret_code TYPE i.
DATA lv_err_text TYPE string.
DATA ls_err_resp TYPE /goog/err_resp.
DATA lv_msg TYPE string.
DATA lo_exception TYPE REF TO /goog/cx_sdk.
DATA es_raw TYPE string.
TYPES:
BEGIN OF t_reviews,
product_id TYPE snwd_product_id,
sentiment TYPE string,
rating_text TYPE snwd_rating_text,
END OF t_reviews.
DATA lt_reviews TYPE STANDARD TABLE OF t_reviews WITH DEFAULT KEY.
FIELD-SYMBOLS <fs_review> TYPE t_reviews.
TRY.
" Open HTTP Connection
lo_client = NEW #( iv_key_name = 'ABAP_SDK_DEMO' ).
" Populate relevant parameters
lv_p_projects_id = lo_client->gv_project_id.
lv_p_locations_id = 'us-central1'.
lv_p_publishers_id = 'google'.
lv_p_models_id = 'gemini-1.0-pro'.
SELECT a~product_id AS product_id c~rating_text
FROM ( ( snwd_pd AS a
INNER JOIN snwd_rev_head AS b ON a~node_key = b~entity_key )
INNER JOIN snwd_rev_item AS c ON b~node_key = c~parent_key )
INTO CORRESPONDING FIELDS OF TABLE lt_reviews UP TO 10 ROWS.
LOOP AT lt_reviews ASSIGNING <fs_review>.
" Construct the prompt
DATA(lv_prompt) = |DO NOT EXPLAIN and your response should not have more than one word.| &&
|Classify the overall sentiment of this product review as ONLY ONE of| &&
| the following: Positive, Negative, Neutral, or Mixed.| &&
cl_abap_char_utilities=>newline &&
<fs_review>-rating_text.
" Set the Model Parameters and Prompt
ls_input = VALUE #( generation_config = VALUE #( max_output_tokens = 10
temperature = '0.2'
top_p = '0.8'
top_k = '40' )
contents = VALUE #( ( role = 'user'
parts = VALUE #( ( text = lv_prompt ) ) ) ) ).
" Call Gemini Pro to identify sentiments.
lo_client->generate_content_models( EXPORTING iv_p_projects_id = lv_p_projects_id
iv_p_locations_id = lv_p_locations_id
iv_p_publishers_id = lv_p_publishers_id
iv_p_models_id = lv_p_models_id
is_input = ls_input
IMPORTING
es_output = ls_output
ev_ret_code = lv_ret_code
ev_err_text = lv_err_text
es_err_resp = ls_err_resp ).
IF lo_client->is_success( lv_ret_code ) = abap_true.
LOOP AT ls_output-candidates INTO DATA(ls_candidate).
LOOP AT ls_candidate-content-parts INTO DATA(ls_part).
<fs_review>-sentiment = ls_part-text.
EXIT.
ENDLOOP.
EXIT.
ENDLOOP.
ELSE.
MESSAGE lv_err_text TYPE 'E'.
ENDIF.
ENDLOOP.
cl_demo_output=>display( lt_reviews ).
" Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO lo_exception.
lv_msg = lo_exception->get_text( ).
MESSAGE lv_msg TYPE 'E'.
ENDTRY.
- Execute o programa para conferir a análise de sentimento do texto da avaliação.
12. Parabéns
Parabéns! Você desenvolveu um programa de amostra para realizar análises de sentimento usando a IA do Gemini Pro com o ABAP SDK for Google Cloud.
13. Limpar
Se você não quiser continuar com os outros codelabs relacionados ao ABAP SDK for Google Cloud, faça a limpeza.
Excluir o projeto
- Exclua o projeto do Google Cloud:
gcloud projects delete abap-sdk-poc
Excluir recursos individuais
- Exclua as entradas de configuração da chave do cliente em IMG > Google Cloud > Configurações básicas > Configurar chave do cliente.
- Exclua as entradas de configuração do mapeamento de serviços em IMG > Google Cloud > Configurações básicas > Configurar chave do cliente.
- Exclua os destinos RFC ZGOOG_IAMCREDENTIALS e ZGOOG_VERTEX_AI.
- Excluir o programa de relatórios
ZSENTIMENT_ANALYSIS
.
- Exclua a conta de serviço.
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com