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

1. مقدمة

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

في ما يلي قائمة بالخدمات المستخدمة:

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

ما الذي ستقوم ببنائه

ستقوم بما يلي:

  • ضبط حزمة تطوير البرامج (SDK) ABAP المثبّتة على نظام SAP للاتصال بواجهات Google APIs
  • يمكنك إنشاء مثال على برنامج لإعداد التقارير من أجل الاتصال بـ "تكنولوجيات الذكاء الاصطناعي من Gemini" وإجراء تحليل للآراء بشأن مراجعات المنتجات.

2. المتطلبات

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

3- قبل البدء

  • في Google Cloud Console، ضمن صفحة أداة اختيار المشاريع، اختَر مشروعًا على Google Cloud أو أنشئه (على سبيل المثال: abap-sdk-poc).
  • تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع. يمكنك تخطّي هذه الخطوة إذا كنت تستخدم حساب الفترة التجريبية المجانية لمدة 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 Platform على Google Cloud Platform وثبِّت حزمة ABAP SDK، ثم استخدِم كلمة المرور واسم المستخدم التلقائيَين اللذَين يتم توفيرهما لتسجيل الدخول.

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

الحقل

الوصف

اسم Google Cloud Key

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 لبيانات اعتماد "إدارة الهوية وإمكانية الوصول" وواجهة برمجة تطبيقات Vertex AI باستخدام رمز المعاملة SM59. إذا لزم الأمر، يُرجى الرجوع هنا للحصول على خطوات تفصيلية حول إنشاء وجهة RFC.

اسم وجهة RFC

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

ملاحظات

ZGOOG_IAMCREDENTIALS

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

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

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

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

b6370d12bd332318.png

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

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

  1. في SAP GUI، أدخِل رمز المعاملة SPRO.
  2. انقر على SAP Reference IMG.
  3. انقر على ABAP SDK for Google Cloud > الإعدادات الأساسية > ضبط عملية ربط الخدمة
  4. انقر على إدخالات جديدة لـ IAM Credential و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 (EPM)، وهو تطبيق شامل توفّره SAP لأغراض العرض والاختبار. يتم تخزين مراجعات المنتج التي سيتم استخدامها لتحليل الآراء في الجدول SNWD_REV_ITEM.

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

2bae72d437ea639.png

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

f9792a91ef9f0736.png

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

f822f9ab71d37a9.png

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

69fe380d5ca7b276.png

في القسم التالي، سنستخدم نماذج مراجعات المنتجات هذه لتحليل الآراء باستخدام النموذج اللغوي الكبير من 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 مراجعات للمنتجات ويستخدم حزمة ABAP SDK لطلب نموذج Gemini Pro لتحديد مدى توافق الآراء في كل مراجعة. وبناءً على تحليله، يمكن أن يعرض النموذج قيمًا مثل "موجب" و"سلبي" و"محايد" أو "مختلط".

  1. سجِّل الدخول إلى نظام SAP.
  2. انتقِل إلى رمز المعاملة SE38 وأنشئ "برنامج تقارير" بالاسم ZSENTIMENT_ANALYSIS.
  3. في النافذة المنبثقة التي تظهر، أدخِل التفاصيل كما هو موضّح أدناه، ثم انقر على حفظ.

a2158523ec8ef3c7.png

  1. في النافذة المنبثقة التالية، اختَر الكائن المحلي أو قدِّم اسم الحزمة حسب الحاجة.
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 AI مع حزمة ABAP SDK for 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