1. Wprowadzenie
W tym module znajdziesz instrukcje wywoływania modelu podstawowego PaLM 2 Text (text-bison) z Google Cloud Vertex AI w środowisku ABAP za pomocą ABAP SDK for Google Cloud.
W tym module używane są te usługi Google Cloud:
- Vertex AI
- Cloud Shell
Co utworzysz
Utworzysz:
- włączyć Vertex AI API w projekcie Google Cloud;
- Przekaż prompt do modelu tekstowego PaLM 2 w Vertex AI i otrzymaj odpowiedź za pomocą ABAP SDK for Google Cloud.
2. Wymagania
- przeglądarka, np. Chrome lub Firefox;
- Projekt Google Cloud z włączonym rozliczeniem lub utwórz 90-dniowe konto próbne w Google Cloud Platform.
- SAP GUI (Windows lub Java) zainstalowany w systemie. Jeśli SAP GUI jest już zainstalowany na laptopie, połącz się z SAP, używając zewnętrznego adresu IP maszyny wirtualnej jako adresu IP serwera aplikacji. Jeśli korzystasz z komputera Mac, możesz też zainstalować interfejs SAP GUI dla Javy, który jest dostępny pod tym linkiem.
3. Zanim zaczniesz
- Na Twoim systemie jest zainstalowany pakiet ABAP SDK for Google Cloud. Aby skonfigurować nowy system, zapoznaj się z samouczkiem Install ABAP Platform Trial 1909 on Google Cloud Platform and Install ABAP SDK (Instalowanie wersji próbnej platformy ABAP 1909 na Google Cloud Platform i instalowanie pakietu ABAP SDK).
- Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud. W prawym górnym rogu Cloud Console kliknij Aktywuj Cloud Shell:
- Uruchom te polecenia, aby uwierzytelnić się na koncie i ustawić domyślny projekt na
abap-sdk-poc
. Jako przykładu używamy strefyus-west4-b
. W razie potrzeby zmień projekt i strefę w tych poleceniach zgodnie ze swoimi preferencjami.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
4. Przegląd
Oto krótkie omówienie niektórych elementów Vertex AI, z którymi będziesz pracować w tym module:
- PaLM 2 for Text: modele podstawowe PaLM 2 for Text (text-bison, text-unicorn) są zoptymalizowane pod kątem różnych zadań związanych z językiem naturalnym, takich jak analiza nastawienia, ekstrakcja encji i tworzenie treści.
- Text-bison: to duży model językowy (LLM) opracowany przez Google AI. Jest to model podstawowy generatywnej AI, który rozumie język i potrafi generować w nim wypowiedzi.
5. Włączanie Vertex AI w projekcie Google Cloud
- Otwórz projekt Google Cloud i w prawym górnym rogu kliknij Aktywuj Cloud Shell.
- Po aktywowaniu powłoki wykonaj poniższe polecenie, aby włączyć interfejs API Cloud Secret Manager w projekcie Google Cloud.
gcloud services enable aiplatform.googleapis.com
Interfejs Vertex AI API powinien być teraz włączony w projekcie Google Cloud.
6. Tworzenie konta usługi z rolami użytkowników
Aby utworzyć konto usługi z wymaganymi rolami, wykonaj te czynności:
- Uruchom w terminalu Cloud Shell to polecenie:
gcloud iam service-accounts create abap-sdk-vertexai-tester \
--display-name="Service Account for Vertex AI"
- Teraz dodaj do konta usługi utworzonego w poprzednim kroku wymaganą rolę, aby uzyskać dostęp do interfejsu 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'
W powyższych poleceniach nazwa szablonu projektu Google Cloud to abap-sdk-poc. Zastąp go identyfikatorem projektu.
- Aby sprawdzić, czy rola została dodana, otwórz stronę IAM. Utworzone konto usługi powinno być widoczne wraz z przypisaną do niego rolą.
7. Tworzenie konfiguracji pakietu SDK w SAP
Po skonfigurowaniu wymagań wstępnych po stronie Google Cloud możemy przejść do konfiguracji po stronie SAP. W przypadku konfiguracji związanej z uwierzytelnianiem i łącznością pakiet ABAP SDK for Google Cloud korzysta z tabel /GOOG/CLIENT_KEY i /GOOG/SERVIC_MAP.
Aby zachować konfigurację w tabeli /GOOG/CLIENT_KEY, wykonaj te czynności:
- W SAP GUI wpisz kod transakcji SPRO.
- Kliknij SAP Reference IMG (SAP Reference IMG).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj klucz klienta.
- W polach zachowaj te wartości:
Pole | Opis |
Nazwa klucza Google Cloud | VERTEX_AI_DEMO |
Nazwa konta usługi Google Cloud | abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com |
Zakres Google Cloud | https://www.googleapis.com/auth/cloud-platform |
Identyfikator projektu Google Cloud | abap-sdk-poc |
Klasa autoryzacji | /GOOG/CL_AUTH_GOOGLE |
Pozostaw pozostałe pola puste.
Vertex AI ma punkty końcowe specyficzne dla regionu, więc musimy utworzyć miejsce docelowe RFC dla punktu końcowego i zbudować mapowanie interfejsu API w tabeli /GOOG/SERVIC_MAP względem klucza klienta. (Punkty końcowe usług Vertex AI w poszczególnych regionach znajdziesz pod tym linkiem).
Poniżej znajdziesz instrukcje tworzenia RFC na potrzeby codelabu.
- Otwórz kod transakcji SM59 i utwórz połączenie typu „G”.
- Podaj nazwę miejsca docelowego jako „ZGOOG_VERTEXAI_V1”.
- Podaj wymagane opisy i port „443”.
- W przypadku adresu „Host” podaj „us-west4-aiplatform.googleapis.com”, ponieważ w tym module używamy lokalizacji „us-west4-b”.
Poniżej znajdziesz zrzut ekranu miejsca docelowego RFC.
Aby zachować konfigurację w tabeli /GOOG/SERVIC_MAP, wykonaj te czynności:
- W SAP GUI wpisz kod transakcji SPRO.
- Kliknij SAP Reference IMG (SAP Reference IMG).
- Kliknij ABAP SDK for Google Cloud > Ustawienia podstawowe > Skonfiguruj mapowanie usług.
- W polach zachowaj te wartości:
Pole | Opis |
Nazwa klucza Google Cloud | VERTEX_AI_DEMO |
Nazwa usługi Google | aiplatform:v1 |
Miejsce docelowe RFC | ZGOOG_VERTEXAI_V1 |
8. Wywoływanie PaLM 2 Text za pomocą pakietu SDK
- Zaloguj się w systemie SAP.
- Otwórz kod transakcji SE38 i utwórz raport o nazwie „ZDEMO_VERTEX_AI”.
- W wyświetlonym okienku podaj szczegóły jak poniżej i kliknij Zapisz.
W następnym wyskakującym okienku wybierz Local Object (Obiekt lokalny) lub podaj nazwę pakietu.
- W edytorze ABAP dodaj ten fragment kodu:
- W tym fragmencie jako prompt przekazujemy treść e-maila z pilną prośbą o zamówienie wraz z instrukcjami dotyczącymi analizy, aby wyodrębnić atrybuty zamówienia, takie jak imię i nazwisko klienta, nazwa firmy, stanowisko klienta, nazwa produktu, ilość zamówienia, adres dostawy i data dostawy.
- Deklaracje typów ABAP służą do przygotowania żądania i przechwycenia odpowiedzi z modelu tekstowego Vertex AI PaLM 2 zgodnie z dokumentacją dostępną tutaj.
* 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.
- Zapisz i aktywuj program raportowania.
- Wykonaj raport (F8).
Po udanym wykonaniu zobaczysz dane wyjściowe raportu, jak pokazano poniżej, z wyodrębnionymi atrybutami zamówienia zgodnie z instrukcjami w prompcie.
9. Gratulacje
Gratulacje! Udało Ci się wywołać model tekstowy Vertex AI PaLM 2 z programu ABAP, aby przeanalizować prośbę o zamówienie za pomocą ABAP SDK for Google Cloud.
Zamiast kodowania na stałe możesz też pobrać treść e-maila ze skrzynki odbiorczej Gmaila za pomocą pakietu ABAP SDK for Google Cloud, a następnie przekazać ją do Vertex AI zgodnie z opisem w tym samouczku.
10. Czyszczenie danych
Jeśli nie chcesz kontynuować pracy z dodatkowymi ćwiczeniami dotyczącymi pakietu ABAP SDK do Google Cloud, przejdź do sekcji czyszczenia.
Usuwanie projektu
- Usuń projekt Google Cloud:
gcloud projects delete abap-sdk-poc
Usuwanie poszczególnych zasobów
- Usuń instancję obliczeniową:
gcloud compute instances delete abap-trial-docker
- Usuń reguły zapory sieciowej:
gcloud compute firewall-rules delete sapmachine
- Usuń konto usługi:
gcloud iam service-accounts delete \
abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com