Analisi del sentiment utilizzando Gemini AI con l'SDK ABAP

1. Introduzione

In questo codelab utilizzerai il modello Gemini Pro per eseguire l'analisi del sentiment sulle recensioni dei prodotti con l'SDK ABAP per Google Cloud. Esamineremo i passaggi per configurare l'autenticazione per accedere all'API Vertex AI di Google Cloud utilizzando i token quando il sistema SAP è ospitato su un'istanza VM Compute Engine.

L'elenco dei servizi utilizzati è il seguente:

  • Compute Engine
  • Servizi di rete
  • Cloud Shell
  • Vertex AI

Cosa creerai

Dovrai eseguire le seguenti operazioni:

  • Configura l'SDK ABAP installato sul sistema SAP per connetterti alle API di Google.
  • Crea un programma di report di esempio per chiamare l'AI di Gemini ed eseguire l'analisi del sentiment sulle recensioni dei prodotti.

2. Requisiti

  • Un browser, ad esempio Chrome o Firefox.
  • Un progetto Google Cloud con la fatturazione abilitata o crea un account di prova senza costi di 90 giorni per la piattaforma Google Cloud.
  • SAP GUI (Windows o Java) installato nel sistema. Se SAP GUI è già installato sul tuo sistema, connettiti a SAP utilizzando l'indirizzo IP esterno della VM come indirizzo IP del server di applicazioni. Se utilizzi un Mac, puoi anche installare SAP GUI per Java disponibile in questo link.

3. Prima di iniziare

  • Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud (ad es. abap-sdk-poc).
  • Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è attivata per un progetto. Ignora questo passaggio se utilizzi l'account per la prova senza costi di 90 giorni.
  • Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud. In Cloud Console, fai clic su Attiva Cloud Shell nell'angolo in alto a destra:
  • 6757b2fb50ddcc2d.png
  • Assicurati che tutte le API necessarie (API IAM Service Account Credentials, API Vertex AI) siano abilitate.
  • Esegui i seguenti comandi per autenticarti per il tuo account e impostare il progetto predefinito su abap-sdk-poc. La zona us-west4-b viene utilizzata come esempio. Se necessario, modifica il progetto e la zona nei comandi seguenti in base alle tue preferenze.
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. Crea un account di servizio e imposta il ruolo utente Vertex AI

  1. Esegui il seguente comando per creare un account di servizio (se non è già stato creato).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Esegui il seguente comando per impostare il ruolo Vertex AI User.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
    --member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
    --role=roles/aiplatform.user

5. Configura la chiave client

Accedi al sistema SAP. Se utilizzi il sistema di cui è stato eseguito il provisioning dal codelab "Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK", utilizza il nome utente e la password predefiniti di cui è stato eseguito il provisioning per accedere.

  1. In SAP GUI, inserisci il codice transazione SPRO.
  2. Fai clic su SAP Reference IMG (Immagine di riferimento SAP).
  3. Fai clic su SDK ABAP per Google Cloud > Impostazioni di base > Configura chiave client.
  4. Fai clic su Nuove voci.
  5. Inserisci i valori per i seguenti campi:

Campo

Descrizione

Nome della chiave Google Cloud

ABAP_SDK_DEMO

Nome dell'account di servizio Google Cloud

abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com

Ambito Google Cloud

https://www.googleapis.com/auth/cloud-platform

Identificatore del progetto Google Cloud

abap-sdk-poc

Classe di autorizzazione

/GOOG/CL_AUTH_GOOGLE.

Lascia vuoti gli altri campi

c72e71da6fd75b29.png

6. Creare una destinazione RFC

Crea la destinazione RFC per la credenziale IAM e l'API Vertex AI utilizzando il codice transazione SM59. Se necessario, consulta questa pagina per i passaggi dettagliati sulla creazione di una destinazione RFC.

Nome della destinazione RFC

Host target (endpoint API)

Note

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Percorso: prefisso: /v1/
  • Porta: 443
  • SSL: attivo

Questa destinazione RFC ha come target l'API IAM.

ZGOOG_VERTEX_AI

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

Questa destinazione RFC ha come target l'endpoint us-central1 dell'API Vertex AI.

  • Nella scheda Impostazioni tecniche, inserisci i seguenti dettagli per la destinazione ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • Nella scheda Impostazioni tecniche, inserisci i seguenti dettagli per la destinazione ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • Per il campo SSL Certificate (Certificato SSL), assicurati che sia selezionata l'opzione DEFAULT SSL Client (Standard) (Client SSL predefinito (standard)) per entrambe le destinazioni RFC.

b6370d12bd332318.png

7. Configura la mappatura dei servizi

