Sentimentanalyse mit Gemini AI und ABAP SDK

1. Einführung

In diesem Codelab verwenden Sie das Gemini Pro-Modell, um mit dem ABAP SDK for Google Cloud eine Sentimentanalyse von Rezensionen durchzuführen. Wir zeigen Ihnen Schritt für Schritt, wie Sie die Authentifizierung einrichten, um mit Tokens auf die Google Cloud Vertex AI API zuzugreifen, wenn Ihr SAP-System auf einer Compute Engine-VM-Instanz gehostet wird.

Folgende Dienste werden verwendet:

  • Compute Engine
  • Netzwerkdienste
  • Cloud Shell
  • Vertex AI

Aufgaben

Sie werden Folgendes tun:

  • Konfigurieren Sie das auf dem SAP-System installierte ABAP SDK, um eine Verbindung zu Google APIs herzustellen.
  • Erstellen Sie ein Beispielberichtsprogramm, um Gemini AI aufzurufen und eine Sentimentanalyse für Rezensionen durchzuführen.

2. Voraussetzungen

  • Ein Browser wie Chrome oder Firefox
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung oder erstellen Sie ein kostenloses 90-tägiges Testkonto für die Google Cloud Platform.
  • Auf Ihrem System installiertes SAP GUI (Windows oder Java). Wenn SAP GUI bereits auf Ihrem System installiert ist, stellen Sie eine Verbindung zu SAP her. Verwenden Sie dazu die externe IP-Adresse der VM als IP-Adresse des Anwendungsservers. Wenn Sie einen Mac verwenden, können Sie auch das SAP GUI für Java installieren.

3. Hinweis

  • Wählen Sie in der Google Cloud Console auf der Seite für die Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines, z. B. abap-sdk-poc)..
  • Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Hier erfahren Sie, wie Sie prüfen, ob die Abrechnung für ein Projekt aktiviert ist. Überspringen Sie diesen Schritt, wenn Sie das 90-tägige kostenlose Testkonto verwenden.
  • Sie verwenden Cloud Shell, eine Befehlszeilenumgebung, die in Google Cloud ausgeführt wird. Klicken Sie in der Cloud Console rechts oben auf Cloud Shell aktivieren:
  • 6757b2fb50ddcc2d.png
  • Prüfen Sie, ob alle erforderlichen APIs (AM Service Account Credentials API, Vertex AI API) aktiviert sind.
  • Führen Sie die folgenden Befehle aus, um sich bei Ihrem Konto zu authentifizieren und das Standardprojekt auf abap-sdk-poc festzulegen. Als Beispiel dient Zone us-west4-b. Ändern Sie bei Bedarf das Projekt und die Zone in den folgenden Befehlen nach Bedarf.
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. Dienstkonto erstellen und Vertex AI-Nutzerrolle festlegen

  1. Führen Sie den folgenden Befehl aus, um ein Dienstkonto zu erstellen (falls noch nicht vorhanden).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Führen Sie den folgenden Befehl aus, um die Rolle Vertex AI User festzulegen.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
    --member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
    --role=roles/aiplatform.user

5. Clientschlüssel konfigurieren

Melden Sie sich im SAP-System an. Wenn Sie das von Codelab bereitgestellte System verwenden, Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK“. Verwenden Sie dann den standardmäßig bereitgestellten Nutzernamen und das zugehörige Passwort zur Anmeldung.

  1. Geben Sie auf der SAP-GUI den Transaktionscode SPRO ein.
  2. Klicken Sie auf SAP-Referenz-IMG.
  3. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren.
  4. Klicken Sie auf Neue Einträge.
  5. Geben Sie Werte für die folgenden Felder ein:

Feld

Beschreibung

Google Cloud-Schlüsselname

ABAP_SDK_DEMO

Name des Google Cloud-Dienstkontos

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

Google Cloud-Bereich

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

Google Cloud-Projekt-ID

abap-sdk-poc

Autorisierungsklasse

/GOOG/CL_AUTH_GOOGLE

Lassen Sie die anderen Felder leer.

c72e71da6fd75b29.png

6. RFC-Ziel erstellen

Erstellen Sie mit dem Transaktionscode SM59 ein RFC-Ziel für IAM-Anmeldedaten und die Vertex AI API. Eine detaillierte Anleitung zum Erstellen eines RFC-Ziels finden Sie hier.

Name des RFC-Ziels

Zielhost (API-Endpunkt)

Hinweise

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Pfad: Präfix: /v1/
  • Anschluss: 443
  • SSL: aktiv

Dieses RFC-Ziel zielt auf die IAM API ab.

ZGOOG_VERTEX_AI

  • Host: us-central1-aiplatform.googleapis.com
  • Anschluss: 443
  • SSL: AKTIV

Dieses RFC-Ziel ist auf den Endpunkt „us-central1“ der Vertex AI API ausgerichtet.

  • Geben Sie auf dem Tab Technical Settings (Technische Einstellungen) die folgenden Informationen für das Ziel „ZGOOG_IAMCREDENTIALS“ ein.

e670c6a91acba40f.png

  • Geben Sie auf dem Tab Technische Einstellungen die folgenden Informationen für das Ziel „ZGOOG_VERTEX_AI“ ein.

5c584aaed5c110f2.png

  • Achten Sie darauf, dass im Feld SSL-Zertifikat für beide RFC-Ziele die Option STANDARD SSL-Client (Standard) ausgewählt ist.

b6370d12bd332318.png

7. Dienstzuordnung konfigurieren

