Analiza nastawienia za pomocą Gemini AI i pakietu SDK ABAP

1. Wprowadzenie

W ramach tego ćwiczenia w Codelabs wykorzystasz model Gemini Pro, aby przeprowadzić analizę nastawienia w przypadku opinii o produktach za pomocą pakietu SDK ABAP dla Google Cloud. Przeprowadzimy kroki konfiguracji uwierzytelniania umożliwiającego dostęp do interfejsu Google Cloud Vertex AI API za pomocą tokenów, gdy Twój system SAP jest hostowany w instancji maszyny wirtualnej Compute Engine.

Lista wykorzystywanych usług:

  • Compute Engine
  • Usługi sieciowe
  • Cloud Shell
  • Vertex AI

Co utworzysz

Wykonaj te czynności:

  • Skonfiguruj pakiet SDK ABAP zainstalowany w systemie SAP, aby połączyć się z interfejsami API Google.
  • Utwórz przykładowy program raportów, aby wywoływać Gemini AI i przeprowadzać analizę nastawienia w przypadku opinii o produktach.

2. Wymagania

  • Przeglądarka, na przykład Chrome lub Firefox.
  • Projekt Google Cloud z włączonymi płatnościami lub utwórz bezpłatne konto próbne na 90 dni dla Google Cloud Platform.
  • zainstalowanego w systemie SAP GUI (Windows lub Java). Jeśli SAP GUI jest już zainstalowany w Twoim systemie, połącz się z SAP, używając zewnętrznego adresu IP maszyny wirtualnej jako adresu IP serwera aplikacji. Jeśli korzystasz z komputera Mac, możesz również zainstalować interfejs SAP GUI dla języka Java dostępny tutaj.

3. Zanim zaczniesz

  • W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud (np. abap-sdk-poc).).
  • Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności. Pomiń ten krok, jeśli używasz 90-dniowego bezpłatnego konta próbnego.
  • Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud. W konsoli Cloud kliknij Aktywuj Cloud Shell w prawym górnym rogu:
  • 6757b2fb50ddcc2d.png
  • Upewnij się, że wszystkie niezbędne interfejsy API (AM Service Account Credentials API i Vertex AI API) są włączone.
  • Uruchom te polecenia, aby uwierzytelnić się na swoim koncie i ustawić projekt domyślny na abap-sdk-poc. Przykładem jest strefa us-west4-b. W razie potrzeby zmień projekt i strefę w poniższych poleceniach.
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. Utwórz konto usługi i ustaw rolę użytkownika Vertex AI

  1. Uruchom to polecenie, aby utworzyć konto usługi (jeśli nie zostało jeszcze utworzone).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Uruchom to polecenie, aby ustawić rolę Użytkownik 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. Skonfiguruj klucz klienta

Zaloguj się w systemie SAP. Jeśli używasz systemu udostępnionego w ramach ćwiczeń z programowania „ Zainstaluj wersję próbną platformy ABAP w Google Cloud Platform i zainstaluj pakiet ABAP SDK”, a następnie użyj domyślnej obsługiwanej nazwy użytkownika i hasła, aby się zalogować.

  1. W GUI SAP wpisz kod transakcji SPRO.
  2. Kliknij Plik referencyjny usługi SAP.
  3. Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
  4. Kliknij Nowe wpisy.
  5. Wpisz wartości w tych polach:

Pole

Opis

Nazwa klucza Google Cloud

ABAP_SDK_DEMO

Nazwa konta usługi Google Cloud

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

Zakres Google Cloud

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

Identyfikator projektu Google Cloud

abap-sdk-poc

Klasa autoryzacji

/GOOG/CL_AUTH_GOOGLE

Pozostaw inne pola puste

c72e71da6fd75b29.png

6. Utwórz miejsce docelowe RFC

Utwórz miejsce docelowe RFC dla danych logowania uprawnień i interfejsu Vertex AI API za pomocą kodu transakcji SM59. W razie potrzeby szczegółowe instrukcje tworzenia miejsca docelowego RFC znajdziesz tutaj.

Nazwa miejsca docelowego RFC

Host docelowy (punkt końcowy API)

Uwagi

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Ścieżka: Prefiks: /v1/
  • Port: 443
  • SSL: aktywny

To miejsce docelowe RFC jest kierowane na interfejs IAM API.

ZGOOG_VERTEX_AI

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

To miejsce docelowe RFC jest kierowane na punkt końcowy us-central1 interfejsu Vertex AI API.

  • Na karcie Technical Settings (Ustawienia techniczne) wpisz poniższe szczegóły dotyczące miejsca docelowego ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • Na karcie Technical Settings (Ustawienia techniczne) wpisz następujące szczegóły dotyczące miejsca docelowego ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • Upewnij się, że w polu SSL Certificate (Certyfikat SSL) jest wybrana opcja DEFAULT SSL Client (Standard) (Domyślny klient SSL (standardowy)) w przypadku obu miejsc docelowych RFC.

b6370d12bd332318.png

7. Skonfiguruj mapowanie usług

