Utiliser l'appel de fonction SAP avec Gemini

Ce document explique comment utiliser l'appel de fonction SAP avec Gemini à l'aide du SDK Vertex AI pour ABAP.

Vous pouvez définir des fonctions personnalisées et les fournir aux modèles Gemini à l'aide de la fonctionnalité Appel de fonction. Les modèles n'appellent pas directement les fonctions personnalisées, mais génèrent une sortie de données structurées qui spécifie le nom de la fonction et les arguments suggérés. Cette sortie vous permet d'écrire des applications qui utilisent la sortie structurée et appellent des API externes. La sortie de l'API obtenue peut ensuite être intégrée à une autre requête de modèle, ce qui permet d'obtenir des réponses de requête plus complètes.

Le SDK Vertex AI pour ABAP simplifie l'appel de fonction pour les développeurs ABAP en leur permettant d'appeler une logique personnalisée écrite dans des modules de fonction SAP :

  • Transmettre les noms de module de fonction SAP au modèle en tant que déclarations de fonction, en décrivant le nom de la fonction, son objectif et les paramètres associés.
  • Définir l'appel automatique du module de fonction SAP implicitement lors de l'appel du modèle.

Voici le parcours type d'un développeur ABAP pour appeler une fonction SAP :

  1. L'utilisateur fournit une requête d'entrée.
  2. Le SDK transmet la requête d'entrée et les déclarations de fonction au modèle.
  3. Le modèle examine la requête et les fonctions déclarées pour déduire la fonction à appeler et suggère les valeurs de paramètre à utiliser.
  4. Si l'appel automatique est défini, le SDK appelle le module de fonction SAP.
  5. Le SDK appelle ensuite le modèle avec la sortie de la fonction appelée.
  6. Le modèle répond avec une réponse fiable pour la requête finale enrichie avec la sortie de la fonction appelée.
  7. Le SDK renvoie la réponse à l'utilisateur.

Appel de fonction SAP avec Gemini

Si vous choisissez de ne pas appeler automatiquement les modules de fonction SAP, le SDK vous permet d'utiliser la fonctionnalité d'appel de fonction sans aucune invocation de module de fonction SAP. Dans ce cas, vous pouvez suivre le workflow d'appel de fonction type pour utiliser des outils externes tels que des API et des fonctions.

Avant de commencer

Avant d'utiliser le SDK Vertex AI pour ABAP pour l'appel de fonction SAP avec Gemini, assurez-vous que vous ou vos administrateurs avez rempli les conditions préalables suivantes :

Enrichir le contexte du modèle d'IA Gemini avec des données SAP

Cette section explique comment enrichir le contexte du modèle d'IA Gemini avec des données SAP à l'aide du SDK Vertex AI pour ABAP.

Instancier la classe d'appelant Gemini multimodal

Pour appeler une fonction dans SAP, vous devez utiliser la classe /GOOG/CL_GENERATIVE_MODEL. Vous instanciez la classe en transmettant la clé de modèle configurée dans les paramètres de génération du modèle.

DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).

Remplacez MODEL_KEY par le nom de la clé du modèle, configuré dans les paramètres de génération du modèle.

Créer un module de fonction SAP

Pour créer un module de fonction SAP pour l'appel automatique par le SDK, suivez le schéma fourni :

Catégorie Nom du paramètre Type associé
Importation… IT_FUNCTION_PARAMETERS /GOOG/T_FUNCTION_PARAMETERS
Exportation EV_FUNCTION_RESPONSE STRING
Modification en cours… CV_PROMPT STRING
Exceptions /GOOG/CX_SDK Exception Class

En fonction des paramètres d'importation, écrivez votre logique personnalisée dans le module de fonction, qui peut soit extraire des données SAP via des requêtes SELECT, soit appeler une API ou un module externe pour obtenir les informations manquantes.

Définissez le paramètre d'exportation EV_FUNCTION_RESPONSE avec les informations à renvoyer au contexte LLM. Vous pouvez également modifier le texte de la requête dans CV_PROMPT en fonction de la logique personnalisée et de vos exigences métier pour donner des instructions supplémentaires au LLM en fonction de différents scénarios métier.

