1. Введение
В этой кодовой лаборатории мы перечислили шаги по вызову базовой модели PaLM 2 Text (text-bison) Google Cloud Vertex AI из среды ABAP с помощью ABAP SDK для Google Cloud .
В этой лабораторной работе используются следующие сервисы Google Cloud:
- Вершинный ИИ
- Cloud Shell
Что вы построите
Вам предстоит создать следующее:
- Включить API Vertex AI в проекте 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-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить SAP GUI для Java, доступный по этой ссылке.
3. Прежде чем начать
- Вы установили ABAP SDK для Google Cloud в своей системе. Чтобы настроить новую систему, ознакомьтесь с практической работой « Установка пробной версии ABAP Platform 1909 на Google Cloud Platform» и «Установка ABAP SDK» .
- Вы будете использовать 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 для текста: Базовые модели PaLM 2 для текста (text-bison, text-unicorn) оптимизированы для различных задач на естественном языке, таких как анализ настроений, извлечение сущностей и создание контента.
- Text-bison: Text-bison — это большая языковая модель (LLM), разработанная Google AI. Это основополагающая модель для GenAI, которая может понимать и генерировать язык.
5. Включите Vertex AI в вашем проекте Google Cloud
- Перейдите в свой проект Google Cloud и нажмите «Активировать Cloud Shell» в правом верхнем углу.
- После активации оболочки выполните следующую команду, чтобы включить API Cloud Secret Manager в вашем проекте Google Cloud.
gcloud services enable aiplatform.googleapis.com
Теперь в вашем проекте Google Cloud должен быть включен API Vertex AI.
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 введите код транзакции SPRO .
- Нажмите ссылку SAP IMG .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
- Поддерживайте следующие значения в полях:
Поле | Описание |
Имя ключа Google Cloud | VERTEX_AI_DEMO |
Имя учетной записи облачной службы Google | 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 введите код транзакции SPRO .
- Нажмите ссылку SAP 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 предназначены для подготовки запроса и получения ответа от текстовой модели Vertex AI PaLM 2 в соответствии с представленной здесь документацией.
* 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. Уборка
Если вы не хотите продолжать работу с дополнительными практическими занятиями, связанными с 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