Questo documento descrive un'architettura di riferimento per la creazione di un motore di regole aziendali basato su modelli linguistici di grandi dimensioni (LLM) come Gemini per automatizzare il processo decisionale all'interno delle applicazioni aziendali SAP. Utilizza le varie funzionalità di integrazione dell'ABAP SDK per Google Cloud.
Il pubblico di destinazione di questo documento include sviluppatori ABAP, architetti di soluzioni SAP e architetti cloud. Il documento presuppone una conoscenza di base dell'SDK ABAP per Google Cloud, dell'SDK Vertex AI per ABAP e un'introduzione di base ai modelli LLM.
Che cos'è un motore di regole aziendali (BRE)?
Un motore di regole di business (BRE) è un sistema software che consente di definire, implementare ed eseguire regole di business. Queste regole sono essenzialmente istruzioni logiche che determinano il funzionamento della tua attività. Anziché codificare le regole aziendali nelle applicazioni, un BRE esternalizza le istruzioni logiche, consentendo di gestire e modificare le regole in modo efficiente.
Un BRE basato su Gemini utilizza le funzionalità di elaborazione e ragionamento linguistico avanzate di Gemini, il modello di AI di nuova generazione di Google, per automatizzare il processo decisionale in base a un repository di prompt progettati che fungono da regole aziendali. Questi prompt, creati con istruzioni specifiche e formati di output previsti, guidano Gemini nell'analisi dei dati, nell'identificazione di pattern e nel prendere decisioni in modo coerente con la logica aziendale predefinita.
Architettura
Il seguente diagramma mostra un'architettura di riferimento per la creazione di un BRE basato su Gemini per le applicazioni SAP:
Questa architettura di riferimento include i seguenti componenti:
Componente | Sottosistema | Dettagli |
---|---|---|
1 | SAP ERP | Un sistema ERP SAP come SAP S/4HANA, che utilizza un BRE basato su Gemini per ricavare approfondimenti per il processo decisionale automatizzato. In base al tuo caso d'uso, fornisci al modulo BRE un ID regola e i dati di input necessari. |
2 | Modulo BRE | Il modulo BRE utilizza l'SDK ABAP per Google Cloud per recuperare le regole configurate da Cloud Storage e chiama Gemini utilizzando l'SDK Vertex AI per ABAP per elaborare le regole. |
3 | Repository delle regole | Memorizza le regole (prompt creati in base a dati) in Cloud Storage
come file di testo, ad esempio .txt o .prompt ,
con una convenzione di denominazione coerente. Ad esempio: RiskShiftingClause.prompt .
Per una gestione strutturata dei prompt creati, puoi anche
prendere in considerazione l'utilizzo di un database come Cloud SQL. |
4 | Processore delle regole | L'SDK Vertex AI per ABAP invia i dati di input (ad esempio le istruzioni di consegna) e la regola recuperata (prompt) a Gemini. Gemini elabora il prompt e i dati di input, esegue l'analisi e restituisce i risultati nel formato specificato. |
Prodotti utilizzati
Questa architettura di riferimento utilizza i seguenti prodotti Google Cloud:
ABAP SDK for Google Cloud: ti aiuta a sviluppare applicazioni ABAP che collegano i tuoi sistemi SAP ai servizi Google Cloud, come Cloud Storage.
SDK Vertex AI per ABAP: ti consente di utilizzare Vertex AI di Google nel tuo ambiente SAP. In questo modo, semplifica la creazione di funzionalità basate sull'AI nelle tue applicazioni SAP.
Cloud Storage: un servizio cloud per archiviare e accedere a qualsiasi quantità di dati online.
Vertex AI: ti consente di creare, eseguire il deployment e scalare modelli di machine learning per varie applicazioni.
Caso d'uso
Considera uno scenario in cui la tua azienda riceve ordini di acquisto in entrata come PDF e utilizza un processo automatizzato per generare ordini di vendita in SAP. Devi aggiornare questa procedura per identificare e mitigare le clausole di trasferimento del rischio trovate nei commenti di invio degli ordini di acquisto in entrata.
Le clausole di trasferimento del rischio in un contratto sono termini che trasferiscono il rischio da una parte all'altra. Il mancato riconoscimento e l'errata gestione di queste clausole può colpire la tua azienda con costi imprevisti, battaglie legali e danni alla reputazione.
Di seguito è riportato un esempio di clausola di trasferimento del rischio scritta nel commento di invio di un documento dell'ordine di acquisto.
"Il venditore garantisce che i prodotti saranno esenti da difetti per un periodo di dieci anni dalla data di consegna".
Devi scrivere una regola per quanto segue:
- Identifica e classifica le clausole di trasferimento del rischio.
- Fornisci una spiegazione del motivo per cui è considerato un potenziale segnale di allarme.
- Fornire consigli su come ridurre il rischio.
Puoi creare un BRE con Gemini per generare una risposta JSON intelligente, che consente alla tua applicazione aziendale SAP di prendere decisioni automatiche, attivare il rifiuto del processo o avviare convalide umane a valle.
Clausole di trasferimento del rischio di esempio
La tabella seguente elenca le clausole di trasferimento del rischio di esempio che possono essere trovate negli ordini di acquisto in entrata:
Categoria problema | Clausola di esempio (istruzioni per la consegna) | Potenziali problemi |
---|---|---|
Indennizzo eccessivo | Il Venditore indennizzerà l'Acquirente da tutti i reclami, le perdite, i danni e le spese, incluse, a titolo esemplificativo, le spese legali, derivanti da o correlati ai prodotti. | Ciò potrebbe essere problematico se la descrizione è troppo generica e rende il venditore responsabile di eventi imprevisti o uso improprio da parte del cliente. |
Estensione eccessiva della riservatezza | Tutte le informazioni divulgate dall'acquirente al venditore, inclusi, a titolo esemplificativo, prezzi, specifiche e piani di marketing, sono considerate riservate e di proprietà dell'acquirente. | Ciò potrebbe ostacolare la capacità del venditore di utilizzare le conoscenze generali del settore o di lavorare con altri clienti. |
Legislazione vigente ambigua | Il presente contratto sarà regolato dalle leggi della località, ad esempio lo stato dell'Illinois. | Ciò potrebbe portare a conflitti di legge se l'acquirente e il venditore si trovano in giurisdizioni diverse. |
Limitazione per forza maggiore | Il Venditore non sarà esonerato dall'adempimento ai sensi del presente contratto a causa di eventi di forza maggiore, inclusi eventi fortuiti, guerre o terrorismo. | Ciò potrebbe rendere il venditore responsabile di eventi al di fuori del suo controllo. |
Ambiguità sulla proprietà intellettuale | Tutti i diritti di proprietà intellettuale dei prodotti appartengono all'acquirente. | Questo potrebbe essere un campanello d'allarme se il venditore proviene da un paese sanzionato o ha legami con uno di questi. |
Prompt creato con l'ingegneria di esempio
La sezione descrive un prompt di esempio progettato utilizzando il framework RTF. Il framework RTF nell'ingegneria dei prompt indica ruolo, attività e formato. È un modo efficace per strutturare i prompt in modo da ottenere risultati migliori e più coerenti dagli LLM come Gemini.
- Ruolo: la persona che vuoi che l'LLM adotti, ad esempio "esperto di vendita" o "consulente legale".
- Attività: azione specifica per l'LLM, ad esempio "Riassumi questo testo" o "Esegui l'analisi di qualcosa".
- Formato: la struttura di output desiderata, ad esempio elenco o JSON.
Per scoprire le strategie di prompt comuni che puoi utilizzare per influenzare le risposte del modello, consulta la Panoramica delle strategie di prompt
Il seguente prompt funge da regola di definizione per aiutare Gemini a identificare problemi come la clausola di trasferimento del rischio:
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." } |
Puoi archiviare questo prompt in un repository come Cloud Storage. I dati di input possono essere trasmessi dalle transazioni SAP al modulo BRE.
Poi, utilizza l'ABAP SDK per Google Cloud per recuperare il prompt da Cloud Storage e passarlo a Gemini per l'esecuzione utilizzando l'SDK Vertex AI per ABAP.
La risposta JSON di esempio viene generata da Gemini per questo esempio di clausola di trasferimento del rischio.
Il seguente codice campione mostra come recuperare le regole e utilizzarle nel codice.
Si presume che tu stia implementando un servizio BRE come classe ABAP, ad esempio 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 ).
Sostituisci quanto segue:
CLIENT_KEY
: la chiave client configurata per l'autenticazione a Vertex AI e Cloud Storage.MODEL_KEY
: il nome della chiave del modello per accedere all'LLM, configurato nei parametri di generazione del modello.
Il metodo execute_rule
esegue quanto segue:
Legge il file delle regole da Cloud Storage utilizzando la classe
/GOOG/CL_STORAGE_V1
.Invia le regole di elaborazione a Gemini, che vengono impostate come istruzione per il modello, utilizzando la classe
/GOOG/CL_GENERATIVE_MODEL
. Il modello genera quindi una risposta JSON.
Di seguito è riportato il codice campione completo per riferimento futuro:
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.
Note sul layout
Questa sezione fornisce indicazioni per aiutarti a utilizzare questa architettura di riferimento per sviluppare una o più architetture che ti consentano di soddisfare i tuoi requisiti specifici di sicurezza, privacy, conformità, costi e prestazioni.
Sicurezza, privacy e conformità
La sicurezza e la conformità sono responsabilità condivise. Per informazioni dettagliate, consulta la sezione Responsabilità condivisa di Vertex AI.
Per informazioni su come Gemini utilizza i tuoi dati, consulta In che modo Gemini for Google Cloud utilizza i tuoi dati.
Costo
Per una stima del costo delle risorse Google Cloud come Cloud Storage, utilizza il Calcolatore prezzi di Google Cloud.
Per i prezzi relativi a Vertex AI e all'API Gemini, consulta la pagina Prezzi di Vertex AI.
Design alternativo
Sebbene questo documento si concentri sull'edizione on-premise o su qualsiasi versione cloud di ABAP SDK for Google Cloud, puoi ottenere risultati simili utilizzando l'edizione SAP BTP di ABAP SDK for Google Cloud. L'SDK Vertex AI per ABAP non è disponibile per l'ambiente SAP BTP, ma puoi utilizzare l'esempio di codice fornito in questo documento per l'edizione on-premise dell'SDK, modificarlo e creare soluzioni simili all'interno del tuo ambiente SAP BTP.
Passaggi successivi
- Per informazioni sull'SDK Vertex AI per ABAP, consulta la Panoramica dell'SDK Vertex AI per ABAP.
- Per informazioni sull'ABAP SDK for Google Cloud, consulta la Panoramica dell'ABAP SDK for Google Cloud.
Se hai bisogno di aiuto per risolvere i problemi relativi all'SDK ABAP per Google Cloud, segui questi passaggi:
- Fai riferimento alla guida alla risoluzione dei problemi di ABAP SDK for Google Cloud.
- Fai domande e discuti dell'ABAP SDK per Google Cloud con la community nei forum di Cloud.
- Raccogli tutte le informazioni diagnostiche disponibili e contatta l'assistenza clienti Google Cloud. Per informazioni su come contattare l'assistenza clienti, consulta Assistenza per SAP su Google Cloud.
Collaboratori
Autori: Ameya Suvarna | Team Lead di SAP Application Engineer
Altri collaboratori: Vikash Kumar | Technical Writer