Aby skonfigurować tabelę mapowania usług na potrzeby interfejsów IAM API i Vertex AI API, wykonaj te czynności:

  1. W GUI SAP wpisz kod transakcji SPRO.
  2. Kliknij Plik referencyjny usługi SAP.
  3. Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj mapowanie usług.
  4. Kliknij Nowe wpisy w polach IAM Credentials API i Vertex AI API, a następnie zaktualizuj miejsca docelowe RFC, jak pokazano poniżej.

e7cc1429a4fe3a04.png

8. Zweryfikuj konfigurację

Aby sprawdzić konfigurację uwierzytelniania, wykonaj te czynności:

  1. W GUI SAP wpisz kod transakcji SPRO.
  2. Kliknij Plik referencyjny usługi SAP.
  3. Kliknij ABAP SDK for Google Cloud > Narzędzia > Validate Authentication Configuration (Zweryfikuj konfigurację uwierzytelniania).
  4. Jako nazwę klucza klienta wpisz ABAP_SDK_DEMO.
  5. Kliknij Wykonaj, aby sprawdzić, czy ogólny przepływ został skonfigurowany.
  6. Zielony znacznik wyboru w kolumnie „Wynik” oznacza, że wszystkie kroki konfiguracji zostały wykonane.

d7285e64e22c25b6.png

9. Analizowanie danych z opinii o produktach

Wersja próbna platformy ABAP jest wstępnie zainstalowana z kompleksową aplikacją SAP Enterprise Procurement Model (EPM) dostarczoną przez SAP do celów demonstracyjnych i testowych. Opinie o produktach, które zostaną użyte do analizy nastawienia, są przechowywane w tabeli SNWD_REV_ITEM.

Dane w tabeli można wyświetlić za pomocą kodu Tcode: SE16. Użyjemy przykładowego tekstu z pola „RATING_TEXT”.

2bae72d437ea639.png

Opcjonalnie dane można też wyświetlić w aplikacji „Usługi menedżera” z aplikacji Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

Poniższy zrzut ekranu przedstawia listę produktów.

f822f9ab71d37a9.png

Kliknij produkt, aby wyświetlić jego ocenę i przykładowe opinie.

69fe380d5ca7b276.png

W następnej sekcji wykorzystamy te przykładowe opinie o produktach, aby przeanalizować nastroje z wykorzystaniem modelu LLM Google.

10. Analizowanie nastawienia przy użyciu Vertex AI Studio

  1. Otwórz panel Vertex AI i w sekcji Vertex AI Studio wybierz Język.
  2. Utwórz nowy prompt tekstowy.

8ce4c928c75174d7.png

  1. Potwierdź wybór modelu Gemini Pro.
  2. W edytorze wpisz poniższy prompt, aby polecić modelowi analizę nastawienia klientów w opinii o produkcie.
  3. Kliknij Prześlij, aby wygenerować odpowiedź na podstawie modelu.

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

Dane opinii z tabeli „SNWD_REV_ITEM” może posłużyć do testowania modelu z dodatkowymi promptami.

11. Utwórz program generowania raportów, aby wywoływać model Gemini Pro

W tym kroku wywołamy model Gemini Pro z ABAP, aby przeprowadzić analizę nastawienia w opiniach o produktach. Na potrzeby wersji demonstracyjnej program wybierze maksymalnie 10 opinii o produktach i użyje pakietu SDK ABAP do wywoływania modelu Gemini Pro do określenia nastawienia na opinię. Na podstawie przeprowadzonej analizy model może zwracać wartości takie jak „dodatnia”, „ujemna”, „neutralna” lub „Mieszana”.

  1. Zaloguj się w systemie SAP.
  2. Przejdź do kodu transakcji SE38 i utwórz program raportów o nazwie ZSENTIMENT_ANALYSIS.
  3. W wyskakującym okienku podaj szczegóły zgodnie z poniższymi instrukcjami i kliknij Zapisz.

a2158523ec8ef3c7.png

  1. W następnym wyskakującym okienku wybierz Obiekt lokalny lub wpisz odpowiednią nazwę pakietu.
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. Uruchom program, aby zobaczyć analizę nastawienia w przypadku tekstu opinii.

4d869f1b8436b9ca.png

12. Gratulacje

Gratulacje! Udało Ci się opracować przykładowy program do przeprowadzania analizy nastawienia z użyciem Gemini Pro AI i pakietu SDK ABAP dla Google Cloud.

13. Czyszczenie danych

Jeśli nie chcesz wykonywać dodatkowych ćwiczeń z programowania związanych z pakietem SDK ABAP dla Google Cloud, możesz kontynuować czyszczenie.

Usuwanie projektu

  • Usuń projekt Google Cloud:
gcloud projects delete abap-sdk-poc

Usuwanie poszczególnych zasobów

  1. Usuń wpisy konfiguracji klucza klienta, przechodząc do IMG > Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
  2. Usuń wpisy konfiguracji mapowania usług, przechodząc do IMG > Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
  3. Usuń miejsca docelowe RFC ZGOOG_IAMCREDENTIALS i ZGOOG_VERTEX_AI.
  4. Usuń program do tworzenia raportów ZSENTIMENT_ANALYSIS.
  5. Usuń konto usługi.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com