1. บทนำ
ในโค้ดแล็บนี้ เราได้แสดงขั้นตอนในการเรียกใช้โมเดลพื้นฐาน PaLM 2 Text (text-bison) ของ Google Cloud Vertex AI จากสภาพแวดล้อม ABAP โดยใช้ ABAP SDK สําหรับ Google Cloud
บริการ Google Cloud ที่ใช้ในโค้ดแล็บนี้มีดังนี้
- Vertex AI
- Cloud Shell
สิ่งที่คุณจะสร้าง
คุณจะต้องสร้างสิ่งต่อไปนี้
- เปิดใช้ Vertex AI API ในโปรเจ็กต์ Google Cloud
- ส่งพรอมต์ไปยังโมเดลข้อความ PaLM 2 ของ Vertex AI และรับคำตอบโดยใช้ ABAP SDK สำหรับ Google Cloud
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. ก่อนเริ่มต้น
- คุณได้ติดตั้ง ABAP SDK สําหรับ Google Cloud ในระบบแล้ว คุณสามารถดูข้อมูลใน Codelab - Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK เพื่อตั้งค่าระบบใหม่
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud จากคอนโซลระบบคลาวด์ ให้คลิกเปิดใช้งาน 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 สําหรับข้อความ: โมเดลพื้นฐาน PaLM 2 สําหรับข้อความ (text-bison, text-unicorn) ได้รับการเพิ่มประสิทธิภาพสําหรับงานภาษาธรรมชาติที่หลากหลาย เช่น การวิเคราะห์ความรู้สึก การคํานวณเอนทิตี และการสร้างเนื้อหา
- Text-bison: Text-bison เป็นโมเดลภาษาขนาดใหญ่ (LLM) ที่พัฒนาโดย AI ของ Google ซึ่งเป็นโมเดลพื้นฐานสําหรับ GenAI ที่สามารถทําความเข้าใจและสร้างภาษาได้
5. เปิดใช้ Vertex AI ในโปรเจ็กต์ Google Cloud
- ไปที่โปรเจ็กต์ Google Cloud แล้วคลิก "เปิดใช้งาน Cloud Shell" ที่มุมขวาบน
- เมื่อเปิดใช้งานเชลล์แล้ว ให้เรียกใช้คําสั่งด้านล่างเพื่อเปิดใช้ Cloud Secret Manager API ในโปรเจ็กต์ 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"
- จากนั้นเพิ่มบทบาทที่จําเป็นลงในบัญชีบริการที่สร้างในขั้นตอนข้างต้นเพื่อเข้าถึง API
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 ต่อได้ สําหรับการกําหนดค่าที่เกี่ยวข้องกับการตรวจสอบสิทธิ์และการเชื่อมต่อ ABAP SDK สําหรับ Google Cloud จะใช้ตาราง /GOOG/CLIENT_KEY และ /GOOG/SERVIC_MAP
หากต้องการดูแลรักษาการกําหนดค่าในตาราง /GOOG/CLIENT_KEY ให้ทําตามขั้นตอนต่อไปนี้
- ใน SAP GUI ให้ป้อนรหัสธุรกรรม SPRO
- คลิก SAP Reference IMG
- คลิก ABAP SDK สําหรับ 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 สำหรับปลายทางนั้นและสร้างการแมปสำหรับ API ในตาราง /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
- คลิก ABAP SDK สำหรับ Google Cloud > การตั้งค่าพื้นฐาน > กำหนดค่าการแมปบริการ
- คงค่าต่อไปนี้ในช่อง
ช่อง | คำอธิบาย |
ชื่อคีย์ Google Cloud | VERTEX_AI_DEMO |
ชื่อบริการของ Google | aiplatform:v1 |
ปลายทาง RFC | ZGOOG_VERTEXAI_V1 |
8. เรียกใช้ PaLM 2 Text โดยใช้ SDK
- เข้าสู่ระบบระบบ SAP
- ไปที่รหัสธุรกรรม SE38 และสร้างรายงานชื่อ "ZDEMO_VERTEX_AI"
- ในป๊อปอัปที่เปิดขึ้น ให้ระบุรายละเอียดตามที่แสดงด้านล่าง แล้วคลิกบันทึก
ในป๊อปอัปถัดไป ให้เลือกออบเจ็กต์ในเครื่องหรือระบุชื่อแพ็กเกจตามความเหมาะสม
- ในตัวแก้ไข ABAP ให้เพิ่มข้อมูลโค้ดต่อไปนี้
- ในข้อมูลโค้ดนี้ เราจะส่งเนื้อหาอีเมลสำหรับคำขอคำสั่งซื้อด่วนพร้อมวิธีการแยกวิเคราะห์เพื่อดึงข้อมูลแอตทริบิวต์คำสั่งซื้อ เช่น ชื่อลูกค้า ชื่อบริษัท ชื่อลูกค้า รายการ ชื่อสินค้า จำนวนคำสั่งซื้อ ที่อยู่สำหรับจัดส่ง และวันที่นำส่ง
- การประกาศประเภท ABAP มีไว้เพื่อเตรียมคำขอและบันทึกคำตอบจากโมเดลข้อความ PaLM 2 ของ Vertex AI ตามเอกสารประกอบที่นี่
* 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 จากโปรแกรม ABAP เพื่อแยกวิเคราะห์คําขอสั่งซื้อโดยใช้ ABAP SDK สําหรับ Google Cloud เรียบร้อยแล้ว
แทนที่จะเขียนโค้ดตายตัว คุณอาจลองรับเนื้อหาอีเมลจากกล่องจดหมาย Gmail โดยใช้ ABAP SDK สําหรับ Google Cloud แล้วส่งเนื้อหาไปยัง Vertex AI ตามที่อธิบายไว้ในโค้ดแล็บนี้
10. ล้างข้อมูล
หากไม่ต้องการทำ Codelab เพิ่มเติมที่เกี่ยวข้องกับ ABAP SDK สำหรับ 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