1. Introdução
Neste codelab, você vai usar o modelo Gemini Pro para realizar análise de sentimento em avaliações de produtos com o SDK do ABAP para Google Cloud. Você vai aprender a configurar a autenticação para acessar a API Vertex AI do Google Cloud usando tokens quando seu sistema SAP estiver hospedado em uma instância de VM do Compute Engine.
A lista de serviços usados é:
- Compute Engine
- Serviços de rede
- Cloud Shell
- Vertex AI
O que você vai criar
Você vai fazer o seguinte:
- Configure o SDK do ABAP instalado no sistema SAP para se conectar às APIs do Google.
- Crie um exemplo de programa de relatório para chamar a IA do Gemini e fazer análise de sentimento nas avaliações do produto.
2. Requisitos
- Um navegador, como o Chrome ou o Firefox
- Um projeto do Google Cloud com faturamento ativado ou crie uma conta de teste sem custo financeiro de 90 dias no Google Cloud Platform.
- GUI do SAP (Windows ou Java) instalada no sistema. Se a GUI do SAP já estiver instalada no sistema, conecte-se ao SAP usando o endereço IP externo da VM como o IP do servidor de aplicativos. No Mac, você também pode instalar a GUI do SAP para Java, disponível neste link.
3. Antes de começar
- No console do Google Cloud, na página do 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 em execução 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, altere 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 SDK do ABAP para o Google Cloud instalado com dados do SAP EPM.
- Consulte o codelab " Instale o teste da plataforma do ABAP no Google Cloud Platform e instale o SDK do ABAP" para configurar um novo sistema.
4. Criar uma conta de serviço e definir o papel do usuário da Vertex AI
- Execute o comando a seguir para criar uma conta de serviço, caso ainda não tenha feito isso.
gcloud iam service-accounts create abap-sdk-dev \
--description="ABAP SDK Dev Account" \
--display-name="ABAP SDK Dev Account"
- Execute o comando abaixo para definir a função 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 " Instale o teste da plataforma do ABAP no Google Cloud Platform e instale o SDK do ABAP", depois use o nome de usuário e a senha padrão provisionados para fazer login.
- Na GUI do SAP, insira o código de 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. |
Deixar os outros campos em branco
6. Criar destino 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 a criação de 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 tem como alvo o endpoint us-central1 da API Vertex AI. |
- Na guia Configurações técnicas, insira os detalhes a seguir para o destino ZGOOG_IAMCREDENTIALS.
- Na guia Configurações técnicas, insira os detalhes a seguir 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ços para a API IAM e a API Vertex AI, siga estas etapas:
- Na GUI do SAP, insira o código de 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 de 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 de cliente como
ABAP_SDK_DEMO
. - Clique em Executar para verificar se o fluxo geral foi configurado.
- Uma marca de seleção verde na coluna "Result" indica que todas as etapas de configuração foram concluídas com êxito.
9. Estudar os dados de avaliações do produto
O teste da plataforma ABAP vem pré-instalado com o SAP Enterprise Procurement Model (EPM), um aplicativo completo fornecido pela SAP para fins de demonstração e teste. As avaliações do produto que serão utilizadas na análise de sentimento são armazenadas na tabela SNWD_REV_ITEM.
Você pode visualizar os dados da tabela usando Tcode: SE16. Usaremos o texto de exemplo do campo "RATING_TEXT".
Também é possível visualizar os dados acessando o aplicativo "Manager Products" do Fiori Launchpad (TCode: /UI2/FLP).
A captura de tela abaixo mostra a lista de produtos.
Clique no produto para conferir a classificação dele e exemplos de avaliações.
Na próxima seção, vamos usar esses exemplos de análises 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 comando a seguir 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 das avaliações da tabela "SNWD_REV_ITEM" pode ser usada para testar o modelo com outros comandos.
11. Criar um programa de relatórios para chamar o modelo Gemini Pro
Nesta etapa, vamos chamar o modelo Gemini Pro do ABAP para realizar a análise de sentimento nas avaliações do produto. Para fins de demonstração, o programa vai selecionar até 10 avaliações do produto e usar o SDK do ABAP para chamar o modelo Gemini Pro e determinar o sentimento por avaliação. Com base na análise, o modelo pode retornar valores como "Positivo", "Negativo", "Neutro". ou "Mistos".
- Faça login no seu sistema SAP.
- Acesse o código da transação SE38 e crie um Programa de relatórios com o nome ZSENTIMENT_ANALYSIS.
- No pop-up que aparece, 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.
12. Parabéns
Parabéns! Você desenvolveu um programa de amostra para realizar análise de sentimento usando o Gemini Pro AI com o SDK do ABAP para Google Cloud.
13. Limpar
Caso não queira continuar com outros codelabs relacionados ao SDK do ABAP para 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 de cliente acessando IMG > Google Cloud > Configurações básicas > Configurar chave de cliente.
- Exclua as entradas de configuração do Mapeamento de serviço acessando IMG > Google Cloud > Configurações básicas > Configurar chave de cliente.
- Exclua os destinos RFC ZGOOG_IAMCREDENTIALS e ZGOOG_VERTEX_AI.
- Exclua 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