Ajouter une déclaration de fonction

Pour ajouter une déclaration de fonction au contexte LLM, vous pouvez utiliser la méthode ADD_FUNCTION_DECLARATION. Appelez la méthode ADD_FUNCTION_DECLARATION chaque fois que vous devez ajouter une fonction au contexte.

DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
                type           = 'PARAMETER_TYPE'
                description    = 'PARAMETER_DESCRIPTION'
                is_required    = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
lo_model->add_function_declaration( iv_name        = 'FUNCTION_MODULE_NAME'
                                    iv_description = 'FUNCTION_MODULE_DESCRIPTION'
                                    it_parameters  = lt_parameters ).

Remplacez les éléments suivants :

  • PARAMETER_NAME : nom du paramètre.
  • PARAMETER_TYPE : type de données du paramètre, tel que string, integer ou boolean.
  • PARAMETER_DESCRIPTION : explication claire de l'objectif du paramètre et du format attendu.
  • PARAMETER_IS_REQUIRED : si ce paramètre est obligatoire pour que la fonction fonctionne, définissez la valeur sur ABAP_TRUE.
  • FUNCTION_MODULE_NAME : nom du module de fonction SAP.
  • FUNCTION_MODULE_DESCRIPTION : description du module de fonction SAP.

Définir l'appel automatique du module de fonction SAP

Pour définir l'appel automatique de la fonction SAP sélectionnée par le modèle, vous pouvez utiliser la méthode SET_AUTO_INVOKE_SAP_FUNCTION. Si ABAP_TRUE est transmis dans le paramètre d'importation IV_AUTO_INVOKE, le module de fonction est appelé par le SDK et sa réponse est incluse dans le contexte LLM pour générer la réponse finale.

Vous devez définir votre module de fonction en suivant le schéma décrit dans la section Créer un module de fonction SAP.

lo_model->set_auto_invoke_sap_function( abap_true ).

Générer du contenu avec des appels de fonction

Pour transmettre le texte de la requête au modèle Gemini, vous pouvez utiliser la méthode GENERATE_CONTENT. Pour obtenir la réponse générée par Gemini avec le contexte supplémentaire ajouté à partir du module de fonction SAP via l'appel de fonction, utilisez la méthode GET_TEXT.

DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
                           )->get_text( ).

Remplacez PROMPT par votre requête textuelle.

Exemple de code

L'exemple de code suivant montre comment utiliser l'appel de fonction SAP pour recevoir une réponse finale du modèle.

DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
TRY.
  DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
  APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
                  type           = 'PARAMETER_TYPE'
                  description    = 'PARAMETER_DESCRIPTION'
                  is_required    = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
  DATA(lv_response) = lo_model->add_function_declaration(
                                    iv_name        = 'FUNCTION_MODULE_NAME'
                                    iv_description = 'FUNCTION_MODULE_DESCRIPTION'
                                    it_parameters  = lt_parameters
                              )->set_auto_invoke_sap_function( abap_true
                              )->generate_content( iv_prompt_text ='PROMPT'
                              )->get_text( ).
  IF lv_response IS NOT INITIAL.
      cl_demo_output=>display( lv_response ).

  ENDIF.
 CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
  cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Remplacez les éléments suivants :

  • MODEL_KEY : nom de la clé du modèle, configuré dans les paramètres de génération du modèle.
  • PARAMETER_NAME : nom du paramètre.
  • PARAMETER_TYPE : type de données du paramètre, tel que string, integer ou boolean.
  • PARAMETER_DESCRIPTION : explication claire de l'objectif du paramètre et du format attendu.
  • PARAMETER_IS_REQUIRED : si ce paramètre est obligatoire pour que la fonction fonctionne, définissez la valeur sur ABAP_TRUE.
  • FUNCTION_MODULE_NAME : nom du module de fonction SAP.
  • FUNCTION_MODULE_DESCRIPTION : description du module de fonction SAP.
  • PROMPT : votre requête de texte.

Étape suivante