Per configurare la tabella di mappatura dei servizi per l'API IAM e l'API Vertex AI, svolgi i seguenti passaggi:

  1. In SAP GUI, inserisci il codice transazione SPRO.
  2. Fai clic su SAP Reference IMG (Immagine di riferimento SAP).
  3. Fai clic su ABAP SDK for Google Cloud > Impostazioni di base > Configura mappatura dei servizi.
  4. Fai clic su Nuove voci per la credenziale IAM e l'API Vertex AI e aggiorna le destinazioni RFC come mostrato di seguito.

e7cc1429a4fe3a04.png

8. Convalida la configurazione

Per convalidare la configurazione dell'autenticazione, svolgi i seguenti passaggi:

  1. In SAP GUI, inserisci il codice transazione SPRO.
  2. Fai clic su SAP Reference IMG (Immagine di riferimento SAP).
  3. Fai clic su ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration (SDK ABAP per Google Cloud > Utilità > Convalida configurazione autenticazione).
  4. Inserisci il nome della chiave client come ABAP_SDK_DEMO.
  5. Fai clic su Esegui per verificare se il flusso complessivo è configurato correttamente.
  6. Un segno di spunta verde nella colonna Risultato indica che tutti i passaggi di configurazione sono stati completati correttamente.

d7285e64e22c25b6.png

9. Studiare i dati delle recensioni prodotto

La versione di prova della piattaforma ABAP è preinstallata con il modello SAP Enterprise Procurement Model (EPM), un'applicazione end-to-end fornita da SAP a scopo dimostrativo e di test. Le recensioni dei prodotti che verranno utilizzate per l'analisi del sentiment sono memorizzate nella tabella SNWD_REV_ITEM.

Puoi visualizzare i dati della tabella utilizzando il codice T: SE16. Utilizzeremo il testo di esempio del campo "RATING_TEXT".

2bae72d437ea639.png

Se vuoi, puoi anche visualizzare i dati accedendo all'applicazione "Gestisci prodotti" da Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

Lo screenshot seguente mostra l'elenco dei prodotti.

f822f9ab71d37a9.png

Fai clic sul prodotto per visualizzarne la valutazione e alcune recensioni di esempio.

69fe380d5ca7b276.png

Nella sezione successiva, utilizzeremo queste recensioni di prodotti di esempio per analizzare il sentiment utilizzando il modello LLM di Google.

10. Analizzare il sentiment utilizzando Vertex AI Studio

  1. Apri la dashboard di Vertex AI, seleziona Lingua in Vertex AI Studio.
  2. Crea un nuovo prompt di testo.

8ce4c928c75174d7.png

  1. Conferma la selezione del modello Gemini Pro.
  2. Nell'editor, inserisci il seguente prompt per indicare al modello di analizzare il sentiment dei clienti nella recensione del prodotto.
  3. Fai clic su Invia per generare la risposta del modello.

Prompt:

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

I dati della revisione della tabella "SNWD_REV_ITEM" possono essere utilizzati per testare il modello con prompt aggiuntivi.

11. Crea un programma di report per chiamare il modello Gemini Pro

In questo passaggio, chiameremo il modello Gemini Pro da ABAP per eseguire l'analisi del sentiment delle recensioni prodotto. A scopo dimostrativo, il programma selezionerà fino a 10 recensioni prodotto e utilizzerà l'SDK ABAP per chiamare il modello Gemini Pro al fine di determinare il sentiment per recensione. In base alla sua analisi, il modello può restituire valori come "Positivo", "Negativo", "Neutro" o "Misto".

  1. Accedi al sistema SAP.
  2. Vai al codice transazione SE38 e crea un programma report denominato ZSENTIMENT_ANALYSIS.
  3. Nella finestra popup visualizzata, fornisci i dettagli come mostrato di seguito e fai clic su Salva.

a2158523ec8ef3c7.png

  1. Nel popup successivo, seleziona Oggetto locale o fornisci un nome del pacchetto, a seconda dei casi.
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. Esegui il programma per visualizzare l'analisi del sentiment del testo della recensione.

4d869f1b8436b9ca.png

12. Complimenti

Complimenti! Hai sviluppato un programma di esempio per eseguire l'analisi del sentiment utilizzando l'AI di Gemini Pro con l'SDK ABAP per Google Cloud.

13. Esegui la pulizia

Se non vuoi continuare con i codelab aggiuntivi relativi all'SDK ABAP per Google Cloud, procedi con la pulizia.

Elimina il progetto

  • Elimina il progetto Google Cloud:
gcloud projects delete abap-sdk-poc

Eliminare singole risorse

  1. Elimina le voci di configurazione della chiave client in IMG > Google Cloud > Impostazioni di base > Configura chiave client.
  2. Elimina le voci di configurazione della mappatura dei servizi in IMG > Google Cloud > Impostazioni di base > Configura chiave client.
  3. Elimina le destinazioni RFC ZGOOG_IAMCREDENTIALS e ZGOOG_VERTEX_AI.
  4. Elimina il programma di generazione di report ZSENTIMENT_ANALYSIS.
  5. Elimina l'account di servizio.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com