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 che una conoscenza di base dell'SDK ABAP per Google Cloud, dell'SDK Vertex AI per ABAP, e un'introduzione di base agli LLM.
Che cos'è un motore di regole aziendali (BRE)?
Un motore delle regole aziendali (BRE) è un sistema software che ti consente di definire, ed eseguire regole aziendali. Queste regole sono essenzialmente istruzioni logiche che determinano il funzionamento della tua attività. Invece di impostare come hardcoded l'attività nelle applicazioni, un BRE esternalizza le istruzioni logiche, rendendo efficiente la gestione e la modifica delle regole.
Un BRE basato su Gemini utilizza le funzionalità avanzate di elaborazione del linguaggio e di ragionamento di Gemini, il modello di IA 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 creando un BRE basato su Gemini per le applicazioni SAP:
Questa architettura di riferimento include i seguenti componenti:
Componente | Sottosistema | Dettagli |
---|---|---|
1 | ERP SAP | Un sistema SAP ERP come SAP S/4HANA, che utilizza un sistema BRE basato su Gemini per ricavarne insight 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 di 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 la gestione strutturata dei prompt progettati, puoi anche
valuta di utilizzare un database come Cloud SQL. |
4 | Processore delle regole | L'SDK Vertex AI per ABAP invia i dati di input (ad es. istruzioni per la 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:
SDK ABAP per Google Cloud: aiuta a sviluppare applicazioni ABAP che si connettono dai tuoi sistemi SAP ai servizi Google Cloud, di archiviazione ideale in Cloud Storage.
SDK Vertex AI per ABAP: consente di utilizzare Vertex AI di Google all'interno del tuo ambiente SAP. Ciò semplifica la creazione basata sull'AI delle tue applicazioni SAP.
Cloud Storage: un servizio cloud per l'archiviazione e accedendo a qualsiasi quantità di dati online.
Vertex AI: consente di creare, eseguire il deployment e scalare i modelli di machine learning per varie applicazioni.
Caso d'uso
Considera uno scenario in cui la tua azienda riceve ordini di acquisto in entrata PDF e utilizza un processo automatizzato per generare ordini di vendita in SAP. Devi aggiornare questo processo per identificare e mitigare le clausole di riskshift presente nei commenti relativi alla consegna degli ordini di acquisto in arrivo.
Le clausole di variazione del rischio in un contratto sono termini che trasferiscono il rischio da un tra una parte e un'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 spostamento del rischio scritta nella richiesta di un documento di 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 sul motivo per cui viene considerato un potenziale segnale di allarme.
- Fornire consigli su come mitigare il rischio.
Puoi creare un BRE con Gemini per generare un Risposta JSON, che consente alla tua applicazione aziendale SAP di prendere prendere le decisioni, attivare eventuali rifiuti dei processi o avviare convalide umane downstream.
Clausole di trasferimento del rischio di esempio
Nella tabella seguente sono elencati gli esempi di clausole di variazione del rischio che si trovano negli ordini di acquisto in entrata:
Categoria problema | Clausola di esempio (Istruzioni per la consegna) | Problemi potenziali |
---|---|---|
Indennizzo eccessivo | Il Venditore è tenuto a indennizzare l'acquirente da qualsiasi rivendicazione, perdita, danno e spesa, incluse, a titolo esemplificativo, le spese legali, derivanti da o relative ai prodotti. | Questo potrebbe rappresentare un problema se è troppo generico e ritiene il venditore responsabile per 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, saranno considerate riservate e di proprietà dell'acquirente. | Questo potrebbe compromettere 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 di forza maggiore | Il Venditore non potrà essere esonerato dall'adempimento del presente Contratto a causa di eventi di forza maggiore, inclusi casi fortuiti, guerre o terrorismo. | Ciò potrebbe rendere il venditore responsabile di eventi al di fuori del suo controllo. |
Ambiguità in relazione alla proprietà intellettuale | Tutti i diritti di proprietà intellettuale sui prodotti appartengono all'acquirente. | Questo potrebbe essere un segnale di allarme se il venditore proviene da un paese soggetto a sanzioni o è legato a uno di questi. |
Esempio di prompt progettato
La sezione descrive un prompt di esempio progettato utilizzando il framework RTF. Il framework RTF nella ingegneria del prompt è l'acronimo di Role, Task e Format. È un modo efficace per strutturare i tuoi prompt in modo da ottenere risultati migliori e con risultati coerenti da modelli LLM come Gemini.
- Ruolo: utente tipo che vuoi venga adottato dall'LLM, 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 prompting comuni che puoi utilizzare per influenzare le risposte del modello, consulta Panoramica delle strategie di prompt
Il seguente prompt funge da regola distintiva per aiutare Gemini Identificare problemi come la clausola di spostamento 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 passati dalle transazioni SAP al modulo BRE.
Quindi userai l'SDK ABAP 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 di clausola risk-shifting.
Il seguente codice di esempio mostra come recuperare le regole e utilizzarle nel codice.
Si presuppone 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 in 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
/GOOG/CL_STORAGE_V1
.Invia le regole di elaborazione a Gemini, che è impostato come istruzione al modello, usando la classe
/GOOG/CL_GENERATIVE_MODEL
. Il modello genera quindi una risposta JSON.
Di seguito è riportato il codice di esempio 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 in termini 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 per Google Cloud utilizza i 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 i 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 usare l'esempio di codice fornito in questo documento per la versione on-premise dell'SDK, modificala e creare soluzioni simili all'interno dell'ambiente SAP BTP.
Passaggi successivi
- Per saperne di più sull'SDK Vertex AI per ABAP, consulta Panoramica dell'SDK Vertex AI per ABAP.
- Per saperne di più sull'SDK ABAP per Google Cloud, consulta la panoramica dell'SDK ABAP per Google Cloud.
Se hai bisogno di aiuto per risolvere problemi con l'SDK ABAP per Google Cloud, quindi procedi nel seguente modo:
- Consulta la guida alla risoluzione dei problemi relativi all'SDK ABAP per Google Cloud.
- Poni le tue domande e discuti dell'SDK ABAP per Google Cloud con la community sui 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 | Lead del team SAP Application Engineer
Altri collaboratori: Vikash Kumar | Technical Writer