Analisis sentimen menggunakan Gemini AI dengan ABAP SDK

1. Pengantar

Dalam codelab ini, Anda akan menggunakan model Gemini Pro untuk melakukan analisis sentimen pada ulasan produk dengan ABAP SDK untuk Google Cloud. Kita akan membahas langkah-langkah penyiapan autentikasi untuk mengakses Vertex AI API Google Cloud menggunakan token jika sistem SAP Anda dihosting di instance VM Compute Engine.

Daftar layanan yang digunakan adalah:

  • Compute Engine
  • Layanan Jaringan
  • Cloud Shell
  • Vertex AI

Yang akan Anda build

Anda akan melakukan tindakan berikut:

  • Mengonfigurasi ABAP SDK yang diinstal di sistem SAP agar terhubung ke Google API.
  • Buat contoh program laporan untuk memanggil Gemini AI dan melakukan analisis sentimen pada ulasan produk.

2. Persyaratan

  • Browser, seperti Chrome atau Firefox.
  • Project Google Cloud dengan penagihan diaktifkan atau Buat akun Uji Coba Gratis 90 Hari untuk Google Cloud Platform.
  • GUI SAP (Windows atau Java) yang diinstal di sistem Anda. Jika SAP GUI sudah diinstal di sistem Anda, hubungkan ke SAP menggunakan alamat IP eksternal VM sebagai IP Server Aplikasi. Jika menggunakan Mac, Anda juga dapat menginstal SAP GUI untuk Java yang tersedia di link ini.

3. Sebelum memulai

  • Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud (Misalnya: abap-sdk-poc).
  • Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project. Lewati langkah ini jika Anda menggunakan Akun Uji Coba Gratis 90 Hari.
  • Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud. Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:
  • 6757b2fb50ddcc2d.png
  • Pastikan semua API yang diperlukan (AM Service Account Credentials API, Vertex AI API) diaktifkan.
  • Jalankan perintah berikut untuk mengautentikasi akun Anda dan tetapkan project default ke abap-sdk-poc. Zona us-west4-b digunakan sebagai contoh. Jika perlu, ubah project dan zona dalam perintah berikut sesuai preferensi Anda.
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. Membuat akun layanan dan menetapkan peran pengguna Vertex AI

  1. Jalankan perintah berikut untuk membuat akun layanan (jika belum dibuat).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Jalankan perintah berikut untuk menetapkan peran 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. Mengonfigurasi kunci klien

Login ke sistem SAP. Jika Anda menggunakan sistem yang disediakan oleh codelab " Instal Uji Coba ABAP Platform di Google Cloud Platform dan Instal ABAP SDK", lalu gunakan nama pengguna dan sandi default yang disediakan untuk login.

  1. Di SAP GUI, masukkan kode transaksi SPRO.
  2. Klik SAP Reference IMG.
  3. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
  4. Klik New Entries.
  5. Masukkan nilai untuk kolom berikut:

Kolom

Deskripsi

Nama Kunci Google Cloud

ABAP_SDK_DEMO

Nama Akun Layanan Google Cloud

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

Google Cloud Scope

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

ID Project Google Cloud

abap-sdk-poc

Class Otorisasi

/GOOG/CL_AUTH_GOOGLE.

Membiarkan kolom lainnya kosong

c72e71da6fd75b29.png

6. Membuat tujuan RFC

Buat tujuan RFC untuk kredensial IAM dan Vertex AI API menggunakan kode transaksi SM59. Jika perlu, lihat di sini untuk langkah-langkah mendetail tentang membuat tujuan RFC.

Nama tujuan RFC

Host target (endpoint API)

Catatan

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Jalur: Awalan: /v1/
  • Port: 443
  • SSL: Aktif

Tujuan RFC ini menargetkan IAM API.

ZGOOG_VERTEX_AI

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

Tujuan RFC ini menargetkan endpoint us-central1 Vertex AI API.

  • Di bawah tab Setelan Teknis, masukkan detail berikut untuk tujuan ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • Di bawah tab Setelan Teknis, masukkan detail berikut untuk tujuan ZGOOG_VERTEX_AI.

5c584aaed5c110f2.pngS

  • Untuk kolom SSL Certificate, pastikan opsi DEFAULT SSL Client (Standard) dipilih untuk kedua tujuan RFC.

b6370d12bd332318.png

7. Mengonfigurasi pemetaan layanan

