Análisis de opiniones con Gemini AI con el SDK de ABAP

1. Introducción

En este codelab, usarás el modelo de Gemini Pro para realizar análisis de opiniones sobre productos con el SDK de ABAP para Google Cloud. Repasaremos los pasos para configurar la autenticación y acceder a la API de Vertex AI de Google Cloud con tokens cuando tu sistema SAP esté alojado en una instancia de VM de Compute Engine.

La lista de servicios usados es la siguiente:

  • Compute Engine
  • Servicios de red
  • Cloud Shell
  • Vertex AI

Qué compilarás

Harás lo siguiente:

  • Configura el SDK de ABAP instalado en el sistema SAP para conectarte a las APIs de Google.
  • Crea un programa de informes de ejemplo para llamar a Gemini AI y realizar análisis de opiniones sobre opiniones sobre productos.

2. Requisitos

  • Un navegador, como Chrome o Firefox
  • Tener un proyecto de Google Cloud con facturación habilitada o crear una cuenta de prueba gratuita de 90 días para Google Cloud Platform
  • GUI de SAP (Windows o Java) instalada en tu sistema Si la GUI de SAP ya está instalada en tu sistema, conéctate a SAP con la dirección IP externa de la VM como la IP del servidor de aplicaciones. Si utilizas Mac, también puedes instalar la GUI de SAP para Java disponible en este vínculo.

3. Antes de comenzar

  • En la consola de Google Cloud, en la página del selector de proyectos, selecciona o crea un proyecto de Google Cloud (por ejemplo: abap-sdk-poc).
  • Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto. Omite este paso si usas la cuenta de prueba gratuita de 90 días.
  • Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud. En la consola de Cloud, haz clic en Activar Cloud Shell en la esquina superior derecha:
  • 6757b2fb50ddcc2d.png
  • Asegúrate de que todas las APIs necesarias (API de AM Service Account Credentials, API de Vertex AI) estén habilitadas.
  • Ejecuta los siguientes comandos para autenticar tu cuenta y establece el proyecto predeterminado como abap-sdk-poc. Se usa la zona us-west4-b como ejemplo. Si es necesario, cambia el proyecto y la zona en los siguientes comandos según tus preferencias.
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. Crea una cuenta de servicio y establece el rol del usuario de Vertex AI

  1. Ejecuta el siguiente comando para crear una cuenta de servicio (si aún no la creaste).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Ejecuta el siguiente comando para configurar el rol de usuario de 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. Configura la clave de cliente

Accede al sistema SAP. Si usas el sistema que aprovisiona el codelab " Instala la prueba de la plataforma ABAP en Google Cloud Platform e instala el SDK de ABAP”, luego, usa el nombre de usuario y la contraseña aprovisionados predeterminados para acceder.

  1. En la GUI de SAP, ingresa el código de transacción SPRO.
  2. Haz clic en IMG de referencia de SAP.
  3. Haz clic en el SDK de ABAP para Google Cloud > Configuración básica > Configurar clave de cliente.
  4. Haz clic en Entradas nuevas.
  5. Ingresa los valores para los siguientes campos:

Campo

Descripción

Nombre de la clave de Google Cloud

ABAP_SDK_DEMO

Nombre de la cuenta de servicio de Google Cloud

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

Permiso de Google Cloud

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

Identificador de proyecto de Google Cloud

abap-sdk-poc

Clase de autorización

/GOOG/CL_AUTH_GOOGLE

Deja los otros campos en blanco

c72e71da6fd75b29.png

6. Crear destino RFC

Crea el destino RFC para la credencial de IAM y la API de Vertex AI con el código de transacción SM59. Si es necesario, consulta aquí los pasos detallados para crear un destino RFC.

Nombre del destino de RFC

Host del destino (extremo de API)

Notas

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Ruta de acceso: Prefijo: /v1/
  • Puerto: 443
  • SSL: Activo

Este destino de RFC se orienta a la API de IAM.

ZGOOG_VERTEX_AI

  • Host: us-central1-aiplatform.googleapis.com
  • Puerto: 443
  • SSL: ACTIVA

Este destino RFC se orienta al extremo us-central1 de la API de Vertex AI.

  • En la pestaña Configuración técnica, ingresa los siguientes detalles para el destino ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • En la pestaña Configuración técnica, ingresa los siguientes detalles para el destino ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • En el campo Certificado SSL, asegúrate de que esté seleccionada la opción Cliente SSL PREDETERMINADO (Estándar) para ambos destinos RFC.

b6370d12bd332318.png

7. Configura la asignación de servicios

