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 :
- L'utilisateur fournit une requête d'entrée.
- Le SDK transmet la requête d'entrée et les déclarations de fonction au modèle.
- 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.
- Si l'appel automatique est défini, le SDK appelle le module de fonction SAP.
- Le SDK appelle ensuite le modèle avec la sortie de la fonction appelée.
- Le modèle répond avec une réponse fiable pour la requête finale enrichie avec la sortie de la fonction appelée.
- Le SDK renvoie la réponse à l'utilisateur.
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 :
- Activer l'API Vertex AI dans votre projet Google Cloud
- Installer le SDK Vertex AI pour ABAP dans votre environnement SAP.
- Configurer l'authentification pour accéder à l'API Vertex AI.
- Configurer les paramètres de génération de modèle
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 questring
,integer
ouboolean
.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 surABAP_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 questring
,integer
ouboolean
.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 surABAP_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
Découvrez comment développer des applications avec l'édition sur site ou n'importe quelle édition cloud du SDK ABAP pour Google Cloud.
Posez vos questions et discutez du SDK Vertex AI pour ABAP avec la communauté sur les forums Cloud.