Анализ настроений с использованием Gemini AI и ABAP SDK

1. Введение

В этой лаборатории кода вы будете использовать модель Gemini Pro для анализа настроений в обзорах продуктов с помощью ABAP SDK для Google Cloud. Мы рассмотрим шаги по настройке аутентификации для доступа к API Google Cloud Vertex AI с использованием токенов, когда ваша система SAP размещена на экземпляре виртуальной машины Compute Engine.

Список используемых услуг:

  • Вычислительный двигатель
  • Сетевые службы
  • Облачная оболочка
  • Вертексный ИИ

Что ты построишь

Вы выполните следующее:

  • Настройте ABAP SDK, установленный в системе SAP, для подключения к API Google.
  • Создайте пример программы создания отчетов, которая будет вызывать Gemini AI и выполнять анализ настроений по обзорам продуктов.

2. Требования

  • Браузер, например Chrome или Firefox .
  • Проект Google Cloud с включенной оплатой или создайте 90-дневную бесплатную пробную учетную запись для Google Cloud Platform.
  • SAP GUI (Windows или Java), установленный в вашей системе. Если графический интерфейс SAP уже установлен в вашей системе, подключитесь к SAP, используя внешний IP-адрес виртуальной машины в качестве IP-адреса сервера приложений. Если вы используете Mac, вы также можете установить графический интерфейс SAP для Java, доступный по этой ссылке.

3. Прежде чем начать

  • В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud (например: abap-sdk-poc).
  • Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте . Пропустите этот шаг, если вы используете 90-дневную бесплатную пробную учетную запись .
  • Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud. В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
  • 6757b2fb50ddcc2d.png
  • Убедитесь, что все необходимые API (API учетных данных учетной записи службы AM, API Vertex AI) включены .
  • Выполните следующие команды для аутентификации своей учетной записи и установите проект по умолчанию abap-sdk-poc . В качестве примера используется зона us-west4-b . При необходимости измените проект и зону с помощью следующих команд в соответствии с вашими предпочтениями.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b
PROJECT_NAME=abap-sdk-poc
REGION=us-west4
ZONE=us-west4-b

4. Создайте учетную запись службы и установите роль пользователя Vertex AI.

  1. Выполните следующую команду, чтобы создать учетную запись службы (если она еще не создана).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Выполните следующую команду, чтобы установить роль пользователя Vertex AI .
gcloud projects add-iam-policy-binding $PROJECT_NAME \
    --member=serviceAccount:abap-sdk-codelabs@$PROJECT_NAME.iam.gserviceaccount.com \
    --role=roles/aiplatform.user

5. Настройте ключ клиента

Войдите в систему SAP. Если вы используете систему, предоставленную кодовой лабораторией « Установить пробную версию платформы ABAP на Google Cloud Platform и установить ABAP SDK », то для входа в систему используйте предоставленные по умолчанию имя пользователя и пароль.

  1. В графическом интерфейсе SAP введите код транзакции SPRO .
  2. Щелкните Справочное IMG SAP .
  3. Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить ключ клиента .
  4. Нажмите «Новые записи» .
  5. Введите значения в следующие поля:

Поле

Описание

Имя облачного ключа Google

ABAP_SDK_DEMO

Имя учетной записи облачной службы Google

abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com

Облачная область Google

https://www.googleapis.com/auth/cloud-platform

Идентификатор проекта Google Cloud

abap-sdk-poc

Класс авторизации

/GOOG/CL_AUTH_GOOGLE.

Остальные поля оставьте пустыми

c72e71da6fd75b29.png

6. Создайте назначение RFC.

Создайте назначение RFC для учетных данных IAM и API Vertex AI, используя код транзакции SM59. При необходимости ознакомьтесь с подробными инструкциями по созданию места назначения RFC здесь .

Имя назначения RFC

Целевой хост (конечная точка API)

Примечания

ZGOOG_IAMCREDENTIALS

  • Хост : iamcredentials.googleapis.com.
  • Путь : Префикс: /v1/
  • Порт : 443
  • SSL : Активный

Это назначение RFC предназначено для API IAM.

ZGOOG_VERTEX_AI

  • Хост : us-central1-aiplatform.googleapis.com.
  • Порт : 443
  • SSL : АКТИВНЫЙ

Это назначение RFC предназначено для конечной точки Vertex AI API us-central1.

  • На вкладке «Технические настройки» введите следующие данные для пункта назначения ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • На вкладке «Технические настройки» введите следующие данные для места назначения ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • В поле «Сертификат SSL» убедитесь, что для обоих пунктов назначения RFC выбран параметр «Клиент SSL по умолчанию» (стандартный) .

b6370d12bd332318.png

