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álises de sentimento em avaliações de produtos com o SDK ABAP para Google Cloud. Vamos mostrar as etapas para configurar a autenticação para acessar a API Google Cloud Vertex AI usando tokens quando o sistema SAP estiver hospedado em uma instância de VM do Compute Engine.

A lista de serviços usados é a seguinte:

  • Compute Engine
  • Serviços de rede
  • Cloud Shell
  • Vertex AI

O que você vai criar

Você vai fazer o seguinte:

  • Configure o SDK ABAP instalado no sistema SAP para se conectar às APIs do Google.
  • Crie um programa de exemplo para chamar a IA Gemini e realizar a 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.
  • GUI do SAP (Windows ou Java) instalado no sistema. Se a SAP GUI 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 usando um 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 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 executado 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 Service Account Credentials do IAM e API Vertex AI) estão ativas.
  • Execute os comandos a seguir para fazer a autenticação da sua conta e definir o projeto padrão como abap-sdk-poc. A zona us-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

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 (se ela ainda não tiver sido criada).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Execute o comando a seguir 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 Instalar o teste da plataforma ABAP no Google Cloud Platform e instalar o SDK ABAP, use o nome de usuário e a senha provisionados padrão para fazer login.

  1. Na GUI do SAP, insira o código da 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.

Deixe os outros campos em branco

c72e71da6fd75b29.png

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 este link para conferir as etapas detalhadas de 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 do 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.

e670c6a91acba40f.png

  • Na guia Configurações técnicas, insira os seguintes detalhes 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 do RFC.

b6370d12bd332318.png

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:

  1. Na GUI do SAP, insira o código da 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 a configuração

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

  1. Na GUI do SAP, insira o código da 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 do 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 "Resultado" indica que todas as etapas de configuração foram concluídas.

d7285e64e22c25b6.png

9. Estudar os dados de avaliações do produto

O teste da plataforma ABAP vem pré-instalado com o modelo de compras corporativas (EPM, na sigla em inglês) da SAP, um aplicativo completo fornecido pela SAP para fins de demonstração e teste. As avaliações de produtos que serão usadas para a análise de sentimento são armazenadas na tabela SNWD_REV_ITEM.

Você pode conferir os dados da tabela usando o código T: SE16. Vamos usar o texto de exemplo do campo "RATING_TEXT".

2bae72d437ea639.png

Como alternativa, você também pode acessar os dados acessando o aplicativo "Manager Products" no Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

A captura de tela a seguir mostra a lista de produtos.

f822f9ab71d37a9.png

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

69fe380d5ca7b276.png

Na próxima seção, vamos usar esses exemplos de avaliações de produtos para analisar o sentimento usando o LLM do Google.

10. Analisar o sentimento usando o Vertex AI Studio

  1. Abra o Painel da Vertex AI e selecione Idioma no 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 seguinte comando 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 de revisão da tabela "SNWD_REV_ITEM" podem ser usados para testar o modelo com outras instruções.

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 do produto. Para fins de demonstração, o programa vai selecionar até 10 avaliações de produtos e usar o SDK 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 "Misto".

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

a2158523ec8ef3c7.png

  1. No próximo pop-up, selecione Objeto local ou informe 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 da avaliação.

4d869f1b8436b9ca.png

12. Parabéns

Parabéns! Você desenvolveu um programa de exemplo para realizar análises de sentimento usando a IA Gemini Pro com o SDK ABAP for Google Cloud.

13. Limpar

Se você não quiser continuar com os outros codelabs relacionados ao SDK ABAP para Google Cloud, prossiga com 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 do cliente em IMG > Google Cloud > Configurações básicas > Configurar chave do cliente.
  2. Exclua as entradas de configuração do mapeamento de serviços em IMG > Google Cloud > Configurações básicas > Configurar chave do cliente.
  3. Exclua os destinos RFC ZGOOG_IAMCREDENTIALS e ZGOOG_VERTEX_AI.
  4. Excluir o programa de relatório ZSENTIMENT_ANALYSIS.
  5. Exclua a conta de serviço.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com