Análise de sentimento usando o Gemini AI com o SDK do ABAP

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:
  • 6757b2fb50ddcc2d.png
  • 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 zona us-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

4. Criar uma conta de serviço e definir o papel do usuário da Vertex AI

  1. 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"
  1. 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.

  1. Na GUI do SAP, insira o código de transação SPRO.
  2. Clique em IMG de referência SAP.
  3. Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.
  4. Clique em Novas entradas.
  5. 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

c72e71da6fd75b29.png

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

  • Host: iamcredentials.googleapis.com
  • Caminho: Prefixo: /v1/
  • Porta: 443
  • SSL: ativo

Este destino do RFC é destinado à API do IAM.

ZGOOG_VERTEX_AI

  • Host: us-central1-aiplatform.googleapis.com
  • Porta: 443
  • SSL: ATIVO

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.

e670c6a91acba40f.png

  • Na guia Configurações técnicas, insira os detalhes a seguir para o destino ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • No campo Certificado SSL, verifique se a opção Cliente SSL PADRÃO (padrão) está selecionada para os dois destinos RFC.

b6370d12bd332318.png

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:

  1. Na GUI do SAP, insira o código de transação SPRO.
  2. Clique em IMG de referência SAP.
  3. Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar mapeamento de serviços.
  4. Clique em Novas entradas para a credencial do IAM e a API Vertex AI e atualize os destinos RFC conforme mostrado abaixo.

e7cc1429a4fe3a04.png

8. Validar configuração

Para validar a configuração da autenticação, execute as seguintes etapas:

  1. Na GUI do SAP, insira o código de transação SPRO.
  2. Clique em IMG de referência SAP.
  3. Clique em ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration.
  4. Insira o nome da chave de cliente como ABAP_SDK_DEMO.
  5. Clique em Executar para verificar se o fluxo geral foi configurado.
  6. Uma marca de seleção verde na coluna "Result" indica que todas as etapas de configuração foram concluídas com êxito.

d7285e64e22c25b6.png

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".

2bae72d437ea639.png

Também é possível visualizar os dados acessando o aplicativo "Manager Products" do Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

A captura de tela abaixo mostra a lista de produtos.

f822f9ab71d37a9.png

Clique no produto para conferir a classificação dele e exemplos de avaliações.

69fe380d5ca7b276.png

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

  1. Abra o painel da Vertex AI e selecione Idioma em "Vertex AI Studio".
  2. Crie um novo comando de texto.

8ce4c928c75174d7.png

  1. Confirme a seleção do modelo Gemini Pro.
  2. No editor, insira o comando a seguir para instruir o modelo a analisar o sentimento do cliente na avaliação do produto.
  3. 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.

fd245c204144484.png

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".

  1. Faça login no seu sistema SAP.
  2. Acesse o código da transação SE38 e crie um Programa de relatórios com o nome ZSENTIMENT_ANALYSIS.
  3. No pop-up que aparece, forneça os detalhes conforme mostrado abaixo e clique em Salvar.

a2158523ec8ef3c7.png

  1. 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.

  1. Execute o programa para conferir a análise de sentimento do texto.

4d869f1b8436b9ca.png

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

  1. Exclua as entradas de configuração da chave de cliente acessando IMG > Google Cloud > Configurações básicas > Configurar chave de cliente.
  2. Exclua as entradas de configuração do Mapeamento de serviço acessando IMG > Google Cloud > Configurações básicas > Configurar chave de cliente.
  3. Exclua os destinos RFC ZGOOG_IAMCREDENTIALS e ZGOOG_VERTEX_AI.
  4. Exclua o programa de relatórios ZSENTIMENT_ANALYSIS.
  5. Exclua a conta de serviço.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com