Ce document décrit une architecture de référence pour créer un moteur de règles métier basé sur de grands modèles de langage (LLM, Large Language Models), tels que Gemini, afin d'automatiser la prise de décision dans vos applications métier SAP. Il utilise les différentes fonctionnalités d'intégration du SDK ABAP pour Google Cloud.
Ce document s'adresse aux développeurs ABAP, aux architectes de solutions SAP et aux architectes cloud. Ce document suppose que vous avez une connaissance de base du SDK ABAP pour Google Cloud, du SDK Vertex AI pour ABAP et d'une introduction de base aux LLM.
Qu'est-ce qu'un moteur de règles métier ?
Un moteur de règles métier (BRE) est un système logiciel qui vous permet de définir, de déployer et d'exécuter des règles métier. Ces règles sont essentiellement des instructions logiques qui dictent le fonctionnement de votre entreprise. Au lieu de coder en dur les règles métier dans vos applications, un moteur de règles d'entreprise externalise les instructions logiques, ce qui permet de gérer et de modifier efficacement les règles.
Une ABR basée sur Gemini utilise les fonctionnalités avancées de traitement du langage et de raisonnement de Gemini, le modèle d'IA de nouvelle génération de Google, pour automatiser la prise de décision en fonction d'un dépôt d'invites conçues qui fonctionnent comme des règles métier. Ces invites, conçues avec des instructions spécifiques et des formats de sortie attendus, guident Gemini dans l'analyse des données, l'identification des tendances et la prise de décisions de manière cohérente avec la logique métier prédéfinie.
Architecture
Le schéma suivant illustre une architecture de référence pour la création d'une analyse des risques de l'entreprise basée sur Gemini pour les applications SAP:
Cette architecture de référence comprend les composants suivants:
Composant | Sous-système | Détails |
---|---|---|
1 | SAP ERP | Un système ERP SAP tel que SAP S/4HANA, qui utilise une analyse des risques et des opportunités basée sur Gemini pour obtenir des insights permettant de prendre des décisions automatisées. En fonction de votre cas d'utilisation, vous fournissez au module BRE un ID de règle et les données d'entrée nécessaires. |
2 | Module BRE | Le module BRE utilise le SDK ABAP pour Google Cloud pour récupérer les règles configurées à partir de Cloud Storage et appelle Gemini à l'aide du SDK Vertex AI pour ABAP pour traiter les règles. |
3 | Dépôt de règles | Stocke les règles (invites conçues) dans Cloud Storage sous la forme de fichiers texte, tels que .txt ou .prompt , avec une convention d'attribution de noms cohérente. Par exemple, RiskShiftingClause.prompt .
Pour une gestion structurée des requêtes conçues, vous pouvez également envisager d'utiliser une base de données telle que Cloud SQL. |
4 | Processeur de règles | Le SDK Vertex AI pour ABAP envoie les données d'entrée (par exemple, les instructions de livraison) et la règle récupérée (invite) à Gemini. Gemini traite l'invite et les données d'entrée, effectue une analyse et renvoie les résultats au format spécifié. |
Produits utilisés
Cette architecture de référence utilise les produits Google Cloud suivants :
SDK ABAP pour Google Cloud: vous aide à développer des applications ABAP qui connectent vos systèmes SAP aux services Google Cloud, tels que Cloud Storage.
SDK Vertex AI pour ABAP: vous permet d'utiliser Vertex AI de Google dans votre environnement SAP. Cela simplifie la création de fonctionnalités optimisées par l'IA dans vos applications SAP.
Cloud Storage: service cloud permettant de stocker et d'accéder à n'importe quelle quantité de données en ligne.
Vertex AI: vous permet de créer, de déployer et d'ajuster des modèles de machine learning pour diverses applications.
Cas d'utilisation
Imaginons que votre entreprise reçoive des bons de commande entrants au format PDF et utilise un processus automatisé pour générer des bons de commande dans SAP. Vous devez mettre à jour ce processus pour identifier et atténuer les clauses de transfert de risque figurant dans les commentaires de livraison des bons de commande entrants.
Les clauses de transfert de risque dans un contrat sont des conditions qui transfèrent le risque d'une partie à une autre. Ne pas identifier et traiter ces clauses peut entraîner des coûts inattendus, des batailles juridiques et des dommages à la réputation de votre entreprise.
Voici un exemple de clause de transfert de risque rédigée dans le commentaire de livraison d'un bon de commande.
"Le vendeur garantit que les produits sont exempts de défauts pendant une période de dix ans à compter de la date de livraison."
Vous devez écrire une règle pour les éléments suivants:
- Identifiez et catégorisez les clauses de transfert de risque.
- Expliquez pourquoi vous considérez cet élément comme un signal d'alerte potentiel.
- Fournissez des recommandations pour atténuer le risque.
Vous pouvez créer une règle de réponse basée sur l'événement avec Gemini pour générer une réponse JSON intelligente, qui permet à votre application métier SAP de prendre des décisions automatisées, de déclencher un rejet de processus ou d'initier des validations humaines en aval.
Exemples de clauses de transfert de risque
Le tableau suivant présente des exemples de clauses de transfert de risque que vous pouvez trouver dans les bons de commande entrants:
Catégorie du problème | Exemple de clause (instructions de livraison) | Problèmes potentiels |
---|---|---|
Indemnisation excessive | Le Vendeur doit indemniser l'Acheteur contre toutes les réclamations, pertes, dommages et dépenses, y compris, mais sans s'y limiter, les honoraires d'avocat, découlant des produits ou en rapport avec eux. | Cela peut poser problème si la clause est trop large et rend le vendeur responsable d'événements imprévus ou d'un usage abusif par le client. |
Extension excessive de la confidentialité | Toutes les informations divulguées par l'Acheteur au Vendeur, y compris, mais sans s'y limiter, les prix, les spécifications et les plans marketing, sont considérées comme confidentielles et appartiennent à l'Acheteur. | Cela peut l'empêcher d'utiliser ses connaissances générales du secteur ou de travailler avec d'autres clients. |
Loi applicable ambiguë | Le présent contrat est régi par les lois de l'emplacement, par exemple l'État de l'Illinois. | Cela peut entraîner des conflits de lois si l'acheteur et le vendeur se trouvent dans des juridictions différentes. |
Limitation liée à la force majeure | Le Vendeur ne sera pas exonéré de l'exécution de ses obligations au titre du présent Contrat en raison d'un événement de force majeure, y compris un cas de force majeure naturelle, une guerre ou un acte de terrorisme. | Cela pourrait rendre le vendeur responsable d'événements hors de son contrôle. |
Ambiguïté concernant la propriété intellectuelle | Tous les droits de propriété intellectuelle sur les produits appartiennent à l'acheteur. | Cela peut être un signal d'alerte si le vendeur est originaire d'un pays soumis à des sanctions ou s'il a des liens avec un tel pays. |
Exemple de requête conçue
Cette section décrit un exemple de requête conçue à l'aide du framework RTF. Le framework RTF (Role, Task, Format) de l'ingénierie des requêtes signifie "Rôle, tâche et format". C'est un moyen efficace de structurer vos requêtes pour obtenir de meilleurs résultats et plus cohérents de la part des LLM tels que Gemini.
- Rôle: persona que vous souhaitez que le LLM adopte, par exemple "expert commercial" ou "conseiller juridique".
- Tâche: action spécifique pour le LLM, par exemple "résumer ce texte" ou "analyser quelque chose".
- Format: structure de sortie souhaitée, telle qu'une liste ou un fichier JSON.
Pour en savoir plus sur les stratégies d'invite courantes que vous pouvez utiliser pour affecter les réponses du modèle, consultez la section Présentation des stratégies d'invite.
La requête suivante sert de règle de définition pour aider Gemini à identifier les problèmes tels que la clause de transfert de risque:
Framework RTF |
---|
Role You are a legal advisor for my company. Task Analyze the below delivery instruction on a purchase order from my customer and let me know if it could cause any issues to my company. Format Respond to me in plain text JSON format with 4 fields. Field 1 should be "issue" with possible values Yes or No. Field 2 should be "issueCategory" with possible values Indemnification Overreach, Unilateral Termination Clause, Confidentiality Overextension, Unreasonable Warranty, Ambiguous Governing Law, Unclear Dispute Resolution, Force Majeure Limitation, Unbalanced Liability, Intellectual Property Ambiguity, Compliance with Sanctions, Others or None. Field 3 should be "explanation" - use this field to give a short explanation for your response on Field 1. Field 4 should be "recommendation" - use this field to give a short recommendation of how to mitigate such issues. Do not include backticks in the response. Delivery Instruction: "Seller warrants that the products will be free from defects for a period of ten years from the date of delivery." { "issue": "Yes", "issueCategory": "Unreasonable Warranty", "explanation": "A ten-year warranty is significantly longer than industry standard for most products. This could expose your company to substantial financial risk if issues arise with the products years down the line.", "recommendation": "Negotiate a shorter warranty period that aligns with industry standards and your product's expected lifespan. Offer extended warranty options at an additional cost if the customer requires longer coverage." } |
Vous pouvez stocker cette invite dans un dépôt tel que Cloud Storage. Les données d'entrée peuvent être transmises par les transactions SAP au module BRE.
Vous utilisez ensuite le SDK ABAP pour Google Cloud pour récupérer l'invite à partir de Cloud Storage et la transmettre à Gemini pour l'exécution, à l'aide du SDK Vertex AI pour ABAP.
L'exemple de réponse JSON est généré par Gemini pour cet exemple de clause de transfert de risque.
L'exemple de code suivant montre comment récupérer les règles et les utiliser dans votre code.
Il part du principe que vous implémentez un service BRE en tant que classe ABAP, telle que lcl_bre
.
DATA(lo_bre) = NEW lcl_bre( iv_key_name = 'CLIENT_KEY'
iv_model_key = 'MODEL_KEY' ).
" Sample delivery text
DATA(lv_delivery_text) = |Seller warrants that the products will be free from defects for| &&
|a period of ten years from the date of delivery.|.
" Execute the rule for identifying Risk-Shifting clauses.
DATA(lv_response) = lo_bre->execute_rule( iv_rule_id = 'RiskShiftingClause-Rule-001.prompt'
iv_data = lv_delivery_text ).
" JSON response
cl_demo_output=>display_json( lv_response ).
Remplacez les éléments suivants :
CLIENT_KEY
: clé client configurée pour l'authentification auprès de Vertex AI et de Cloud Storage.MODEL_KEY
: nom de la clé du modèle pour accéder au LLM, qui est configuré dans les paramètres de génération du modèle.
La méthode execute_rule
effectue les opérations suivantes:
Lit le fichier de règles à partir de Cloud Storage à l'aide de la classe
/GOOG/CL_STORAGE_V1
.Envoie les règles de traitement à Gemini, qui est défini comme instruction pour le modèle, à l'aide de la classe
/GOOG/CL_GENERATIVE_MODEL
. Le modèle génère ensuite une réponse JSON.
Voici l'exemple de code complet à titre de référence:
REPORT zra_bre_example.
" Local class definition
CLASS lcl_bre DEFINITION FINAL.
PUBLIC SECTION.
METHODS constructor
IMPORTING iv_key_name TYPE /goog/keyname
iv_model_key TYPE /goog/model_key
RAISING /goog/cx_sdk.
METHODS convert_xstring_to_string
IMPORTING iv_xstring TYPE xstring
RETURNING VALUE(iv_string) TYPE string.
METHODS execute_rule
IMPORTING iv_rule_id TYPE string
iv_data TYPE string
RETURNING VALUE(rv_response_text) TYPE string
RAISING /goog/cx_sdk.
PRIVATE SECTION.
DATA mo_storage TYPE REF TO /goog/cl_storage_v1.
DATA mo_model TYPE REF TO /goog/cl_generative_model.
ENDCLASS.
" Local class implementation
CLASS lcl_bre IMPLEMENTATION.
METHOD constructor.
mo_storage = NEW /goog/cl_storage_v1( iv_key_name = iv_key_name ).
mo_model = NEW /goog/cl_generative_model( iv_model_key = iv_model_key ).
ENDMETHOD.
METHOD convert_xstring_to_string.
DATA lv_file_length TYPE i.
DATA lt_bin_data TYPE STANDARD TABLE OF char1024.
" Call function module to convert xstring to binary format
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING buffer = iv_xstring
IMPORTING output_length = lv_file_length
TABLES binary_tab = lt_bin_data.
IF sy-subrc <> 0.
" Handle error
ENDIF.
" Call function module to convert from binary to string format
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING input_length = lv_file_length
IMPORTING text_buffer = iv_string
TABLES binary_tab = lt_bin_data.
IF sy-subrc <> 0.
" Handle error
ENDIF.
ENDMETHOD.
METHOD execute_rule.
DATA lv_xdata TYPE xstring.
DATA lv_instruction TYPE string.
" Get the rule file from rule repository(cloud storage)
mo_storage->add_common_qparam( iv_name = 'alt'
iv_value = 'media' ).
mo_storage->get_objects( EXPORTING iv_p_bucket = 'gemini-bre-repo'
iv_p_object = iv_rule_id
IMPORTING es_output = DATA(ls_output)
ev_ret_code = DATA(lv_ret_code)
ev_err_text = DATA(lv_err_text)
es_err_resp = DATA(ls_err_resp)
es_raw = lv_xdata ).
IF mo_storage->is_success( lv_ret_code ) = abap_true.
" Set the instruction for Gemini as per the configured rule
lv_instruction = convert_xstring_to_string( iv_xstring = lv_xdata ).
ELSE.
" Handle error
ENDIF.
" Set the text to be analyzed
DATA(lv_prompt) = |Please analyze the Delivery Instruction:{ cl_abap_char_utilities=>newline }{ iv_data }|.
" Call Gemini to process the rule and identify Risk-Shifting clauses
rv_response_text = mo_model->set_system_instructions( iv_text = lv_instruction
)->add_safety_settings( iv_harm_category = 'HARM_CATEGORY_DANGEROUS_CONTENT'
iv_harm_block_threshold = 'BLOCK_NONE'
)->generate_content( iv_prompt_text = lv_prompt
)->get_text( ).
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
TRY.
DATA(lo_bre) = NEW lcl_bre( iv_key_name = 'DEMO_AIPLATFORM'
iv_model_key = 'gemini-flash' ).
" Sample delivery text
DATA(lv_delivery_text) = |Seller warrants that the products will be free from defects for| &&
|a period of ten years from the date of delivery.|.
" Execute the rule for identifying Risk-Shifting clauses.
DATA(lv_response) = lo_bre->execute_rule( iv_rule_id = 'RiskShiftingClause-Rule-001.prompt'
iv_data = lv_delivery_text ).
" JSON response
cl_demo_output=>display_json( lv_response ).
CATCH /goog/cx_sdk INTO DATA(lo_exception).
DATA(lv_msg) = lo_exception->get_text( ).
" Handle error
ENDTRY.
Considérations de conception
Cette section fournit des conseils pour vous aider à utiliser cette architecture de référence afin de développer une ou plusieurs architectures répondant à vos exigences spécifiques en termes de sécurité, de confidentialité, de conformité, de coût et de performances.
Sécurité, confidentialité et conformité
La sécurité et la conformité sont des responsabilités partagées. Pour en savoir plus, consultez la page Responsabilité partagée de Vertex AI.
Pour en savoir plus sur la manière dont Gemini utilise vos données, consultez Comment Gemini pour Google Cloud utilise vos données.
Coût
Pour obtenir une estimation du coût des ressources Google Cloud telles que Cloud Storage, utilisez le simulateur de coût Google Cloud.
Pour en savoir plus sur les tarifs de Vertex AI et de l'API Gemini, consultez la page Tarifs de Vertex AI.
Alternative de conception
Bien que ce document se concentre sur l'édition sur site ou toute édition cloud du SDK ABAP pour Google Cloud, vous pouvez obtenir des résultats similaires en utilisant l'édition SAP BTP du SDK ABAP pour Google Cloud. Le SDK Vertex AI pour ABAP n'est pas disponible pour l'environnement SAP BTP, mais vous pouvez utiliser l'exemple de code fourni dans ce document pour l'édition sur site du SDK, l'ajuster et créer des solutions similaires dans votre environnement SAP BTP.
Étape suivante
- Pour en savoir plus sur le SDK Vertex AI pour ABAP, consultez la section Présentation du SDK Vertex AI pour ABAP.
- Pour en savoir plus sur le SDK ABAP pour Google Cloud, consultez la page Présentation du SDK ABAP pour Google Cloud.
Procédez comme suit si vous avez besoin d'aide pour résoudre les problèmes liés au SDK ABAP pour Google Cloud:
- Consultez le guide de dépannage du SDK ABAP pour Google Cloud.
- Posez vos questions concernant le SDK ABAP pour Google Cloud et discutez de celui-ci avec la communauté sur les forums Cloud.
- Collectez toutes les informations de diagnostic disponibles et contactez Cloud Customer Care. Pour savoir comment contacter le service client, consultez la page Obtenir de l'aide pour SAP sur Google Cloud.
Contributeurs
Auteurs : Ameya Suvarna | Responsable d'équipe d'ingénieurs d'applications SAP
Autres contributeurs : Vikash Kumar | Rédacteur technique