1. Pengantar
Dalam codelab ini, kami telah mencantumkan langkah-langkah tentang cara memanggil model dasar PaLM 2 Text (text-bison) Google Cloud Vertex AI dari lingkungan ABAP Anda menggunakan ABAP SDK untuk Google Cloud.
Layanan Google Cloud berikut digunakan dalam codelab ini:
- Vertex AI
- Cloud Shell
Yang akan Anda build
Anda akan membuat hal berikut:
- Aktifkan Vertex AI API di project Google Cloud.
- Teruskan perintah ke model Teks PaLM 2 Vertex AI dan terima respons menggunakan ABAP SDK untuk Google Cloud.
2. Persyaratan
- Browser, seperti Chrome atau Firefox.
- Project Google Cloud dengan penagihan diaktifkan atau Buat akun Uji Coba Gratis 90 Hari untuk Google Cloud Platform.
- SAP GUI (Windows atau Java) yang diinstal di sistem Anda. Jika SAP GUI sudah diinstal di laptop, hubungkan ke SAP menggunakan alamat IP eksternal VM sebagai IP Server Aplikasi. Jika menggunakan Mac, Anda juga dapat menginstal SAP GUI untuk Java yang tersedia di link ini.
3. Sebelum memulai
- Anda telah menginstal ABAP SDK untuk Google Cloud di sistem Anda. Anda dapat melihat codelab - Menginstal Uji Coba Platform ABAP 1909 di Google Cloud Platform dan Menginstal ABAP SDK untuk menyiapkan sistem baru.
- Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud. Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:
- Jalankan perintah berikut untuk melakukan autentikasi untuk akun Anda dan menetapkan project default ke
abap-sdk-poc
. Zonaus-west4-b
digunakan sebagai contoh. Jika diperlukan, ubah project dan zona dalam perintah berikut berdasarkan preferensi Anda.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. Ringkasan
Berikut adalah ringkasan singkat tentang beberapa entitas Vertex AI yang akan Anda gunakan dalam codelab ini:
- PaLM 2 untuk Teks: Model dasar PaLM 2 untuk Teks (text-bison, text-unicorn) dioptimalkan untuk berbagai tugas natural language seperti analisis sentimen, ekstraksi entity, dan pembuatan konten.
- Text-bison: Text-bison adalah model bahasa besar (LLM) yang dikembangkan oleh AI Google. Ini adalah model dasar untuk AI Generatif yang dapat memahami dan menghasilkan bahasa.
5. Mengaktifkan Vertex AI di Project Google Cloud
- Buka Project Google Cloud Anda dan Klik Aktifkan Cloud Shell di pojok kanan atas.
- Setelah shell diaktifkan, jalankan perintah di bawah untuk mengaktifkan Cloud Secret Manager API di Project Google Cloud Anda.
gcloud services enable aiplatform.googleapis.com
Sekarang Anda seharusnya telah mengaktifkan Vertex AI API di Project Google Cloud.
6. Membuat Akun Layanan dengan peran pengguna
Untuk membuat akun layanan dengan peran yang diperlukan, lakukan langkah-langkah berikut:
- Jalankan perintah berikut di terminal Cloud Shell:
gcloud iam service-accounts create abap-sdk-vertexai-tester \
--display-name="Service Account for Vertex AI"
- Sekarang, tambahkan peran yang diperlukan ke akun layanan yang dibuat pada langkah di atas untuk mengakses 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'
Perintah di atas menggunakan abap-sdk-poc sebagai nama template untuk Project Google Cloud. Ganti dengan project ID Anda.
- Untuk memverifikasi bahwa peran telah ditambahkan, buka halaman IAM. Akun layanan yang Anda buat akan tercantum beserta peran yang telah ditetapkan.
7. Membuat konfigurasi SDK di SAP
Setelah Anda menyiapkan prasyarat di sisi Google Cloud, kita dapat melanjutkan konfigurasi di sisi SAP. Untuk konfigurasi terkait autentikasi dan konektivitas, ABAP SDK untuk Google Cloud menggunakan tabel /GOOG/CLIENT_KEY dan /GOOG/SERVIC_MAP.
Untuk mempertahankan konfigurasi di tabel /GOOG/CLIENT_KEY, lakukan langkah-langkah berikut:
- Di SAP GUI, masukkan kode transaksi SPRO.
- Klik IMG Referensi SAP.
- Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
- Pertahankan nilai berikut terhadap kolom:
Kolom | Deskripsi |
Google Cloud Key Name | VERTEX_AI_DEMO |
Nama Akun Layanan Google Cloud | abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com |
Google Cloud Scope | https://www.googleapis.com/auth/cloud-platform |
ID Project Google Cloud | abap-sdk-poc |
Class Otorisasi | /GOOG/CL_AUTH_GOOGLE |
Biarkan kolom lainnya kosong
Vertex AI memiliki endpoint khusus region, sehingga kita harus membuat tujuan RFC untuk endpoint dan membuat pemetaan untuk API di tabel /GOOG/SERVIC_MAP berdasarkan kunci klien. (Lihat link ini untuk endpoint layanan khusus region untuk Vertex AI).
Berikut adalah langkah-langkah untuk membuat RFC untuk codelab.
- Buka kode transaksi SM59 dan buat koneksi jenis "G".
- Berikan nama tujuan sebagai "ZGOOG_VERTEXAI_V1".
- Berikan deskripsi sesuai kebutuhan dan port sebagai "443".
- Berikan alamat "Host" sebagai " us-west4-aiplatform.googleapis.com" karena kita merujuk ke lokasi "us-west4-b" di codelab.
Di bawah ini adalah screenshot tujuan RFC untuk referensi Anda.
Untuk mempertahankan konfigurasi di tabel /GOOG/SERVIC_MAP, lakukan langkah-langkah berikut:
- Di SAP GUI, masukkan kode transaksi SPRO.
- Klik IMG Referensi SAP.
- Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.
- Pertahankan nilai berikut terhadap kolom:
Kolom | Deskripsi |
Google Cloud Key Name | VERTEX_AI_DEMO |
Google Service Name | aiplatform:v1 |
RFC Destination | ZGOOG_VERTEXAI_V1 |
8. Memanggil Teks PaLM 2 menggunakan SDK
- Login ke sistem SAP Anda.
- Buka kode transaksi SE38 dan buat laporan dengan nama "ZDEMO_VERTEX_AI".
- Di pop-up yang terbuka, berikan detail seperti yang ditunjukkan di bawah, lalu klik Simpan.
Di pop-up berikutnya, pilih Local Object atau berikan nama paket yang sesuai.
- Di ABAP Editor, tambahkan cuplikan kode berikut:
- Dalam cuplikan ini, sebagai perintah, kita meneruskan konten email untuk permintaan pesanan mendesak beserta petunjuk untuk mengurainya guna mengekstrak atribut pesanan seperti Nama Pelanggan, Nama Perusahaan, Penunjukan Pelanggan, Nama Item, Jumlah Pesanan, Alamat Pengiriman, dan Tanggal Pengiriman.
- Deklarasi jenis ABAP adalah untuk menyiapkan permintaan dan mengambil respons dari model Teks PaLM 2 Vertex AI sesuai dengan dokumentasi di sini.
* 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.
- Simpan dan aktifkan program laporan.
- Jalankan laporan (F8).
Setelah eksekusi berhasil, Anda akan melihat output laporan seperti yang ditunjukkan di bawah dengan atribut pesanan yang diekstrak seperti yang diinstruksikan dalam perintah.
9. Selamat
Selamat! Anda telah berhasil memanggil model Teks PaLM 2 Vertex AI dari program ABAP untuk mengurai permintaan pesanan menggunakan ABAP SDK untuk Google Cloud.
Daripada melakukan hard code, Anda juga dapat mempertimbangkan untuk mendapatkan konten email dari kotak masuk Gmail menggunakan ABAP SDK untuk Google Cloud, lalu meneruskan konten tersebut ke Vertex AI seperti yang dijelaskan dalam codelab ini.
10. Pembersihan
Jika Anda tidak ingin melanjutkan codelab tambahan yang terkait dengan ABAP SDK untuk Google Cloud, lanjutkan pembersihan.
Menghapus project
- Hapus project Google Cloud:
gcloud projects delete abap-sdk-poc
Menghapus resource satu per satu
- Hapus instance komputasi:
gcloud compute instances delete abap-trial-docker
- Hapus aturan firewall:
gcloud compute firewall-rules delete sapmachine
- Hapus akun layanan:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com