Sentimentanalyse mit Gemini AI und ABAP SDK

Sentimentanalyse mit Gemini-KI und ABAP SDK

Informationen zu diesem Codelab

subjectZuletzt aktualisiert: Sept. 4, 2024
account_circleVerfasst von Ameya Suvarna

1. Einführung

In diesem Codelab verwenden Sie das Gemini Pro-Modell, um mit dem ABAP SDK for Google Cloud eine Sentimentanalyse von Produktrezensionen durchzuführen. Wir gehen die Schritte durch, um die Authentifizierung für den Zugriff auf die Google Cloud Vertex AI API mithilfe von Tokens einzurichten, wenn Ihr SAP-System auf einer Compute Engine-VM-Instanz gehostet wird.

Die Liste der verwendeten Dienste:

  • Compute Engine
  • Netzwerkdienste
  • Cloud Shell
  • Vertex AI

Aufgaben

Sie führen folgende Schritte aus:

  • Konfigurieren Sie das im SAP-System installierte ABAP SDK für die Verbindung zu Google APIs.
  • Erstellen Sie ein Beispielprogramm für Berichte, um die Gemini-KI aufzurufen und eine Sentimentanalyse von Produktrezensionen durchzuführen.

2. Voraussetzungen

3. Hinweis

  • Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie ein solches Projekt (z. B. abap-sdk-poc).
  • Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist Überspringen Sie diesen Schritt, wenn Sie das Konto mit 90-tägigem kostenlosen Testzeitraum 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
  • Achten Sie darauf, dass alle erforderlichen APIs (AM Service Account Credentials API, Vertex AI API) aktiviert sind.
  • Führen Sie die folgenden Befehle aus, um sich für Ihr Konto zu authentifizieren und das Standardprojekt auf abap-sdk-poc festzulegen. Als Beispiel wird Zone us-west4-b verwendet. Ändern Sie bei Bedarf das Projekt und die Zone in den folgenden Befehlen entsprechend Ihren Anforderungen.
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 geschehen.
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 System verwenden, das im Codelab Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK (ABAP-Plattform-Testversion auf der Google Cloud-Plattform installieren und ABAP SDK installieren) bereitgestellt wurde, verwenden Sie zum Anmelden den standardmäßig bereitgestellten Nutzernamen und das standardmäßig bereitgestellte Passwort.

  1. Geben Sie in 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/
  • Port: 443
  • SSL: Aktiv

Dieses RFC-Ziel zielt auf die IAM API ab.

ZGOOG_VERTEX_AI

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

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

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

e670c6a91acba40f.png

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

5c584aaed5c110f2.png

  • Für das Feld SSL-Zertifikat muss die Option DEFAULT-SSL-Client (Standard) für beide RFC-Ziele ausgewählt sein.

b6370d12bd332318.png

7. Dienstzuordnung konfigurieren

So konfigurieren Sie die Dienstzuordnungstabelle für die IAM API und die Vertex AI API:

  1. Geben Sie in 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 dargestellt.

e7cc1429a4fe3a04.png

8. Konfiguration validieren

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

  1. Geben Sie in 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 Spalte „Ergebnis“ zeigt an, dass alle Konfigurationsschritte erfolgreich abgeschlossen wurden.

d7285e64e22c25b6.png

9. Rezensionsdaten analysieren

Die ABAP-Plattform-Testversion ist mit dem SAP Enterprise Procurement Model (EPM) vorinstalliert. Das ist eine End-to-End-Anwendung, die von SAP zu Demonstrations- und Testzwecken bereitgestellt wird. Die Rezensionen, die für die Sentimentanalyse verwendet werden, werden in der Tabelle „SNWD_REV_ITEM“ gespeichert.

Sie können die Tabellendaten mit dem T-Code SE16 aufrufen. Wir verwenden den Beispieltext aus dem Feld „RATING_TEXT“.

2bae72d437ea639.png

Alternativ können Sie die Daten auch aufrufen, indem Sie über das Fiori Launchpad (T-Code: /UI2/FLP) auf die Anwendung „Manager Products“ zugreifen.

f9792a91ef9f0736.png

Der folgende Screenshot zeigt die Liste der Produkte.

f822f9ab71d37a9.png

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

69fe380d5ca7b276.png

Im nächsten Abschnitt analysieren wir anhand dieser Beispielrezensionen die Stimmung mithilfe des LLM von Google.

10. Mit Vertex AI Studio den Ton analysieren

  1. Öffnen Sie das Vertex AI-Dashboard und wählen Sie unter „Vertex AI Studio“ die Option Language (Sprache) aus.
  2. Erstellen Sie einen neuen Textprompt.

8ce4c928c75174d7.png

  1. Bestätigen Sie die Auswahl des Modells Gemini Pro.
  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 des Modells zu generieren.

Aufgabe:

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 Rezensionsdaten aus der Tabelle „SNWD_REV_ITEM“ können 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 aus ABAP auf, um die Sentimentanalyse von Produktrezensionen durchzuführen. Für Demonstrationszwecke werden bis zu 10 Produktrezensionen ausgewählt und das Gemini Pro-Modell wird über das ABAP SDK aufgerufen, um das Sentiment pro Rezension zu bestimmen. Basierend auf der Analyse kann das Modell Werte wie „Positiv“, „Negativ“, „Neutral“ oder „Gemischt“ zurückgeben.

  1. Melden Sie sich in Ihrem SAP-System an.
  2. Rufen Sie den Transaktionscode SE38 auf und erstellen Sie ein Berichtsprogramm mit dem Namen ZSENTIMENT_ANALYSIS.
  3. Geben Sie im Pop-up-Fenster die Details wie unten gezeigt 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. Führen Sie das Programm aus, um die Sentimentanalyse für den Rezensionstext aufzurufen.

4d869f1b8436b9ca.png

12. Glückwunsch

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

13. Bereinigen

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

Projekt löschen

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

Einzelne Ressourcen löschen

  1. Löschen Sie die Konfigurationseinträge für den Clientschlüssel unter IMG > Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren.
  2. Löschen Sie die Konfigurationseinträge für die Dienstzuordnung. Rufen Sie dazu IMG > Google Cloud > Grundlegende Einstellungen > Clientschlüssel konfigurieren auf.
  3. Löschen Sie die RFC-Ziele ZGOOG_IAMCREDENTIALS und ZGOOG_VERTEX_AI.
  4. Löschen Sie das Berichtsprogramm ZSENTIMENT_ANALYSIS..
  5. Löschen Sie das Dienstkonto.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com