ניתוח סנטימנטים באמצעות Gemini AI עם ABAP SDK

1. מבוא

בקודלאב הזה תלמדו איך להשתמש במודל Gemini Pro כדי לבצע ניתוח של סנטימנטים לגבי ביקורות על מוצרים באמצעות ABAP SDK ל-Google Cloud. נסביר את השלבים להגדרת אימות כדי לגשת ל-Google Cloud Vertex AI API באמצעות אסימונים כשמערכת SAP מתארחת במכונה וירטואלית של Compute Engine.

רשימת השירותים שבהם נעשה שימוש:

  • Compute Engine
  • שירותי רשת
  • Cloud Shell
  • Vertex AI

מה תפַתחו

עליכם לבצע את הפעולות הבאות:

  • מגדירים את ABAP SDK שמותקן במערכת SAP כדי להתחבר ל-Google APIs.
  • יצירת תוכנית דוגמה לדוח כדי לקרוא ל-AI של Gemini ולבצע ניתוח של סנטימנטים בביקורות על מוצרים.

2. דרישות

  • דפדפן, כמו Chrome או Firefox.
  • פרויקט ב-Google Cloud שבו החיוב מופעל, או יצירת חשבון לתקופת ניסיון בחינם של 90 יום ב-Google Cloud Platform.
  • SAP GUI (Windows או Java) מותקן במערכת. אם SAP GUI כבר מותקן במערכת, מתחברים ל-SAP באמצעות כתובת ה-IP החיצונית של ה-VM ככתובת ה-IP של שרת האפליקציות. אם אתם משתמשים ב-Mac, תוכלו גם להתקין את SAP GUI for Java שזמין בקישור הזה.

3. לפני שמתחילים

  • במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים או יוצרים פרויקט ב-Google Cloud (לדוגמה: abap-sdk-poc).
  • הקפידו לוודא שהחיוב מופעל בפרויקט שלכם ב-Cloud. כך בודקים אם החיוב מופעל בפרויקט אם אתם משתמשים בחשבון לתקופת ניסיון בחינם של 90 יום, אפשר לדלג על השלב הזה.
  • תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud. במסוף Cloud, לוחצים על Activate Cloud Shell בפינה הימנית העליונה:
  • 6757b2fb50ddcc2d.png
  • מוודאים שכל ממשקי ה-API הנדרשים (AM Service Account Credentials API, ‏ Vertex AI API) מופעלים.
  • מריצים את הפקודות הבאות כדי לבצע אימות לחשבון ולהגדיר את פרויקט ברירת המחדל כ-abap-sdk-poc. הדוגמה היא לתחום us-west4-b. אם צריך, משנים את הפרויקט ואת האזור בפקודות הבאות בהתאם להעדפות שלכם.
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. יצירת חשבון שירות והגדרת תפקיד משתמש ב-Vertex AI

  1. מריצים את הפקודה הבאה כדי ליצור חשבון שירות (אם הוא עדיין לא נוצר).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. מריצים את הפקודה הבאה כדי להגדיר את התפקיד 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. הגדרת מפתח לקוח

מתחברים למערכת SAP. אם אתם משתמשים במערכת שהוקצתה לכם ב-codelab‏ Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK, צריך להשתמש בשם המשתמש והסיסמה שהוקצתה לכם כברירת מחדל כדי להתחבר.

  1. בממשק המשתמש של SAP, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud‏ > Basic Settings‏ > Configure Client Key.
  4. לוחצים על New Entries.
  5. מזינים ערכים בשדות הבאים:

שדה

תיאור

שם המפתח ב-Google Cloud

ABAP_SDK_DEMO

שם חשבון השירות ב-Google Cloud

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

היקף Google Cloud

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

מזהה הפרויקט ב-Google Cloud

abap-sdk-poc

Authorization Class

‎/GOOG/CL_AUTH_GOOGLE.

משאירים את שאר השדות ריקים

c72e71da6fd75b29.png

6. יצירת יעד RFC

יוצרים יעד RFC לפרטי הכניסה ל-IAM ול-Vertex AI API באמצעות קוד העסקה SM59. אם יש צורך, אפשר לעיין כאן כדי לקבל הוראות מפורטות ליצירת יעד RFC.

שם היעד ב-RFC

מארח היעד (נקודת קצה ל-API)

הערות

ZGOOG_IAMCREDENTIALS

  • מארח: iamcredentials.googleapis.com
  • נתיב: קידומת: ‎/v1/‎
  • יציאה: 443
  • SSL: פעיל

יעד ה-RFC הזה מטרגט את IAM API.

ZGOOG_VERTEX_AI

  • מארח: us-central1-aiplatform.googleapis.com
  • יציאה: 443
  • SSL: פעיל

יעד ה-RFC הזה מטרגט את נקודת הקצה us-central1 של Vertex AI API.

  • בכרטיסייה Technical Settings (הגדרות טכניות), מזינים את הפרטים הבאים ליעד ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • בכרטיסייה Technical Settings (הגדרות טכניות), מזינים את הפרטים הבאים ליעד ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • בשדה SSL Certificate, מוודאים שהאפשרות DEFAULT SSL Client (Standard) מסומנת בשני יעדי ה-RFC.

b6370d12bd332318.png

7. הגדרת מיפוי שירותים

כדי להגדיר את טבלת מיפוי השירותים של IAM API ו-Vertex AI API, מבצעים את השלבים הבאים:

  1. בממשק המשתמש של SAP, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud‏ > Basic Settings‏ > Configure Service Mapping.
  4. לוחצים על New Entries (רשומות חדשות) עבור IAM Credential ו-Vertex AI API ומעדכנים את היעדים של RFC כפי שמתואר בהמשך.

