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

Análisis de opiniones con la IA de Gemini con el SDK de ABAP

Acerca de este codelab

subjectÚltima actualización: sept 4, 2024
account_circleEscrito por Ameya Suvarna

1. Introducción

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

La lista de servicios utilizados es la siguiente:

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

Qué compilarás

Realizarás las siguientes acciones:

  • 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 la IA de Gemini y realizar un análisis de opiniones sobre productos.

2. Requisitos

  • Un navegador, como Chrome o Firefox
  • Un proyecto de Google Cloud con la facturación habilitada o crea 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 usas Mac, también puedes instalar la GUI de SAP para Java disponible en este vínculo.

3. Antes de comenzar

  • En la página del selector de proyectos de la consola de Google Cloud, 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 credenciales de la cuenta de servicio de AM, API de Vertex AI) estén habilitadas.
  • Ejecuta los siguientes comandos para autenticar tu cuenta y establecer el proyecto predeterminado en 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 de usuario de Vertex AI

  1. Ejecuta el siguiente comando para crear una cuenta de servicio (si aún no lo hiciste).
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 establecer 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 aprovisionado por el codelab "Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK", usa el nombre de usuario y la contraseña predeterminados aprovisionados 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. Crea un destino de RFC

Crea un destino de 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í para obtener pasos detallados sobre cómo crear un destino de RFC.

Nombre del destino de RFC

Host del destino (extremo de API)

Notas

ZGOOG_IAMCREDENTIALS

  • Host: iamcredentials.googleapis.com
  • Ruta: 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: ACTIVE

Este destino de 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 la opción Cliente SSL predeterminado (estándar) esté seleccionada para ambos destinos de 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 New Entries 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 > Validar 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. Estudia los datos de opiniones sobre productos

La prueba de ABAP Platform se preinstala con el modelo de adquisición empresarial (EPM) de SAP, una aplicación de extremo a extremo que proporciona SAP para demostraciones y pruebas. Las opiniones sobre productos que se usarán para el análisis de opiniones se almacenan en la tabla SNWD_REV_ITEM.

Puedes ver los datos de la tabla con el código T: SE16. Usaremos el texto de muestra del campo "RATING_TEXT".

2bae72d437ea639.png

De manera opcional, también puedes ver los datos si accedes a la aplicación "Manager Products" desde el Fiori Launchpad (código de transacción: /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 ejemplos de opiniones.

69fe380d5ca7b276.png

En la siguiente sección, usaremos estas opiniones de productos de muestra para analizar el sentimiento con el LLM de Google.

10. Analiza el sentimiento 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 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.

Consigna:

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 revisión de la tabla "SNWD_REV_ITEM" se pueden 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 de Gemini Pro desde ABAP para realizar el análisis de opiniones sobre productos. A modo de demostración, el programa seleccionará hasta 10 opiniones sobre productos y usará el SDK de ABAP para llamar al modelo Gemini Pro y determinar el sentimiento por opinión. En función de su análisis, el modelo puede mostrar valores como "Positivo", "Negativo", "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, proporciona los detalles como se muestra a continuación y haz clic en Guardar.

a2158523ec8ef3c7.png

  1. En la siguiente ventana emergente, selecciona Objeto local o proporciona un 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 reseña.

4d869f1b8436b9ca.png

12. Felicitaciones

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

13. Limpia

Si no deseas 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

Cómo borrar recursos individuales

  1. Para borrar las entradas de configuración de la clave de cliente, ve a IMG > Google Cloud > Configuración básica > Configurar clave de cliente.
  2. Para borrar las entradas de configuración de la asignación de servicios, ve a IMG > Google Cloud > Configuración básica > Configurar clave de cliente.
  3. Borra los destinos de RFC ZGOOG_IAMCREDENTIALS y ZGOOG_VERTEX_AI.
  4. Borra 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