تحليل الآراء باستخدام Gemini AI مع حزمة ABAP SDK

1. مقدمة

في هذا الدرس التطبيقي حول الترميز، سنركز على استخدامك لنموذج Gemini Pro من أجل إجراء تحليل الآراء لمراجعات المنتج باستخدام حزمة تطوير البرامج (SDK) ABAP من Google Cloud. سنوضّح لك الخطوات اللازمة لإعداد المصادقة للوصول إلى واجهة برمجة التطبيقات Google Cloud Vertex AI باستخدام الرموز المميزة عندما يكون نظام SAP مستضافًا على مثيل جهاز افتراضي في Compute Engine.

قائمة الخدمات المستخدَمة هي:

  • Compute Engine
  • خدمات الشبكة
  • Cloud Shell
  • Vertex AI

ما ستنشئه

ستنفّذ ما يلي:

  • اضبط حزمة تطوير البرامج (SDK) الخاصة بلغة ABAP المثبَّتة على نظام SAP للربط بواجهات Google API.
  • إنشاء برنامج تقارير نموذجي لاستدعاء Gemini AI وإجراء تحليل الآراء حول مراجعات المنتجات

2. المتطلّبات

  • متصفّح، مثل Chrome أو Firefox
  • مشروع Google Cloud تم تفعيل الفوترة فيه أو إنشاء حساب فترة تجريبية مجانية لمدة 90 يومًا على Google Cloud Platform
  • يجب أن يكون SAP GUI (Windows أو Java) مثبّتًا على نظامك. إذا كان SAP GUI مثبَّتًا على نظامك، يمكنك الاتصال بـ SAP باستخدام عنوان IP الخارجي للجهاز الافتراضي كعنوان IP لخادم التطبيقات. إذا كنت تستخدم جهاز Mac، يمكنك أيضًا تثبيت SAP GUI for Java المتاح في هذا الرابط هذا.

