Analyse des sentiments à l'aide de Gemini AI avec le SDK ABAP

1. Introduction

Dans cet atelier de programmation, vous allez utiliser le modèle Gemini Pro pour effectuer une analyse des sentiments dans les avis sur les produits à l'aide du SDK ABAP pour Google Cloud. Vous découvrirez comment configurer l'authentification pour accéder à l'API Google Cloud Vertex AI à l'aide de jetons lorsque votre système SAP est hébergé sur une instance de VM Compute Engine.

Voici la liste des services utilisés:

  • Compute Engine
  • Services réseau
  • Cloud Shell
  • Vertex AI

Ce que vous allez faire

Vous allez effectuer les opérations suivantes:

  • Configurez le SDK ABAP installé sur le système SAP pour qu'il se connecte aux API Google.
  • Créez un exemple de programme de rapports pour appeler Gemini AI et effectuer une analyse des sentiments sur les avis sur les produits.

2. Conditions requises

  • Un navigateur (Chrome ou Firefox, par exemple)
  • Un projet Google Cloud avec la facturation activée ou créez un compte d'essai sans frais de 90 jours pour Google Cloud Platform.
  • L'IUG SAP (Windows ou Java) doit être installée sur votre système. Si l'IUG SAP est déjà installée sur votre système, connectez-vous à SAP en utilisant l'adresse IP externe de la VM comme adresse IP du serveur d'applications. Si vous utilisez Mac, vous pouvez également installer l'IUG SAP pour Java disponible via ce lien.

3. Avant de commencer

  • Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud (par exemple, abap-sdk-poc).).
  • Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet. Ignorez cette étape si vous utilisez le compte d'essai sans frais de 90 jours.
  • Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud. Dans la console Cloud, cliquez sur Activer Cloud Shell en haut à droite:
  • 6757b2fb50ddcc2d.png
  • Assurez-vous que toutes les API nécessaires (API AM Service Account Credentials et API Vertex AI) sont activées.
  • Exécutez les commandes suivantes pour authentifier votre compte et définir le projet par défaut sur abap-sdk-poc. La zone us-west4-b est utilisée à titre d'exemple. Si nécessaire, veuillez modifier le projet et la zone à l'aide des commandes suivantes, en fonction de vos préférences.
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
  • Assurez-vous d'avoir accès à un système SAP avec le SDK ABAP pour Google Cloud installé avec les données SAP EPM.
  • Vous pouvez vous reporter à l'atelier de programmation " Install ABAP Platform Trial on Google Cloud Platform and Install ABAP SDK" (Installer la plate-forme ABAP d'essai sur Google Cloud Platform et installer le SDK ABAP) pour mettre en place un nouveau système.

4. Créer un compte de service et définir le rôle utilisateur Vertex AI

  1. Exécutez la commande suivante pour créer un compte de service (s'il n'a pas déjà été créé).
gcloud iam service-accounts create abap-sdk-dev \
    --description="ABAP SDK Dev Account" \
    --display-name="ABAP SDK Dev Account"
  1. Exécutez la commande suivante pour définir le rôle Utilisateur 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. Configurer la clé client

Connectez-vous au système SAP. Si vous utilisez le système provisionné par l'atelier de programmation Installez la version d'essai de la plate-forme ABAP sur Google Cloud Platform et installez le SDK ABAP", puis utilisez le nom d'utilisateur et le mot de passe par défaut provisionnés pour vous connecter.

  1. Dans l'IUG SAP, saisissez le code de transaction SPRO.
  2. Cliquez sur SAP Reference IMG.
  3. Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer la clé client.
  4. Cliquez sur Nouvelles entrées.
  5. Renseignez les champs suivants :

Champ

Description

Nom de la clé Google Cloud

ABAP_SDK_DEMO

Nom du compte de service Google Cloud

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

Champ d'application Google Cloud

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

Identifiant de projet Google Cloud

abap-sdk-poc

Classe d'autorisation

/GOOG/CL_AUTH_GOOGLE.

Ne renseignez pas les autres champs.

c72e71da6fd75b29.png

6. Créer une destination RFC

Créez une destination RFC pour les identifiants IAM et l'API Vertex AI à l'aide du code de transaction SM59. Si nécessaire, cliquez ici pour connaître la procédure détaillée de création d'une destination RFC.

Nom de la destination RFC