7. Настройте сопоставление сервисов

Чтобы настроить таблицу сопоставления сервисов для IAM API и Vertex AI API, выполните следующие действия:

  1. В графическом интерфейсе SAP введите код транзакции SPRO .
  2. Щелкните Справочное IMG SAP .
  3. Нажмите ABAP SDK для Google Cloud > Основные настройки > Настроить сопоставление сервисов .
  4. Нажмите «Новые записи для учетных данных IAM» и Vertex AI API и обновите адресаты RFC, как показано ниже.

e7cc1429a4fe3a04.png

8. Проверка конфигурации

Чтобы проверить конфигурацию аутентификации, выполните следующие шаги:

  1. В графическом интерфейсе SAP введите код транзакции SPRO .
  2. Щелкните Справочное IMG SAP .
  3. Нажмите ABAP SDK для Google Cloud > Утилиты > Проверка конфигурации аутентификации .
  4. Введите имя ключа клиента как ABAP_SDK_DEMO .
  5. Нажмите «Выполнить» , чтобы проверить, успешно ли настроен весь поток.
  6. Зеленая галочка в столбце «Результат» означает, что все этапы настройки выполнены успешно.

d7285e64e22c25b6.png

9. Изучите данные отзывов о товарах

Пробная версия платформы ABAP предварительно установлена ​​вместе с SAP Enterprise Procurement Model (EPM), комплексным приложением, предоставляемым SAP для целей демонстрации и тестирования. Обзоры продуктов, которые будут использоваться для анализа настроений, хранятся в таблице SNWD_REV_ITEM.

Просмотреть данные таблицы можно с помощью Tcode:SE16. Мы будем использовать образец текста из поля «RATING_TEXT».

2bae72d437ea639.png

При желании вы также можете просмотреть данные, открыв приложение «Менеджер продуктов» с панели запуска Fiori (TCode: /UI2/FLP).

f9792a91ef9f0736.png

На следующем снимке экрана показан список продуктов.

f822f9ab71d37a9.png

Нажмите на продукт, чтобы просмотреть его рейтинг и примеры отзывов.

69fe380d5ca7b276.png

В следующем разделе мы будем использовать эти примеры обзоров продуктов для анализа настроений с помощью Google LLM.

10. Анализируйте настроения с помощью Vertex AI Studio.

  1. Откройте панель управления Vertex AI , выберите «Язык» в студии Vertex AI.
  2. Создайте новую текстовую подсказку.

8ce4c928c75174d7.png

  1. Подтвердите выбор модели Gemini Pro .
  2. В редакторе введите следующую подсказку, чтобы дать указание модели проанализировать настроения клиентов в обзоре продукта.
  3. Нажмите «Отправить» , чтобы сгенерировать ответ модели.

Быстрый :

What's the Customer sentiment in the below product review

Horrible! Unsatisfied in every way! The description is wrong. I sent it back. I want my money back! It is so horrible that I can't even believe it! Too expensive for what I received. I'd expect a little more durability. No instructions included for use or installation. I'm actually really surprised by the positive reviews, which I relied on when ordering. Called customer service..no answer. Looks better than it works. The Worst I have ever seen! Honestly I have no clue what you had in mind when choosing to offer this product. Not sure if I should even post one star.... It broke after 1 day. Poor Quality. Didn't work, that is why I cannot recommend this product.

fd245c204144484.png

Данные обзора из таблицы «SNWD_REV_ITEM» можно использовать для тестирования модели с дополнительными подсказками.

11. Создайте программу отчета для вызова модели Gemini Pro.

На этом этапе мы вызовем модель Gemini Pro из ABAP, чтобы выполнить анализ настроений в обзорах продуктов. В демонстрационных целях программа выберет до 10 обзоров продуктов и использует ABAP SDK для вызова модели Gemini Pro для определения настроений по каждому обзору. На основе анализа модель может возвращать такие значения, как «Положительный», «Отрицательный», «Нейтральный» или «Смешанный».

  1. Войдите в свою систему SAP.
  2. Перейдите к коду транзакции SE38 и создайте программу отчетов с именем ZSENTIMENT_ANALYSIS .
  3. В открывшемся всплывающем окне укажите сведения, как показано ниже, и нажмите «Сохранить» .

a2158523ec8ef3c7.png

  1. В следующем всплывающем окне выберите «Локальный объект» или укажите имя пакета, если это необходимо.
REPORT zsentiment_analysis.