3- قبل البدء

  • في Google Cloud Console، في صفحة اختيار المشروع، اختَر أو أنشِئ مشروعًا على Google Cloud (مثلاً: abap-sdk-poc).
  • تأكَّد من تفعيل الفوترة لمشروعك على Cloud. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع. يمكنك تخطّي هذه الخطوة إذا كنت تستخدم حسابًا تجريبيًا مجانيًا لمدة 90 يومًا.
  • ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud. من Cloud Console، انقر على تفعيل Cloud Shell في أعلى يسار الصفحة:
  • 6757b2fb50ddcc2d.png
  • تأكَّد من تفعيل جميع واجهات برمجة التطبيقات اللازمة (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.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
    --member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
    --role=roles/aiplatform.user

5- ضبط مفتاح العميل

سجِّل الدخول إلى نظام SAP. إذا كنت تستخدم النظام الذي تم توفيره من خلال برنامج التدريب العملي " تثبيت الإصدار التجريبي من منصة ABAP على Google Cloud Platform وتثبيت حزمة تطوير البرامج (SDK) لمنصة ABAP"، استخدِم اسم المستخدم وكلمة المرور التلقائيين اللذين تم توفيرهما لتسجيل الدخول.

  1. في SAP GUI، أدخِل رمز المعاملة SPRO.
  2. انقر على SAP Reference IMG.
  3. انقر على ABAP SDK for Google Cloud > الإعدادات الأساسية > إعداد مفتاح العميل.
  4. انقر على إدخالات جديدة.
  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

فئة التفويض

/GOOG/CL_AUTH_GOOGLE.

اترك الحقول الأخرى فارغة

c72e71da6fd75b29.png

6. إنشاء وجهة RFC

أنشئ وجهة RFC لبيانات اعتماد IAM وواجهة برمجة تطبيقات Vertex AI باستخدام رمز المعاملة SM59. إذا لزم الأمر، يُرجى الرجوع إلى هذه الصفحة للاطّلاع على خطوات مفصّلة حول إنشاء وجهة RFC.

اسم وجهة RFC

المضيف المستهدف (نقطة نهاية واجهة برمجة التطبيقات)

ملاحظات

ZGOOG_IAMCREDENTIALS

  • المضيف: iamcredentials.googleapis.com
  • المسار: البادئة: /v1/
  • المنفذ: 443
  • SSL: نشطة

تستهدف وجهة RFC هذه واجهة برمجة التطبيقات IAM.

ZGOOG_VERTEX_AI

  • المضيف: us-central1-aiplatform.googleapis.com
  • المنفذ: 443
  • SSL: نشطة

يستهدف وجهة RFC هذه نقطة نهاية Vertex AI API us-central1.

  • ضمن علامة التبويب الإعدادات الفنية، أدخِل التفاصيل التالية لوجهة ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • ضمن علامة التبويب الإعدادات الفنية، أدخِل التفاصيل التالية لوجهة ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • بالنسبة إلى حقل شهادة طبقة المقابس الآمنة، تأكَّد من تحديد الخيار عميل طبقة المقابس الآمنة التلقائي (عادي) لكلّ من وجهتَي RFC.

b6370d12bd332318.png

7. ضبط ربط الخدمة

لضبط جدول ربط الخدمات لكلّ من واجهة برمجة التطبيقات IAM API وواجهة برمجة التطبيقات Vertex AI API، اتّبِع الخطوات التالية:

  1. في SAP GUI، أدخِل رمز المعاملة SPRO.
  2. انقر على SAP Reference IMG.
  3. انقر على حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud > الإعدادات الأساسية > ضبط ربط الخدمات.
  4. انقر على إدخالات جديدة لكل من بيانات اعتماد "إدارة الهوية وإمكانية الوصول" وواجهة Vertex AI API، وعدِّل وجهات RFC كما هو موضّح أدناه.

e7cc1429a4fe3a04.png

8. التحقّق من الإعدادات

للتأكّد من صحة إعدادات المصادقة، اتّبِع الخطوات التالية:

  1. في SAP GUI، أدخِل رمز المعاملة SPRO.
  2. انقر على SAP Reference IMG.
  3. انقر على ABAP SDK for Google Cloud > الأدوات > التحقّق من صحة إعدادات المصادقة.
  4. أدخِل اسم مفتاح العميل على النحو التالي: ABAP_SDK_DEMO.
  5. انقر على تنفيذ للتأكّد من إعداد المسار العام بنجاح.
  6. تشير علامة الاختيار الخضراء في عمود "النتيجة" إلى أنّه تم إكمال جميع خطوات الإعداد بنجاح.

d7285e64e22c25b6.png

9- دراسة بيانات مراجعات المنتجات

يتم تثبيت النسخة التجريبية من "منصة ABAP" مسبقًا مع "نموذج SAP Enterprise Procurement" (EPM)، وهو تطبيق شامل تقدّمه SAP لأغراض العرض التوضيحي والاختبار. يتم تخزين مراجعات المنتجات التي سيتم استخدامها لتحليل الآراء في الجدول SNWD_REV_ITEM.

يمكنك عرض بيانات الجدول باستخدام رمز المعاملة: SE16. سنستخدم النص النموذجي من الحقل "RATING_TEXT".

2bae72d437ea639.png

يمكنك أيضًا عرض البيانات اختياريًا من خلال الوصول إلى تطبيق "إدارة المنتجات" من Fiori Launchpad (رمز المعاملة: /UI2/FLP).

f9792a91ef9f0736.png

تعرض لقطة الشاشة التالية قائمة المنتجات.

f822f9ab71d37a9.png

انقر على المنتج لعرض تقييمه وأمثلة عن المراجعات.

69fe380d5ca7b276.png

في القسم التالي، سنستخدم عيّنات من مراجعات المنتجات هذه لتحليل الآراء باستخدام نموذج اللغة الكبير (LLM) من Google.

10. تحليل أسلوب التعبير باستخدام Vertex AI Studio

  1. افتح لوحة بيانات Vertex AI، ثم انقر على اللغة ضِمن Vertex AI Studio.
  2. أنشئ طلبًا جديدًا من النوع "نص".

8ce4c928c75174d7.png

  1. أكِّد اختيار نموذج Gemini Pro.
  2. في المحرّر، أدخِل الطلب التالي لتوجيه النموذج إلى تحليل آراء العملاء في مراجعة المنتج.
  3. انقر على إرسال لإنشاء الرد من النموذج.

الطلب:

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 مراجعات للمنتج ويستخدم حزمة تطوير البرامج (SDK) ABAP لاستدعاء نموذج 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. تهانينا

تهانينا! لقد طوّرت بنجاح برنامجًا نموذجيًا لإجراء تحليل الآراء باستخدام الذكاء الاصطناعي Gemini Pro مع حزمة تطوير البرامج (SDK) ABAP على Google Cloud.

13. تَنظيم

إذا كنت لا تريد مواصلة استخدام دروس البرمجة الإضافية المتعلّقة بحزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud، يُرجى المتابعة وتنفيذ عملية التنظيف.

حذف المشروع

  • احذف مشروع Google Cloud باتّباع الخطوات التالية:
gcloud projects delete abap-sdk-poc

حذف موارد فردية

  1. احذف إدخالات إعدادات مفتاح العميل من خلال الانتقال إلى IMG > Google Cloud > الإعدادات الأساسية > إعداد مفتاح العميل.
  2. احذف إدخالات إعدادات "ربط الخدمة" من خلال الانتقال إلى IMG > Google Cloud > الإعدادات الأساسية > إعداد مفتاح العميل.
  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