Hôte cible (point de terminaison de l'API)

Remarques

ZGOOG_IAMCREDENTIALS

  • Hôte: iamcredentials.googleapis.com
  • Chemin: préfixe: /v1/
  • Port: 443
  • SSL: actif

Cette destination RFC cible l'API Cloud IAM.

ZGOOG_VERTEX_AI

  • Hôte: us-central1-aiplatform.googleapis.com
  • Port: 443
  • SSL: ACTIVE

Cette destination RFC cible le point de terminaison us-central1 de l'API Vertex AI.

  • Dans l'onglet Technical Settings (Paramètres techniques), saisissez les informations suivantes pour la destination ZGOOG_IAMCREDENTIALS.

e670c6a91acba40f.png

  • Dans l'onglet Technical Settings (Paramètres techniques), saisissez les informations suivantes pour la destination ZGOOG_VERTEX_AI.

5c584aaed5c110f2.png

  • Dans le champ Certificat SSL, assurez-vous que l'option Client SSL par défaut (standard) est sélectionnée pour les deux destinations RFC.

b6370d12bd332318.png

7. Configurer le mappage de service

Pour configurer la table de mappage de services pour l'API IAM et l'API Vertex AI, procédez comme suit:

  1. Dans l'IUG SAP, saisissez le code de transaction SPRO.
  2. Cliquez sur SAP Reference IMG.
  3. Cliquez sur SDK ABAP pour Google Cloud > Paramètres de base > Configurer le mappage des services.
  4. Cliquez sur Nouvelles entrées pour les identifiants IAM et l'API Vertex AI, puis mettez à jour les destinations RFC comme indiqué ci-dessous.

e7cc1429a4fe3a04.png

8. Valider la configuration

Pour valider la configuration d'authentification, procédez comme suit :

  1. Dans l'IUG SAP, saisissez le code de transaction SPRO.
  2. Cliquez sur SAP Reference IMG.
  3. Cliquez sur SDK ABAP pour Google Cloud > Utilitaires > Valider la configuration de l'authentification.
  4. Saisissez ABAP_SDK_DEMO comme nom de clé client.
  5. Cliquez sur Exécuter pour vérifier si le flux global est correctement configuré.
  6. Une coche verte dans la colonne "Résultat" indique que toutes les étapes de configuration ont été effectuées avec succès.

d7285e64e22c25b6.png

9. Étudier les données des avis sur les produits

La version d'essai de la plate-forme ABAP est préinstallée avec SAP Enterprise Procurement Model (EPM), une application de bout en bout fournie par SAP à des fins de démonstration et de test. Les avis sur les produits qui seront utilisés pour l'analyse des sentiments sont stockés dans le tableau SNWD_REV_ITEM.

Vous pouvez afficher les données de la table à l'aide du code Tcode: SE16. Nous utiliserons l'exemple de texte du champ "RATING_TEXT".

2bae72d437ea639.png

Vous pouvez également afficher les données en accédant à l'application "Manager Products" (Produits Manager). du Fiori Launchpad (TCode: /UI2/FLP).

f9792a91ef9f0736.png

La capture d'écran suivante montre la liste des produits.

f822f9ab71d37a9.png

Cliquez sur le produit pour afficher sa note et des exemples d'avis.

69fe380d5ca7b276.png

Dans la section suivante, nous utiliserons ces exemples d'avis sur les produits pour analyser les sentiments à l'aide du LLM de Google.

10. Analyser les sentiments avec Vertex AI Studio

  1. Ouvrez le tableau de bord Vertex AI, puis sélectionnez Langage sous Vertex AI Studio.
  2. Créez une requête textuelle.

8ce4c928c75174d7.png

  1. Confirmez la sélection du modèle Gemini Pro.
  2. Dans l'éditeur, saisissez la requête suivante pour demander au modèle d'analyser les sentiments des clients dans l'avis sur le produit.
  3. Cliquez sur Envoyer pour générer la réponse du modèle.

Invite:

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

Données relatives aux avis du tableau "SNWD_REV_ITEM" pour tester le modèle avec des requêtes supplémentaires.

11. Créer un programme de rapports pour appeler le modèle Gemini Pro

Au cours de cette étape, nous allons appeler le modèle Gemini Pro d'ABAP pour analyser les sentiments dans les avis sur les produits. À des fins de démonstration, le programme sélectionnera jusqu'à 10 avis sur les produits et utilisera le SDK ABAP pour appeler le modèle Gemini Pro afin de déterminer le sentiment par avis. D'après son analyse, le modèle peut renvoyer des valeurs telles que "positif", "négatif" ou "neutre". ou "Mixte".

  1. Connectez-vous à votre système SAP.
  2. Accédez au code de transaction SE38 et créez un programme de rapport nommé ZSENTIMENT_ANALYSIS.
  3. Dans le pop-up qui s'affiche, fournissez les détails comme indiqué ci-dessous, puis cliquez sur Enregistrer.

a2158523ec8ef3c7.png

  1. Dans le pop-up suivant, sélectionnez Objet local ou indiquez un nom de package, le cas échéant.
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. Exécutez le programme pour afficher l'analyse des sentiments du texte de l'avis.

4d869f1b8436b9ca.png

12. Félicitations

Félicitations ! Vous venez de développer un exemple de programme permettant d'effectuer une analyse des sentiments à l'aide de Gemini Pro AI et du SDK ABAP pour Google Cloud.

13. Effectuer un nettoyage

Si vous ne souhaitez pas continuer avec les autres ateliers de programmation liés au SDK ABAP pour Google Cloud, veuillez procéder au nettoyage.

Supprimer le projet

  • Supprimez le projet Google Cloud:
gcloud projects delete abap-sdk-poc

Supprimer des ressources individuelles

  1. Supprimez les entrées de configuration de clé client en accédant à IMG > Google Cloud > Paramètres généraux > Configurer la clé client
  2. Supprimez les entrées de configuration du mappage de service en accédant à IMG > Google Cloud > Paramètres généraux > Configurer la clé client
  3. Supprimez les destinations RFC ZGOOG_IAMCREDENTIALS et ZGOOG_VERTEX_AI.
  4. Supprimer le programme de signalement ZSENTIMENT_ANALYSIS.
  5. Supprimez le compte de service.
gcloud iam service-accounts delete \
    abap-sdk-dev@abap-sdk-poc.iam.gserviceaccount.com