e7cc1429a4fe3a04.png

8. אימות התצורה

כדי לאמת את הגדרת האימות, מבצעים את השלבים הבאים:

  1. בממשק המשתמש של SAP, מזינים את קוד העסקה SPRO.
  2. לוחצים על SAP Reference IMG.
  3. לוחצים על ABAP SDK for Google Cloud‏ > Utilities‏ > Validate Authentication Configuration.
  4. מזינים את השם של מפתח הלקוח כ-ABAP_SDK_DEMO.
  5. לוחצים על Execute כדי לבדוק אם התהליך כולו הוגדר בהצלחה.
  6. אם מופיע וי ירוק בעמודה 'תוצאה', סימן שכל שלבי ההגדרה הושלמו בהצלחה.

d7285e64e22c25b6.png

9. ניתוח הנתונים של הביקורות על המוצרים

גרסת הניסיון של פלטפורמת ABAP מותקנת מראש עם SAP Enterprise Procurement Model‏ (EPM), אפליקציה מקצה לקצה ש-SAP מספקת למטרות הדגמה ובדיקה. הביקורות על המוצרים שישמשו לניתוח של תגובות המשתמשים מאוחסנות בטבלה SNWD_REV_ITEM.

אפשר להציג את נתוני הטבלה באמצעות קוד ה-Tcode: SE16. נשתמש בטקסט לדוגמה מהשדה RATING_TEXT.

2bae72d437ea639.png

לחלופין, אפשר להציג את הנתונים גם על ידי כניסה לאפליקציה 'ניהול מוצרים' מ-Fiori Launchpad‏ (TCode: /UI2/FLP).

f9792a91ef9f0736.png

בצילום המסך הבא מוצגת רשימת המוצרים.

f822f9ab71d37a9.png

לוחצים על המוצר כדי לראות את הדירוג שלו ואת הביקורות לדוגמה.

69fe380d5ca7b276.png

בקטע הבא נשתמש בביקורות המוצר לדוגמה האלה כדי לנתח את הסנטימנט באמצעות Google LLM.

10. ניתוח סנטימנטים באמצעות Vertex AI Studio

  1. פותחים את מרכז הבקרה של Vertex AI ובוחרים באפשרות Language בקטע Vertex AI Studio.
  2. יוצרים הנחיה חדשה לטקסט.

8ce4c928c75174d7.png

  1. מאשרים את הבחירה במודל Gemini Pro.
  2. מזינים את ההנחיה הבאה בעורך כדי להורות למודל לנתח את תחושות הלקוחות בביקורת על המוצר.
  3. לוחצים על Submit כדי ליצור את התשובה מהמודל.

הנחיה:

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

אפשר להשתמש בנתוני הבדיקה מהטבלה SNWD_REV_ITEM כדי לבדוק את המודל עם הנחיות נוספות.

11. יצירת תוכנית דוחות לקריאה למודל Gemini Pro

בשלב הזה, נתקשר למודל Gemini Pro מ-ABAP כדי לבצע ניתוח של סנטימנטים בביקורות על מוצרים. למטרות הדגמה, התוכנית תבחר עד 10 ביקורות על מוצרים ותשתמש ב-ABAP SDK כדי לקרוא למודל Gemini Pro כדי לקבוע את סנטימנט הביקורת. על סמך הניתוח שלו, המודל יכול להחזיר ערכים כמו 'חיובי', 'שלילי', 'ניטרלי' או 'מעורב'.

  1. מתחברים למערכת SAP.
  2. עוברים לקוד העסקה SE38 ויוצרים תוכנית דוחות בשם ZSENTIMENT_ANALYSIS.
  3. בחלון הקופץ שנפתח, מזינים את הפרטים כפי שמתואר בהמשך ולוחצים על שמירה.

a2158523ec8ef3c7.png

  1. בחלון הקופץ הבא, בוחרים באפשרות Local Object (אובייקט מקומי) או מספקים שם לחבילה בהתאם.
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. מריצים את התוכנית כדי לראות את ניתוח הרגש של טקסט הביקורת.

4d869f1b8436b9ca.png

12. מזל טוב

מעולה! פיתחתם בהצלחה תוכנית לדוגמה לביצוע ניתוח סנטימנטים באמצעות AI מבית Gemini Pro עם ABAP SDK ל-Google Cloud.

13. הסרת המשאבים

אם אתם לא רוצים להמשיך בקודלאבים הנוספים שקשורים ל-ABAP SDK ל-Google Cloud, תוכלו להמשיך לניקוי.

מחיקת הפרויקט

  • מוחקים את הפרויקט ב-Google Cloud:
gcloud projects delete abap-sdk-poc

מחיקת משאבים ספציפיים

  1. כדי למחוק את הרשומות של הגדרות מפתח הלקוח, עוברים אל IMG > Google Cloud > Basic Settings > Configure Client Key.
  2. כדי למחוק את הרשומות בתצורה של Service Mapping, עוברים אל IMG > Google Cloud > Basic Settings > Configure Client Key.
  3. מוחקים את יעדי ה-RFC ZGOOG_IAMCREDENTIALS ו-ZGOOG_VERTEX_AI.
  4. מוחקים את תוכנית הדוחות ZSENTIMENT_ANALYSIS.
  5. מוחקים את חשבון השירות.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com