1. مقدمة
في هذا الدرس التطبيقي، أدرجنا الخطوات اللازمة لاستدعاء نموذج الأساس PaLM 2 Text (text-bison) من Vertex AI على Google Cloud من بيئة ABAP باستخدام ABAP SDK لخدمة Google Cloud.
يتم استخدام خدمات Google Cloud التالية في هذا الدرس العملي:
- Vertex AI
- Cloud Shell
ما ستنشئه
ستنشئ ما يلي:
- فعِّل واجهة Vertex AI API في مشروع على Google Cloud.
- إرسال طلب إلى نموذج PaLM 2 Text في Vertex AI وتلقّي ردّ باستخدام حزمة تطوير البرامج (SDK) للغة ABAP في Google Cloud
2. المتطلّبات
- متصفّح، مثل Chrome أو Firefox
- مشروع Google Cloud تم تفعيل الفوترة فيه أو إنشاء حساب فترة تجريبية مجانية لمدة 90 يومًا على Google Cloud Platform
- يجب أن يكون SAP GUI (Windows أو Java) مثبّتًا على نظامك. إذا كان SAP GUI مثبَّتًا على الكمبيوتر المحمول، يمكنك الاتصال بنظام SAP باستخدام عنوان IP الخارجي للجهاز الافتراضي كعنوان IP لخادم التطبيقات. إذا كنت تستخدم جهاز Mac، يمكنك أيضًا تثبيت SAP GUI for Java المتاح في هذا الرابط.
3- قبل البدء
- لقد ثبَّت ABAP SDK for Google Cloud على نظامك. يمكنك الرجوع إلى الدرس التطبيقي تثبيت الإصدار التجريبي من منصة ABAP 1909 على Google Cloud Platform وتثبيت حزمة تطوير البرامج (SDK) لمنصة ABAP لإعداد نظام جديد.
- ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud. من Cloud Console، انقر على تفعيل Cloud Shell في أعلى يسار الصفحة:
- شغِّل الأوامر التالية للمصادقة على حسابك وضبط المشروع التلقائي على
abap-sdk-poc
. يتم استخدام المنطقةus-west4-b
كمثال. إذا لزم الأمر، يُرجى تغيير المشروع والمنطقة في الأوامر التالية استنادًا إلى إعداداتك المفضّلة.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. نظرة عامة
في ما يلي نظرة عامة سريعة على بعض عناصر Vertex AI التي ستتعامل معها في هذا الدرس العملي:
- PaLM 2 for Text: تم تحسين النماذج الأساسية PaLM 2 for Text (text-bison وtext-unicorn) لتناسب مجموعة متنوعة من مهام اللغة الطبيعية، مثل تحليل المشاعر واستخراج الكيانات وإنشاء المحتوى.
- Text-bison: Text-bison هو نموذج لغوي كبير (LLM) طوّرته Google AI. وهو نموذج أساسي للذكاء الاصطناعي التوليدي يمكنه فهم اللغة وإنشائها.
5- تفعيل Vertex AI في مشروعك على Google Cloud
- انتقِل إلى مشروعك على Google Cloud وانقر على "تفعيل Cloud Shell" في أعلى يسار الصفحة.
- بعد تفعيل الصدفة، نفِّذ الأمر أدناه لتفعيل واجهة برمجة التطبيقات Cloud Secret Manager في مشروعك على Google Cloud.
gcloud services enable aiplatform.googleapis.com
يجب أن تكون واجهة برمجة التطبيقات Vertex AI API مفعّلة الآن في مشروعك على Google Cloud.
6. إنشاء حساب خدمة بأدوار المستخدمين
لإنشاء حساب خدمة بالأدوار المطلوبة، اتّبِع الخطوات التالية:
- نفِّذ الأمر التالي في وحدة Cloud Shell الطرفية:
gcloud iam service-accounts create abap-sdk-vertexai-tester \
--display-name="Service Account for Vertex AI"
- الآن، أضِف الدور المطلوب إلى حساب الخدمة الذي تم إنشاؤه في الخطوة أعلاه للوصول إلى واجهة برمجة التطبيقات.
gcloud endpoints services add-iam-policy-binding aiplatform.googleapis.com \ --member='serviceAccount:abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/aiplatform.endpoints.predict'
تستخدم الأوامر أعلاه abap-sdk-poc كاسم نموذج لمشروع Google Cloud. استبدِلها برقم تعريف مشروعك.
- للتأكّد من إضافة الدور، انتقِل إلى صفحة IAM. يجب أن يظهر حساب الخدمة الذي أنشأته مع الدور الذي تمّ تعيينه له.
7. إنشاء إعدادات حزمة تطوير البرامج (SDK) في SAP
بعد إعداد المتطلبات الأساسية على Google Cloud، يمكننا المتابعة مع عملية الإعداد على SAP. بالنسبة إلى الإعدادات المتعلّقة بالمصادقة والاتصال، تستخدم حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud الجدولَين /GOOG/CLIENT_KEY و /GOOG/SERVIC_MAP.
للحفاظ على الإعدادات في الجدول /GOOG/CLIENT_KEY، اتّبِع الخطوات التالية:
- في SAP GUI، أدخِل رمز المعاملة SPRO.
- انقر على SAP Reference IMG.
- انقر على حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud > الإعدادات الأساسية > إعداد مفتاح العميل.
- احتفِظ بالقيم التالية مقابل الحقول:
الحقل | الوصف |
اسم مفتاح Google Cloud | VERTEX_AI_DEMO |
اسم حساب خدمة Google Cloud | abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com |
نطاق Google Cloud | https://www.googleapis.com/auth/cloud-platform |
معرّف مشروع Google Cloud | abap-sdk-poc |
فئة التفويض | /GOOG/CL_AUTH_GOOGLE |
اترك الحقول الأخرى فارغة
تتضمّن Vertex AI نقاط نهاية خاصة بكل منطقة، وعلينا إنشاء وجهة RFC لنقطة النهاية وإنشاء عملية الربط لواجهة برمجة التطبيقات في الجدول /GOOG/SERVIC_MAP مقابل مفتاح العميل. (يُرجى الرجوع إلى هذا الرابط لمعرفة نقاط نهاية الخدمة الخاصة بمنطقة Vertex AI).
في ما يلي خطوات إنشاء طلب تعليقات RFC بشأن نموذج التعليم البرمجي.
- انتقِل إلى رمز المعاملة SM59 وأنشِئ اتصالاً من النوع "G".
- أدخِل اسم الوجهة "ZGOOG_VERTEXAI_V1".
- أدخِل الأوصاف المطلوبة والمنفذ "443".
- أدخِل عنوان "المضيف" على النحو التالي: " us-west4-aiplatform.googleapis.com" لأنّنا نشير إلى الموقع الجغرافي "us-west4-b" في تجربة البرمجة.
في ما يلي لقطة شاشة لوجهة RFC يمكنك الرجوع إليها.
للحفاظ على الإعداد في الجدول /GOOG/SERVIC_MAP، اتّبِع الخطوات التالية:
- في SAP GUI، أدخِل رمز المعاملة SPRO.
- انقر على SAP Reference IMG.
- انقر على حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud > الإعدادات الأساسية > إعداد ربط الخدمات.
- احتفِظ بالقيم التالية مقابل الحقول:
الحقل | الوصف |
اسم مفتاح Google Cloud | VERTEX_AI_DEMO |
اسم خدمة Google | aiplatform:v1 |
وجهة RFC | ZGOOG_VERTEXAI_V1 |
8. استدعاء PaLM 2 Text باستخدام حزمة تطوير البرامج (SDK)
- سجِّل الدخول إلى نظام SAP.
- انتقِل إلى رمز المعاملة SE38 وأنشئ تقريرًا بالاسم "ZDEMO_VERTEX_AI".
- في النافذة المنبثقة التي تظهر، أدخِل التفاصيل كما هو موضّح أدناه وانقر على حفظ.
في النافذة المنبثقة التالية، اختَر Local Object (كائن محلي) أو أدخِل اسم حزمة حسب الاقتضاء.
- في "أداة تعديل ABAP"، أضِف مقتطف الرمز التالي:
- في هذا المقتطف، نمرّر محتوى الرسالة الإلكترونية لطلب عاجل مع تعليمات لتحليله واستخراج سمات الطلب، مثل اسم العميل واسم الشركة وتصنيف العميل واسم المنتج وكمية الطلب وعنوان الشحن وتاريخ التسليم.
- تُستخدم تعريفات أنواع ABAP لإعداد الطلب وتلقّي الردّ من نموذج Vertex AI PaLM 2 Text وفقًا للمستندات هنا.
* Types declarations
TYPES:
BEGIN OF ty_instances,
content TYPE string,
END OF ty_instances.
TYPES:
tt_instances TYPE STANDARD TABLE OF ty_instances WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_parameters,
max_output_tokens TYPE i,
temperature TYPE f,
top_k TYPE i,
top_p TYPE f,
END OF ty_parameters.
TYPES ty_categories TYPE string .
TYPES:
BEGIN OF ty_scores,
scores TYPE string,
END OF ty_scores .
TYPES:
tt_categories TYPE STANDARD TABLE OF ty_categories WITH DEFAULT KEY .
TYPES:
tt_scores TYPE STANDARD TABLE OF ty_scores WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_safety_attributes,
blocked TYPE abap_bool,
categories TYPE tt_categories,
scores TYPE tt_scores,
END OF ty_safety_attributes .
TYPES:
BEGIN OF ty_predictions,
content TYPE string,
safety_attributes TYPE ty_safety_attributes,
END OF ty_predictions .
TYPES:
tt_predictions TYPE STANDARD TABLE OF ty_predictions WITH DEFAULT KEY .
TYPES:
BEGIN OF ty_output,
deployed_model_id TYPE string,
metadata TYPE REF TO data,
model TYPE string,
model_display_name TYPE string,
model_version_id TYPE string,
predictions TYPE tt_predictions,
END OF ty_output.
* Data declarations
DATA:
lv_p_projects_id TYPE string,
lv_p_locations_id TYPE string,
lv_p_publishers_id TYPE string,
lv_p_models_id TYPE string,
ls_input TYPE /goog/cl_aiplatform_v1=>ty_001.
DATA:
lv_email_text TYPE string.
CONSTANTS: lc_ob TYPE c VALUE '{',
lc_cb TYPE c VALUE '}'.
* Email content having order request
lv_email_text = |'Hello, We are running low on Dark Chocolates, please ship 20 units of "Lindt 90% Dark Chocolates"'| &&
|' and 10 units of "Toblerone Dark Bar 100g" to "Google Cloud, 1 East 2'| &&
|'4th St, Kearney NE" by as early as possible. Thanks and Regards, John Doe, Procurement Manager, Google Cloud'|.
TRY.
DATA(lv_raw) = VALUE string( ).
* Open HTTP Connection
DATA(lo_client) = NEW /goog/cl_aiplatform_v1( iv_key_name = 'VERTEX_AI_DEMO' ).
* Populate relevant parameters
lv_p_projects_id = lo_client->gv_project_id.
lv_p_locations_id = 'us-west4-b'.
lv_p_publishers_id = 'google'.
lv_p_models_id = 'text-bison'.
* Call API method: aiplatform.projects.locations.publishers.models.predict
CALL METHOD lo_client->predict_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 = VALUE #(
parameters = NEW ty_parameters(
max_output_tokens = 256
temperature = '0.2'
top_k = '40'
top_p = '0.8' )
* Pass the prompt with email content and instructions to get order attributes
instances = NEW tt_instances( ( content =
|'Give me the Customer Name, Company Name, Customer Designation, Item Name, Order Quantity, Shipping address, Delivery Date'| &&
|'from an email context. Structure the response in JSON camelcase format with fields corresponding to each entities. Place the ordered items in a JSON nest'| &&
|'Default the delivery date to a future date in DD.MM.YYYY format. Here is the email content:'| && lv_email_text ) ) )
IMPORTING
es_raw = lv_raw
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp).
IF lo_client->is_success( lv_ret_code ).
DATA(ls_output_llm) = VALUE ty_output( ).
* Deserializing API response to get model response
/goog/cl_json_util=>deserialize_json( EXPORTING iv_json = lv_raw
iv_pretty_name = /ui2/cl_json=>pretty_mode-extended
IMPORTING es_data = ls_output_llm ).
cl_demo_output=>new(
)->begin_section( 'API Call Successful:'
)->write_text( 'Respose from model:'
)->write_text( ls_output_llm-predictions[ 1 ]-content
)->display( ).
ELSE.
cl_demo_output=>new(
)->begin_section( 'API Call Unsuccessful:'
)->write_text( 'Error Message:'
)->write_text( lv_err_text
)->display( ).
ENDIF.
* Close HTTP Connection
lo_client->close( ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
DATA(lv_error) = lo_exception->get_text( ).
cl_demo_output=>new(
)->begin_section( 'Exception Occured:'
)->write_text( lv_error
)->display( ).
ENDTRY.
- احفظ برنامج التقرير وفعِّله.
- نفِّذ التقرير (F8).
عند التنفيذ بنجاح، من المفترض أن تظهر لك نتائج التقرير كما هو موضّح أدناه مع سمات الطلب المستخرَجة كما هو موضّح في الطلب.
9- تهانينا
تهانينا! لقد طلبت بنجاح نموذج Vertex AI PaLM 2 Text من برنامج ABAP لتحليل طلب شراء باستخدام حزمة تطوير البرامج (SDK) ABAP لخدمة Google Cloud.
بدلاً من الترميز الثابت، يمكنك أيضًا التفكير في الحصول على محتوى البريد الإلكتروني من صندوق الوارد في Gmail باستخدام حزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud، ثم تمرير المحتوى إلى Vertex AI كما هو موضّح في هذا الدرس العملي.
10. تَنظيم
إذا كنت لا تريد مواصلة استخدام دروس البرمجة الإضافية المتعلّقة بحزمة تطوير البرامج (SDK) للغة ABAP على Google Cloud، يُرجى المتابعة وتنفيذ عملية التنظيف.
حذف المشروع
- احذف مشروع Google Cloud باتّباع الخطوات التالية:
gcloud projects delete abap-sdk-poc
حذف موارد فردية
- احذف الجهاز الظاهري:
gcloud compute instances delete abap-trial-docker
- احذف قواعد جدار الحماية:
gcloud compute firewall-rules delete sapmachine
- احذف حساب الخدمة:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com