Gemini-basierte Business Rule Engine für SAP

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:

Gemini-basierte Business Rule Engine für SAP

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:

  1. Liest die Regeldatei mit der Klasse /GOOG/CL_STORAGE_V1 aus Cloud Storage.

  2. 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

Beitragende

Autoren: Ameya Suvarna | SAP Application Engineer Team Lead

Weitere Mitwirkende: Vikash Kumar | Technischer Autor