In diesem Dokument wird eine Referenzarchitektur für die Erstellung einer Geschäftsregel-Engine beschrieben, die auf Large Language Models (LLMs) wie Gemini basiert, um die Entscheidungsfindung in Ihren SAP-Geschäftsanwendungen zu automatisieren. Dabei werden die verschiedenen Integrationsfunktionen des ABAP SDK for Google Cloud genutzt.
Dieses Dokument richtet sich an ABAP-Entwickler, SAP-Lösungsarchitekten und Cloud-Architekten. Das Dokument setzt ein grundlegendes Verständnis des ABAP SDK for Google Cloud, des Vertex AI SDK for ABAP und eine grundlegende Einführung in LLMs voraus.
Was ist eine Business Rule Engine (BRE)?
Eine Geschäftsregel-Engine (BRE) ist ein Softwaresystem, mit dem Sie Geschäftsregeln definieren, bereitstellen und ausführen können. Diese Regeln sind im Grunde Logikbefehle, die festlegen, wie Ihr Unternehmen funktioniert. Anstatt die Geschäftsregeln in Ihre Anwendungen einzubinden, werden sie mit einem BRE externisiert. So lassen sich die Regeln effizient verwalten und ändern.
Ein Gemini-gestützter BRE nutzt die erweiterten Sprachverarbeitungs- und Argumentationsfunktionen von Gemini, dem KI-Modell der nächsten Generation von Google, um Entscheidungen auf der Grundlage eines Repositorys mit vordefinierten Prompts zu automatisieren, die als Geschäftsregeln fungieren. Diese Prompts, die mit bestimmten Anweisungen und erwarteten Ausgabeformaten erstellt wurden, leiten Gemini bei der Analyse von Daten, der Erkennung von Mustern und der Entscheidungsfindung in Übereinstimmung mit der vordefinierten Geschäftslogik.
Architektur
Das folgende Diagramm zeigt eine Referenzarchitektur für die Erstellung einer Gemini-basierten BRE für SAP-Anwendungen:
Diese Referenzarchitektur umfasst die folgenden Komponenten:
Komponente | Subsystem | Details |
---|---|---|
1 | SAP ERP | Ein SAP-ERP-System wie SAP S/4HANA, das eine Gemini-gestützte BRE verwendet, um Erkenntnisse für die automatisierte Entscheidungsfindung zu gewinnen. Je nach Anwendungsfall geben Sie dem BRE-Modul eine Regel-ID und die erforderlichen Eingabedaten an. |
2 | BRE-Modul | Das BRE-Modul verwendet das ABAP SDK for Google Cloud, um konfigurierte Regeln aus Cloud Storage abzurufen, und ruft Gemini auf, indem es die Regeln mit dem Vertex AI SDK for ABAP verarbeitet. |
3 | Regel-Repository | Speichert Regeln (entwickelte Prompts) in Cloud Storage als Textdateien wie .txt oder .prompt mit einer einheitlichen Benennungskonvention. Beispiel: RiskShiftingClause.prompt
Für die strukturierte Verwaltung von Prompts können Sie auch eine Datenbank wie Cloud SQL verwenden. |
4 | Regelprozessor | Das Vertex AI SDK für ABAP sendet die Eingabedaten (z. B. Anweisungen zur Zustellung) und die abgerufene Regel (Prompt) an Gemini. Gemini verarbeitet den Prompt und die Eingabedaten, führt eine Analyse durch und gibt die Ergebnisse im angegebenen Format zurück. |
Verwendete Produkte
In dieser Referenzarchitektur werden die folgenden Google Cloud Produkte verwendet:
ABAP SDK for Google Cloud: Hilft Ihnen, ABAP-Anwendungen zu entwickeln, die Ihre SAP-Systeme mit Google Cloud Diensten wie Cloud Storage verbinden.
Vertex AI SDK für ABAP: Damit können Sie Vertex AI von Google in Ihrer SAP-Umgebung verwenden. So können Sie KI-gestützte Funktionen in Ihren SAP-Anwendungen einfacher erstellen.
Cloud Storage: Ein Cloud-Dienst zum Speichern und Abrufen beliebiger Datenmengen online.
Vertex AI: Mit dieser Lösung können Sie Modelle für maschinelles Lernen für verschiedene Anwendungen erstellen, bereitstellen und skalieren.
Anwendungsfall
Angenommen, Ihr Unternehmen erhält eingehende Bestellungen als PDFs und generiert mit einem automatisierten Prozess Verkaufsaufträge in SAP. Sie müssen diesen Prozess aktualisieren, um Risikoübertragungsklauseln in den Lieferkommentaren eingehender Bestellungen zu identifizieren und zu minimieren.
Risikoübertragungsklauseln in einem Vertrag sind Bedingungen, die das Risiko von einer Partei auf eine andere übertragen. Wenn Sie diese Klauseln nicht identifizieren und angehen, kann Ihr Unternehmen unerwartete Kosten, Rechtsstreitigkeiten und Reputationsschäden erleiden.
Das folgende Beispiel zeigt eine Risikoübertragungsklausel, die im Lieferkommentar eines Bestelldokuments enthalten ist.
„Der Verkäufer garantiert, dass die Produkte ab dem Lieferdatum für einen Zeitraum von drei Jahren frei von Mängeln sind.“
Sie müssen eine Regel für Folgendes schreiben:
- Identifizieren und kategorisieren Sie die Klauseln zur Risikoverlagerung.
- Geben Sie an, warum es als potenzielles Warnzeichen betrachtet wird.
- Geben Sie Empfehlungen dazu, wie das Risiko minimiert werden kann.
Sie können mit Gemini eine BRE erstellen, um eine intelligente JSON-Antwort zu generieren, mit der Ihre SAP-Geschäftsanwendung automatisierte Entscheidungen treffen, eine Prozessablehnung auslösen oder nachgelagerte manuelle Validierungen initiieren kann.
Musterklauseln zur Risikoverlagerung
In der folgenden Tabelle sind Beispielklauseln zur Risikoverlagerung aufgeführt, die in eingehenden Bestellungen zu finden sind:
Problemkategorie | Beispiel für eine Klausel (Lieferhinweise) | Potenzielle Probleme |
---|---|---|
Übermäßige Haftungsfreistellung | Der Verkäufer stellt den Käufer von allen Ansprüchen, Verlusten, Schäden und Kosten frei, einschließlich, aber nicht beschränkt auf Anwaltskosten, die sich aus oder im Zusammenhang mit den Produkten ergeben. | Das kann problematisch sein, wenn die Klausel zu weit gefasst ist und den Verkäufer für unvorhergesehene Ereignisse oder Missbrauch durch Kunden haftbar macht. |
Übermäßige Vertraulichkeit | Alle Informationen, die der Käufer dem Verkäufer offenlegt, einschließlich, aber nicht beschränkt auf Preise, Spezifikationen und Marketingpläne, gelten als vertraulich und als Eigentum des Käufers. | Dies könnte die Fähigkeit des Verkäufers beeinträchtigen, allgemeines Branchenwissen zu nutzen oder mit anderen Kunden zusammenzuarbeiten. |
Nicht eindeutiges anwendbares Recht | Diese Vereinbarung unterliegt dem Recht des jeweiligen Standorts, z. B. dem Recht des US-Bundesstaats Illinois. | Dies kann zu Konflikten bei der Gesetzgebung führen, wenn sich Käufer und Verkäufer in verschiedenen Gerichtsbarkeiten befinden. |
Einschränkung bei höherer Gewalt | Der Verkäufer ist nicht von der Erfüllung seiner Verpflichtungen aus dieser Vereinbarung aufgrund von Ereignissen höherer Gewalt befreit, einschließlich höherer Gewalt, Krieg oder Terrorismus. | Dies könnte dazu führen, dass der Verkäufer für Ereignisse haftet, die außerhalb seines Einflussbereichs liegen. |
Unklarheiten in Bezug auf geistiges Eigentum | Alle gewerblichen Schutzrechte an den Produkten gehören dem Käufer. | Das kann ein Warnzeichen sein, wenn der Verkäufer aus einem sanktionierten Land stammt oder Verbindungen zu einem solchen Land hat. |
Beispiel für einen Prompt
In diesem Abschnitt wird ein Beispiel-Prompt beschrieben, der mit dem RTF-Framework erstellt wurde. Das RTF-Framework im Prompt Engineering steht für Rolle, Aufgabe und Format. So können Sie Ihre Prompts effektiv strukturieren, um bessere und konsistentere Ergebnisse von LLMs wie Gemini zu erhalten.
- Rolle: Die Rolle, die das LLM einnehmen soll, z. B. „Vertriebsexperte“ oder „Rechtsanwalt“.
- Aufgabe: Bestimmte Aktion für das LLM, z. B. „Diesen Text zusammenfassen“ oder „Etwas analysieren“.
- Format: Gewünschte Ausgabestruktur, z. B. Liste oder JSON.
Weitere Informationen zu gängigen Prompt-Strategien, mit denen Sie die Antworten des Modells beeinflussen können, finden Sie unter Übersicht über Prompt-Strategien.
Der folgende Prompt dient als Definition, mit der Gemini Probleme wie die Risikoüberwälzungsklausel erkennen kann:
RTF-Framework |
---|
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." } |
Sie können diesen Prompt in einem Repository wie Cloud Storage speichern. Die Eingabedaten können von den SAP-Transaktionen an das BRE-Modul übergeben werden.
Anschließend verwenden Sie das ABAP SDK for Google Cloud, um den Prompt aus Cloud Storage abzurufen und mit dem Vertex AI SDK for ABAP zur Ausführung an Gemini weiterzuleiten.
Die Beispiel-JSON-Antwort wird von Gemini für dieses Beispiel für eine Risikoübertragungsklausel generiert.
Im folgenden Beispielcode wird gezeigt, wie Sie die Regeln abrufen und in Ihrem Code verwenden.
Es wird davon ausgegangen, dass Sie einen BRE-Dienst als ABAP-Klasse implementieren, z. B. 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 ).
Ersetzen Sie Folgendes:
CLIENT_KEY
: Der Clientschlüssel, der für die Authentifizierung bei Vertex AI und Cloud Storage konfiguriert ist.MODEL_KEY
: Der Name des Modellschlüssels für den Zugriff auf das LLM, der in den Parametern für die Modellgenerierung konfiguriert ist.
Die Methode execute_rule
führt Folgendes aus:
Liest die Regeldatei mit der Klasse
/GOOG/CL_STORAGE_V1
aus Cloud Storage.Sendet die Verarbeitungsregeln an Gemini, die über die Klasse
/GOOG/CL_GENERATIVE_MODEL
als Anweisung für das Modell festgelegt werden. Das Modell generiert dann eine JSON-Antwort.
Im Folgenden finden Sie den vollständigen Beispielcode:
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.
Designaspekte
Dieser Abschnitt enthält eine Anleitung zur Verwendung dieser Referenzarchitektur, um eine oder mehrere Architekturen zu entwickeln, die Ihnen helfen, Ihre spezifischen Anforderungen an Sicherheit, Datenschutz, Compliance, Kosten und Leistung zu erfüllen.
Sicherheit, Datenschutz und Compliance
Für Sicherheit und Compliance tragen Sie gemeinsam die Verantwortung. Weitere Informationen finden Sie unter Geteilte Verantwortung bei Vertex AI.
Weitere Informationen dazu, wie Gemini Ihre Daten verwendet, finden Sie unter So verwendet Gemini Ihre Daten. Google Cloud
Kosten
Eine Schätzung der Kosten für die Google Cloud Ressourcen wie Cloud-Speicher erhalten Sie mit dem Google Cloud Preisrechner.
Informationen zu den Preisen für Vertex AI und die Gemini API finden Sie unter Vertex AI-Preise.
Designalternative
In diesem Dokument liegt der Schwerpunkt auf der lokalen oder einer Cloud-Version des ABAP SDK for Google Cloud. Mit der SAP BTP-Version des ABAP SDK for Google Cloud können Sie jedoch ähnliche Ergebnisse erzielen. Das Vertex AI SDK für ABAP ist für die SAP BTP-Umgebung nicht verfügbar. Sie können jedoch das in diesem Dokument für die On-Premises-Version des SDK bereitgestellte Codebeispiel verwenden, anpassen und ähnliche Lösungen in Ihrer SAP BTP-Umgebung erstellen.
Nächste Schritte
- Weitere Informationen zum Vertex AI SDK für ABAP finden Sie unter Übersicht über das Vertex AI SDK für ABAP.
- Weitere Informationen zum ABAP SDK for Google Cloud finden Sie unter ABAP SDK for Google Cloud – Übersicht.
Wenn Sie Hilfe bei der Behebung von Problemen mit dem ABAP SDK for Google Cloud benötigen, gehen Sie so vor:
- Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung für ABAP SDK for Google Cloud.
- In den Cloud-Foren können Sie Ihre Fragen stellen und über die ABAP SDK für Google Cloud mit der Community sprechen.
- Erfassen Sie alle verfügbaren Diagnoseinformationen und wenden Sie sich an Cloud Customer Care. Weitere Informationen zur Kontaktaufnahme mit Customer Care finden Sie unter Support für SAP in Google Cloud.
Beitragende
Autoren: Ameya Suvarna | SAP Application Engineer Team Lead
Weitere Mitwirkende: Vikash Kumar | Technischer Autor