1. Введение
В этой кодовой лаборатории мы перечислили шаги по вызову базовой модели PaLM 2 Text (text-bison) Google Cloud Vertex AI из вашей среды ABAP с помощью ABAP SDK для Google Cloud .
В этой лаборатории кода используются следующие сервисы Google Cloud:
- Вертексный ИИ
- Облачная оболочка
Что ты построишь
Вы создадите следующее:
- Включите 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 уже установлен на вашем ноутбуке, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить графический интерфейс SAP для Java, доступный по этой ссылке.
3. Прежде чем начать
- В вашей системе установлен ABAP SDK для Google Cloud . Вы можете обратиться к кодовой лаборатории — Установите пробную версию платформы ABAP 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 должен быть включен Vertex AI API.
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 .
- Щелкните Справочное IMG SAP .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента.
- Поддерживайте следующие значения для полей:
Поле | Описание |
Имя облачного ключа Google | VERTEX_AI_DEMO |
Имя учетной записи облачной службы Google | abap-sdk-vertexai-tester@abap-sdk-poc.iam.gserviceaccount.com |
Облачная область Google | 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 .
- Щелкните Справочное IMG SAP .
- Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить сопоставление сервисов.
- Поддерживайте следующие значения для полей:
Поле | Описание |
Имя облачного ключа Google | VERTEX_AI_DEMO |
Название службы Google | айплатформа: v1 |
Назначение RFC | ZGOOG_VERTEXAI_V1 |
8. Вызовите текст PaLM 2 с помощью 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