Untuk mengonfigurasi tabel pemetaan layanan untuk IAM API dan Vertex AI API, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SPRO.
  2. Klik SAP Reference IMG.
  3. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.
  4. Klik New Entries untuk IAM Credential dan Vertex AI API, lalu perbarui tujuan RFC seperti yang ditunjukkan di bawah.

e7cc1429a4fe3a04.png

8. Validasi konfigurasi

Untuk memvalidasi konfigurasi autentikasi, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SPRO.
  2. Klik SAP Reference IMG.
  3. Klik ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration.
  4. Masukkan nama kunci klien sebagai ABAP_SDK_DEMO.
  5. Klik Execute untuk memeriksa apakah keseluruhan alur berhasil dikonfigurasi.
  6. Centang hijau pada kolom Hasil menunjukkan bahwa semua langkah konfigurasi berhasil diselesaikan.

d7285e64e22c25b6.png

9. Mempelajari data ulasan produk

ABAP Platform Trial telah diinstal sebelumnya dengan SAP Enterprise Procurement Model (EPM), sebuah aplikasi menyeluruh yang dilengkapi oleh SAP untuk tujuan demonstrasi dan pengujian. Ulasan produk yang akan digunakan untuk analisis sentimen disimpan dalam tabel SNWD_REV_ITEM.

Anda dapat melihat data tabel menggunakan Tcode: SE16. Kami akan menggunakan teks contoh dari kolom "RATING_TEXT".

2bae72d437ea639.pngS

Atau, Anda juga dapat melihat data dengan mengakses aplikasi "Pengelola Produk" dari Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

Screenshot berikut menampilkan daftar produk.

f822f9ab71d37a9.png

Klik produk untuk melihat rating produk dan contoh ulasan.

69fe380d5ca7b276.pngS

Di bagian berikutnya, kita akan menggunakan contoh ulasan produk ini untuk menganalisis sentimen menggunakan LLM Google.

10. Menganalisis sentimen menggunakan Vertex AI Studio

  1. Buka dasbor Vertex AI, pilih Language di bagian Vertex AI Studio.
  2. Membuat Dialog Teks baru.

8ce4c928c75174d7.pngS

  1. Konfirmasi pilihan model Gemini Pro.
  2. Di editor, masukkan perintah berikut untuk menginstruksikan model guna menganalisis sentimen pelanggan dalam ulasan produk.
  3. Klik Kirim untuk membuat respons dari model.

Perintah:

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

Data ulasan dari tabel "SNWD_REV_ITEM" dapat digunakan untuk menguji model dengan prompt tambahan.

11. Buat program laporan untuk memanggil model Gemini Pro

Pada langkah ini, kita akan memanggil model Gemini Pro dari ABAP untuk melakukan analisis sentimen dari ulasan produk. Untuk tujuan demo, program ini akan memilih hingga 10 ulasan produk dan menggunakan ABAP SDK untuk memanggil model Gemini Pro guna menentukan sentimen per ulasan. Berdasarkan analisisnya, model ini dapat menampilkan nilai seperti "Positif", "Negatif", "Netral" atau "Kombinasi".

  1. Login ke Sistem SAP Anda.
  2. Buka kode transaksi SE38, lalu buat Program Laporan dengan nama ZSENTIMENT_ANALYSIS.
  3. Di jendela pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.

a2158523ec8ef3c7.png

  1. Pada pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
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. Jalankan program untuk melihat analisis sentimen untuk teks ulasan.

4d869f1b8436b9ca.pngS

12. Selamat

Selamat! Anda telah berhasil mengembangkan program contoh untuk melakukan analisis sentimen menggunakan AI Gemini Pro dengan ABAP SDK untuk Google Cloud.

13. Pembersihan

Jika Anda tidak ingin melanjutkan codelab tambahan terkait ABAP SDK untuk Google Cloud, lanjutkan dengan pembersihan.

Menghapus project

  • Hapus project Google Cloud:
gcloud projects delete abap-sdk-poc

Menghapus resource satu per satu

  1. Hapus entri konfigurasi kunci klien dengan membuka IMG > Google Cloud > Setelan Dasar > Konfigurasikan Kunci Klien.
  2. Hapus entri konfigurasi Pemetaan Layanan dengan membuka IMG > Google Cloud > Setelan Dasar > Konfigurasikan Kunci Klien.
  3. Hapus tujuan RFC ZGOOG_IAMCREDENTIALS dan ZGOOG_VERTEX_AI.
  4. Hapus program laporan ZSENTIMENT_ANALYSIS.
  5. Hapus akun layanan.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com