Para configurar la tabla de asignación de servicios para la API de IAM y la API de Vertex AI, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SPRO.
  2. Haz clic en IMG de referencia de SAP.
  3. Haz clic en SDK de ABAP para Google Cloud > Configuración básica > Configurar asignación de servicios.
  4. Haz clic en Nuevas entradas para la credencial de IAM y la API de Vertex AI y actualiza los destinos de RFC como se muestra a continuación.

e7cc1429a4fe3a04.png

8. Valida la configuración

Para validar la configuración de autenticación, sigue estos pasos:

  1. En la GUI de SAP, ingresa el código de transacción SPRO.
  2. Haz clic en IMG de referencia de SAP.
  3. Haz clic en SDK de ABAP para Google Cloud > Utilidades > Valida la configuración de autenticación
  4. Ingresa el nombre de la clave de cliente como ABAP_SDK_DEMO.
  5. Haz clic en Ejecutar para verificar si el flujo general se configuró correctamente.
  6. Una marca de verificación verde en la columna Resultado indica que todos los pasos de configuración se completaron correctamente.

d7285e64e22c25b6.png

9. Analiza los datos de opiniones sobre productos

La prueba de la plataforma ABAP está preinstalada con el modelo de adquisición empresarial (EPM) de SAP, una aplicación de extremo a extremo que proporciona SAP con fines de demostración y prueba. Las opiniones sobre productos que se utilizarán para el análisis de opiniones se almacenan en la tabla SNWD_REV_ITEM.

Puedes ver los datos de la tabla con Tcode: SE16. Utilizaremos el texto de muestra del campo "RATING_TEXT".

2bae72d437ea639.png

De manera opcional, también puedes ver los datos accediendo a los “Productos del administrador” de la aplicación desde el Launchpad de Fiori (TCode: /UI2/FLP).

f9792a91ef9f0736.png

En la siguiente captura de pantalla, se muestra la lista de productos.

f822f9ab71d37a9.png

Haz clic en el producto para ver su calificación y las opiniones de ejemplo.

69fe380d5ca7b276.png

En la próxima sección, usaremos estas opiniones sobre productos de muestra para analizar la opinión con el LLM de Google.

10. Analiza opiniones con Vertex AI Studio

  1. Abre el panel de Vertex AI y selecciona Lenguaje en Vertex AI Studio.
  2. Crea una nueva instrucción de texto.

8ce4c928c75174d7.png

  1. Confirma la selección del modelo de Gemini Pro.
  2. En el editor, ingresa la siguiente instrucción para indicarle al modelo que analice la opinión de los clientes en la opinión sobre el producto.
  3. Haz clic en Enviar para generar la respuesta del modelo.

Instrucción:

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

Los datos de opiniones de la tabla "SNWD_REV_ITEM" se puede usar para probar el modelo con instrucciones adicionales.

11. Crea un programa de informes para llamar al modelo de Gemini Pro

En este paso, llamaremos al modelo Gemini Pro de ABAP para realizar el análisis de opiniones sobre opiniones sobre productos. Para fines de demostración, el programa seleccionará hasta 10 opiniones sobre productos y usará el SDK de ABAP para llamar al modelo Gemini Pro para determinar la opinión de cada opinión. Según su análisis, el modelo puede devolver valores como “Positivo”, “Negativo” o “Neutral”. o "Mixto".

  1. Accede a tu sistema SAP.
  2. Ve al código de transacción SE38 y crea un programa de informes con el nombre ZSENTIMENT_ANALYSIS.
  3. En la ventana emergente que se abre, ingresa los detalles como se muestra a continuación y haz clic en Guardar.

a2158523ec8ef3c7.png

  1. En la siguiente ventana emergente, selecciona Local Object o proporciona el nombre de paquete según corresponda.
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. Ejecuta el programa para ver el análisis de opiniones del texto de la opinión.

4d869f1b8436b9ca.png

12. ¡Felicitaciones!

¡Felicitaciones! Desarrollaste correctamente un programa de muestra para realizar un análisis de opiniones usando Gemini Pro AI con el SDK de ABAP para Google Cloud.

13. Limpia

Si no quieres continuar con los codelabs adicionales relacionados con el SDK de ABAP para Google Cloud, continúa con la limpieza.

Borra el proyecto

  • Borra el proyecto de Google Cloud:
gcloud projects delete abap-sdk-poc

Borra recursos individuales

  1. Borra las entradas de configuración de la clave de cliente en IMG > Google Cloud > Configuración básica > Configura la clave de cliente.
  2. Borra las entradas de configuración de asignación de servicios en IMG > Google Cloud > Configuración básica > Configura la clave de cliente.
  3. Borra los destinos de RFC ZGOOG_IAMCREDENTIALS y ZGOOG_VERTEX_AI.
  4. Borrar el programa de informes ZSENTIMENT_ANALYSIS.
  5. Borra la cuenta de servicio.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com