DATA lo_client          TYPE REF TO /goog/cl_aiplatform_v1.
DATA lv_p_projects_id   TYPE string.
DATA lv_p_locations_id  TYPE string.
DATA lv_p_publishers_id TYPE string.
DATA lv_p_models_id     TYPE string.
DATA ls_input           TYPE /goog/cl_aiplatform_v1=>ty_726.
DATA ls_output          TYPE /goog/cl_aiplatform_v1=>ty_727.
DATA lv_ret_code        TYPE i.
DATA lv_err_text        TYPE string.
DATA ls_err_resp        TYPE /goog/err_resp.
DATA lv_msg             TYPE string.
DATA lo_exception       TYPE REF TO /goog/cx_sdk.
DATA es_raw             TYPE string.


TYPES:
  BEGIN OF t_reviews,
    product_id  TYPE snwd_product_id,
    sentiment   TYPE string,
    rating_text TYPE snwd_rating_text,
  END OF t_reviews.

DATA lt_reviews TYPE STANDARD TABLE OF t_reviews WITH DEFAULT KEY.
FIELD-SYMBOLS <fs_review> TYPE t_reviews.

TRY.

    " Open HTTP Connection
    lo_client = NEW #( iv_key_name = 'ABAP_SDK_DEMO' ).

    " Populate relevant parameters
    lv_p_projects_id = lo_client->gv_project_id.
    lv_p_locations_id = 'us-central1'.
    lv_p_publishers_id = 'google'.
    lv_p_models_id = 'gemini-1.0-pro'.

    SELECT a~product_id AS product_id c~rating_text
      FROM ( ( snwd_pd AS a
      INNER JOIN snwd_rev_head AS b ON a~node_key = b~entity_key )
      INNER JOIN snwd_rev_item AS c ON b~node_key = c~parent_key )
      INTO CORRESPONDING FIELDS OF TABLE lt_reviews UP TO 10 ROWS.

    LOOP AT lt_reviews ASSIGNING <fs_review>.

      " Construct the prompt
      DATA(lv_prompt) = |DO NOT EXPLAIN and your response should not have more than one word.| &&
                        |Classify the overall sentiment of this product review as ONLY ONE of| &&
                        | the following: Positive, Negative, Neutral, or Mixed.| &&
                        cl_abap_char_utilities=>newline &&
                        <fs_review>-rating_text.

      " Set the Model Parameters and Prompt
      ls_input = VALUE #( generation_config = VALUE #( max_output_tokens = 10
                                                       temperature       = '0.2'
                                                       top_p             = '0.8'
                                                       top_k             = '40' )
                          contents          = VALUE #( ( role  = 'user'
                                                         parts = VALUE #( ( text = lv_prompt ) ) ) ) ).


      " Call Gemini Pro to identify sentiments.
      lo_client->generate_content_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           = ls_input
                                          IMPORTING
                                                    es_output          = ls_output
                                                    ev_ret_code        = lv_ret_code
                                                    ev_err_text        = lv_err_text
                                                    es_err_resp        = ls_err_resp ).

      IF lo_client->is_success( lv_ret_code ) = abap_true.

        LOOP AT ls_output-candidates INTO DATA(ls_candidate).
          LOOP AT ls_candidate-content-parts INTO DATA(ls_part).
            <fs_review>-sentiment = ls_part-text.
            EXIT.
          ENDLOOP.
          EXIT.
        ENDLOOP.

      ELSE.
        MESSAGE lv_err_text TYPE 'E'.
      ENDIF.

    ENDLOOP.

    cl_demo_output=>display( lt_reviews ).

    " Close HTTP Connection
    lo_client->close( ).

  CATCH /goog/cx_sdk INTO lo_exception.
    lv_msg = lo_exception->get_text( ).
    MESSAGE lv_msg TYPE 'E'.
ENDTRY.

  1. Запустите программу, чтобы просмотреть анализ настроений текста обзора.

4d869f1b8436b9ca.png

12. Поздравления

Поздравляем! Вы успешно разработали пример программы для анализа настроений с использованием Gemini Pro AI и ABAP SDK для Google Cloud.

13. Очистка

Если вы не хотите продолжать работу с дополнительными лабораториями кода, связанными с ABAP SDK для Google Cloud, продолжите очистку.

Удалить проект

  • Удалите проект Google Cloud:
gcloud projects delete abap-sdk-poc

Удаление отдельных ресурсов

  1. Удалите записи конфигурации ключа клиента, перейдя в IMG > Google Cloud > Основные настройки > Настроить ключ клиента .
  2. Удалите записи конфигурации сопоставления служб, перейдя в IMG > Google Cloud > Основные настройки > Настроить клиентский ключ .
  3. Удалите RFC-адреса ZGOOG_IAMCREDENTIALS и ZGOOG_VERTEX_AI .
  4. Удалите программу отчетов ZSENTIMENT_ANALYSIS .
  5. Удалить учетную запись службы.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com