Führen Sie die folgenden Schritte aus, um die Dienstzuordnungstabelle für die IAM API und die Vertex AI API zu konfigurieren:

  1. Geben Sie auf der SAP-GUI den Transaktionscode SPRO ein.
  2. Klicken Sie auf SAP-Referenz-IMG.
  3. Klicken Sie auf ABAP SDK for Google Cloud > Grundlegende Einstellungen > Dienstzuordnung konfigurieren.
  4. Klicken Sie für IAM-Anmeldedaten und Vertex AI API auf Neue Einträge und aktualisieren Sie die RFC-Ziele wie unten gezeigt.

e7cc1429a4fe3a04.png

8. Konfiguration validieren

Führen Sie die folgenden Schritte aus, um die Authentifizierungskonfiguration zu validieren:

  1. Geben Sie auf der SAP-GUI den Transaktionscode SPRO ein.
  2. Klicken Sie auf SAP-Referenz-IMG.
  3. Klicken Sie auf ABAP SDK for Google Cloud > Dienstprogramme > Authentifizierungskonfiguration validieren.
  4. Geben Sie den Namen des Clientschlüssels als ABAP_SDK_DEMO ein.
  5. Klicken Sie auf Ausführen, um zu prüfen, ob der gesamte Ablauf erfolgreich konfiguriert wurde.
  6. Ein grünes Häkchen in der Ergebnisspalte zeigt an, dass alle Konfigurationsschritte erfolgreich abgeschlossen wurden.

d7285e64e22c25b6.png

9. Rezensionsdaten analysieren

Im Testzeitraum für die ABAP-Plattform ist das SAP Enterprise Procurement Model (EPM) vorinstalliert, eine von SAP zu Demonstration- und Testzwecken bereitgestellte End-to-End-Anwendung. Die für die Sentimentanalyse verwendeten Rezensionen sind in der Tabelle SNWD_REV_ITEM gespeichert.

Sie können die Tabellendaten mit Tcode SE16 ansehen. Wir verwenden den Beispieltext aus dem Feld "RATING_TEXT".

2bae72d437ea639.png

Optional können Sie die Daten auch ansehen, indem Sie auf die Anwendung "Produkte verwalten" zugreifen. vom Fiori Launchpad aus (TCode: /UI2/FLP).

f9792a91ef9f0736.png

Der folgende Screenshot zeigt die Liste der Produkte.

f822f9ab71d37a9.png

Klicken Sie auf das Produkt, um die Produktbewertung und Beispielrezensionen anzusehen.

69fe380d5ca7b276.png

Im nächsten Abschnitt verwenden wir diese Beispielrezensionen, um die Stimmung mithilfe von Google LLM zu analysieren.

10. Sentiment mit Vertex AI Studio analysieren

  1. Öffnen Sie das Vertex AI-Dashboard und wählen Sie unter Vertex AI Studio die Option Sprache aus.
  2. Erstellen Sie einen neuen Text-Prompt.

8ce4c928c75174d7.png

  1. Bestätigen Sie die Auswahl des Gemini Pro-Modells.
  2. Geben Sie im Editor den folgenden Prompt ein, um das Modell anzuweisen, die Kundenstimmung in der Produktrezension zu analysieren.
  3. Klicken Sie auf Senden, um die Antwort aus dem Modell zu generieren.

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

Die Überprüfungsdaten aus der Tabelle "SNWD_REV_ITEM" kann zum Testen des Modells mit zusätzlichen Prompts verwendet werden.

11. Berichtsprogramm zum Aufrufen des Gemini Pro-Modells erstellen

In diesem Schritt rufen wir das Gemini Pro-Modell von ABAP auf, um die Sentimentanalyse von Rezensionen durchzuführen. Zu Demozwecken wählt das Programm bis zu 10 Rezensionen aus und verwendet das ABAP SDK, um das Gemini Pro-Modell aufzurufen und so die Stimmung pro Rezension zu bestimmen. Basierend auf der Analyse kann das Modell Werte wie „Positiv“, „Negativ“ oder „Neutral“ zurückgeben oder „Gemischt“.

  1. Melden Sie sich in Ihrem SAP-System an.
  2. Rufen Sie den Transaktionscode SE38 auf und erstellen Sie ein Berichtsprogramm namens ZSENTIMENT_ANALYSIS.
  3. Geben Sie im Pop-up-Fenster, das geöffnet wird, die folgenden Informationen ein und klicken Sie auf Speichern.

a2158523ec8ef3c7.png

  1. Wählen Sie im nächsten Pop-up-Fenster entweder Lokales Objekt aus oder geben Sie einen Paketnamen an.
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. Starte das Programm, um die Sentimentanalyse für den Rezensionstext anzusehen.

4d869f1b8436b9ca.png

12. Glückwunsch

Glückwunsch! Sie haben erfolgreich ein Beispielprogramm entwickelt, um eine Sentimentanalyse mit Gemini Pro AI mit dem ABAP SDK for Google Cloud durchzuführen.

13. Bereinigen

Wenn Sie nicht mit den zusätzlichen Codelabs im Zusammenhang mit dem ABAP SDK for Google Cloud fortfahren möchten, fahren Sie bitte mit der Bereinigung fort.

Projekt löschen

  • Löschen Sie das Google Cloud-Projekt:
gcloud projects delete abap-sdk-poc

Einzelne Ressourcen löschen

  1. Löschen Sie die Clientschlüssel-Konfigurationseinträge. Rufen Sie dazu IMG > Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren
  2. Löschen Sie die Konfigurationseinträge der Service Mapping-Konfiguration. Gehen Sie dazu zu IMG > Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren
  3. Löschen Sie die RFC-Ziele ZGOOG_IAMCREDENTIALS und ZGOOG_VERTEX_AI.
  4. Berichtsprogramm löschen ZSENTIMENT_ANALYSIS.
  5. Löschen Sie das Dienstkonto.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com