Dokumen ini menjelaskan arsitektur referensi untuk membuat mesin aturan bisnis yang didukung oleh Large Language Model (LLM) seperti Gemini, untuk mengotomatiskan pengambilan keputusan dalam aplikasi bisnis SAP Anda. Aplikasi ini menggunakan berbagai kemampuan integrasi ABAP SDK untuk Google Cloud.
Audiens yang dituju untuk dokumen ini mencakup developer ABAP, arsitek solusi SAP, dan arsitek cloud. Dokumen ini mengasumsikan pemahaman dasar tentang ABAP SDK untuk Google Cloud, Vertex AI SDK untuk ABAP, dan pengantar dasar LLM.
Apa yang dimaksud dengan mesin aturan bisnis (BRE)?
Mesin aturan bisnis (BRE) adalah sistem software yang memungkinkan Anda menentukan, men-deploy, dan menjalankan aturan bisnis. Aturan ini pada dasarnya adalah pernyataan logika yang menentukan cara bisnis Anda beroperasi. Daripada melakukan hard code pada aturan bisnis ke dalam aplikasi Anda, BRE akan mengeksternalisasi pernyataan logika, sehingga pengelolaan dan perubahan aturan menjadi efisien.
BRE yang didukung Gemini menggunakan kemampuan pemrosesan dan penalaran bahasa lanjutan dari Gemini, model AI generasi berikutnya dari Google, untuk mengotomatiskan proses pengambilan keputusan berdasarkan repositori perintah yang dirancang yang berfungsi sebagai aturan bisnis. Perintah ini, yang dibuat dengan petunjuk spesifik dan format output yang diharapkan, memandu Gemini dalam menganalisis data, mengidentifikasi pola, dan membuat keputusan dengan cara yang konsisten dengan logika bisnis yang telah ditentukan sebelumnya.
Arsitektur
Diagram berikut menunjukkan arsitektur referensi untuk membuat BRE yang didukung Gemini untuk aplikasi SAP:
Arsitektur referensi ini mencakup komponen berikut:
Komponen | Subsistem | Detail |
---|---|---|
1 | SAP ERP | Sistem SAP ERP seperti SAP S/4HANA, yang menggunakan BRE yang didukung Gemini untuk mendapatkan insight bagi pengambilan keputusan otomatis. Berdasarkan kasus penggunaan, Anda memberikan ID aturan dan data input yang diperlukan ke modul BRE. |
2 | Modul BRE | Modul BRE menggunakan ABAP SDK untuk Google Cloud guna mengambil aturan yang dikonfigurasi dari Cloud Storage dan memanggil Gemini menggunakan Vertex AI SDK untuk ABAP guna memproses aturan. |
3 | Repositori Aturan | Menyimpan aturan (perintah yang dirancang) di Cloud Storage sebagai file teks, seperti .txt atau .prompt , dengan konvensi penamaan yang konsisten. Misalnya, RiskShiftingClause.prompt .
Untuk pengelolaan terstruktur perintah yang dibuat, Anda juga dapat
mempertimbangkan untuk menggunakan database seperti Cloud SQL. |
4 | Pemroses Aturan | Vertex AI SDK untuk ABAP mengirimkan data input (misalnya, petunjuk pengiriman) dan aturan yang diambil (perintah) ke Gemini. Gemini memproses perintah dan data input, melakukan analisis, dan menampilkan hasilnya dalam format yang ditentukan. |
Produk yang digunakan
Arsitektur referensi ini menggunakan produk Google Cloud berikut:
ABAP SDK untuk Google Cloud: Membantu Anda mengembangkan aplikasi ABAP yang menghubungkan sistem SAP Anda ke layanan Google Cloud , seperti Cloud Storage.
Vertex AI SDK untuk ABAP: Memungkinkan Anda menggunakan Vertex AI Google dalam lingkungan SAP. Hal ini menyederhanakan pembuatan fitur yang didukung AI di aplikasi SAP Anda.
Cloud Storage: Layanan cloud untuk menyimpan dan mengakses data dalam jumlah berapa pun secara online.
Vertex AI: Memungkinkan Anda membuat, men-deploy, dan menskalakan model machine learning untuk berbagai aplikasi.
Kasus penggunaan
Pertimbangkan skenario saat perusahaan Anda menerima pesanan pembelian (PO) masuk sebagai PDF dan menggunakan proses otomatis untuk membuat pesanan penjualan di SAP. Anda perlu memperbarui proses ini untuk mengidentifikasi dan memitigasi klausul pengalihan risiko yang ditemukan dalam komentar pengiriman PO yang masuk.
Klausul pengalihan risiko dalam kontrak adalah persyaratan yang mentransfer risiko dari satu pihak ke pihak lain. Kegagalan dalam mengidentifikasi dan mengatasi klausul ini dapat menyebabkan perusahaan Anda mengalami biaya yang tidak terduga, pertempuran hukum, dan kerusakan reputasi.
Berikut adalah contoh klausul pengalihan risiko yang ditulis dalam komentar pengiriman dokumen PO.
"Penjual menjamin bahwa produk akan bebas dari kerusakan selama periode sepuluh tahun sejak tanggal pengiriman."
Anda perlu menulis aturan untuk hal berikut:
- Identifikasi dan kategorikan klausul pengalihan risiko.
- Berikan penjelasan tentang alasan konten tersebut dianggap sebagai potensi tanda bahaya.
- Berikan rekomendasi tentang cara memitigasi risiko.
Anda dapat mem-build BRE dengan Gemini untuk menghasilkan respons JSON cerdas, yang memungkinkan aplikasi bisnis SAP Anda mengambil keputusan otomatis, memicu penolakan proses, atau memulai validasi manual downstream.
Contoh klausul pengalihan risiko
Tabel berikut mencantumkan contoh klausul pengalihan risiko yang dapat ditemukan dalam pesanan pembelian masuk:
Kategori masalah | Contoh klausul (Petunjuk pengiriman) | Potensi masalah |
---|---|---|
Perlindungan terhadap Kerugian yang berlebihan | Penjual akan mengganti kerugian pembeli atas semua klaim, kerugian, kerusakan, dan pengeluaran, termasuk tetapi tidak terbatas pada biaya pengacara, yang timbul dari atau terkait dengan produk. | Hal ini dapat menjadi masalah jika terlalu luas dan membuat penjual bertanggung jawab atas peristiwa yang tidak terduga atau penyalahgunaan oleh pelanggan. |
Perluasan kerahasiaan yang berlebihan | Semua informasi yang diungkapkan oleh pembeli kepada penjual, termasuk, tetapi tidak terbatas pada harga, spesifikasi, dan rencana pemasaran, akan dianggap rahasia dan eksklusif bagi pembeli. | Hal ini dapat menghambat kemampuan penjual untuk menggunakan pengetahuan industri umum atau bekerja sama dengan klien lain. |
Hukum yang mengatur ambigu | Perjanjian ini akan diatur oleh hukum lokasi, misalnya, Negara Bagian Illinois. | Hal ini dapat menyebabkan konflik hukum jika pembeli dan penjual berada di wilayah hukum yang berbeda. |
Batasan keadaan memaksa | Penjual tidak akan dibebaskan dari kewajibannya berdasarkan perjanjian ini karena peristiwa force majeure, termasuk bencana alam, perang, atau terorisme. | Hal ini dapat membuat penjual bertanggung jawab atas peristiwa yang berada di luar kendalinya. |
Ambiguitas kekayaan intelektual | Semua hak kekayaan intelektual dalam produk akan menjadi milik pembeli. | Hal ini dapat menjadi tanda bahaya jika penjual berasal dari negara yang terkena sanksi atau memiliki hubungan dengan negara tersebut. |
Contoh perintah yang direkayasa
Bagian ini menjelaskan contoh perintah yang dirancang menggunakan framework RTF. Framework RTF dalam rekayasa perintah adalah singkatan dari Peran, Tugas, dan Format. Ini adalah cara efektif untuk menyusun perintah Anda guna mendapatkan hasil yang lebih baik dan lebih konsisten dari LLM seperti Gemini.
- Peran: Persona yang Anda inginkan untuk diadopsi LLM, seperti "ahli penjualan" atau "penasihat hukum".
- Tugas: Tindakan spesifik untuk LLM, seperti, "ringkas teks ini" atau "analisis sesuatu".
- Format: Struktur output yang diinginkan, seperti daftar atau JSON.
Untuk mempelajari strategi perintah umum yang dapat Anda gunakan untuk memengaruhi respons model, lihat Ringkasan strategi perintah
Perintah berikut berfungsi sebagai aturan penentu untuk membantu Gemini mengidentifikasi masalah seperti klausul pengalihan risiko:
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." } |
Anda dapat menyimpan perintah ini di repositori seperti Cloud Storage. Data input dapat diteruskan oleh transaksi SAP ke modul BRE.
Kemudian, Anda menggunakan ABAP SDK untuk Google Cloud guna mengambil perintah dari Cloud Storage dan meneruskannya ke Gemini untuk dieksekusi, dengan menggunakan Vertex AI SDK untuk ABAP.
Contoh respons JSON dibuat oleh Gemini untuk contoh klausul pengalihan risiko ini.
Contoh kode berikut menunjukkan cara mengambil aturan dan menggunakannya dalam kode Anda.
Ini mengasumsikan bahwa Anda menerapkan layanan BRE sebagai class ABAP, seperti 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 ).
Ganti kode berikut:
CLIENT_KEY
: Kunci klien yang dikonfigurasi untuk autentikasi ke Vertex AI dan Cloud Storage.MODEL_KEY
: Nama kunci model untuk mengakses LLM, yang dikonfigurasi dalam parameter pembuatan model.
Metode execute_rule
melakukan hal berikut:
Membaca file aturan dari Cloud Storage menggunakan class
/GOOG/CL_STORAGE_V1
.Mengirim aturan pemrosesan ke Gemini, yang ditetapkan sebagai petunjuk ke model, dengan menggunakan class
/GOOG/CL_GENERATIVE_MODEL
. Model kemudian akan menghasilkan respons JSON.
Berikut adalah kode contoh lengkapnya sebagai referensi Anda:
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.
Pertimbangan desain
Bagian ini memberikan panduan untuk membantu Anda menggunakan arsitektur referensi ini guna mengembangkan satu atau beberapa arsitektur yang membantu Anda memenuhi kebutuhan tertentu dalam hal keamanan, privasi, kepatuhan, biaya, dan performa.
Keamanan, privasi, dan kepatuhan:
Keamanan dan kepatuhan adalah tanggung jawab bersama. Untuk mengetahui informasi selengkapnya, lihat Tanggung jawab bersama Vertex AI.
Untuk mengetahui informasi tentang cara Gemini menggunakan data Anda, lihat Cara Gemini untuk Google Cloud menggunakan data Anda.
Biaya
Untuk memperkirakan biaya resource Google Cloud seperti Cloud Storage, gunakan Google Cloud Kalkulator Harga.
Untuk harga terkait Vertex AI dan Gemini API, lihat harga Vertex AI.
Alternatif desain
Meskipun dokumen ini berfokus pada ABAP SDK untuk Google Cloud edisi lokal atau cloud, Anda dapat memperoleh hasil yang serupa dengan menggunakan ABAP SDK untuk Google Cloud edisi SAP BTP. Vertex AI SDK untuk ABAP tidak tersedia untuk lingkungan SAP BTP, tetapi Anda dapat menggunakan contoh kode yang disediakan dalam dokumen ini untuk edisi SDK on-premise, menyesuaikannya, dan mem-build solusi serupa dalam lingkungan SAP BTP Anda.
Langkah selanjutnya
- Untuk mempelajari Vertex AI SDK untuk ABAP, lihat Ringkasan Vertex AI SDK untuk ABAP.
- Untuk mempelajari ABAP SDK untuk Google Cloud, lihat Ringkasan ABAP SDK untuk Google Cloud.
Jika Anda memerlukan bantuan untuk menyelesaikan masalah terkait ABAP SDK untuk Google Cloud, lakukan hal berikut:
- Lihat panduan pemecahan masalah ABAP SDK untuk Google Cloud.
- Ajukan pertanyaan dan diskusikan ABAP SDK untuk Google Cloud dengan komunitas di Cloud Forum.
- Kumpulkan semua informasi diagnostik yang tersedia dan hubungi Cloud Customer Care. Untuk mengetahui informasi tentang cara menghubungi Layanan Pelanggan, lihat Mendapatkan dukungan untuk SAP di Google Cloud.
Kontributor
Penulis: Ameya Suvarna | SAP Application Engineer Team Lead
Kontributor lainnya: Vikash Kumar | Technical Writer