En este documento, se describe una arquitectura de referencia para compilar un motor de reglas de negocio potenciado por modelos grandes de lenguaje (LLM), como Gemini, para automatizar la toma de decisiones en tus aplicaciones empresariales de SAP. Usa las diversas capacidades de integración del SDK de ABAP para Google Cloud.
El público objetivo de este documento incluye a desarrolladores de ABAP, arquitectos de soluciones de SAP y arquitectos de nube. En el documento, se da por sentado que tienes un conocimiento básico del SDK de ABAP para Google Cloud, del SDK de Vertex AI para ABAP y una introducción básica a los LLM.
¿Qué es un motor de reglas de negocio (BRE)?
Un motor de reglas de negocio (BRE) es un sistema de software que te permite definir, implementar y ejecutar reglas de negocio. Estas reglas son, en esencia, sentencias lógicas que determinan cómo funciona tu empresa. En lugar de codificar las reglas empresariales en tus aplicaciones, un BRE externaliza las sentencias lógicas, lo que hace que sea eficiente administrar y modificar las reglas.
Un BRE potenciado por Gemini usa las capacidades avanzadas de procesamiento y razonamiento de lenguaje de Gemini, el modelo de IA de nueva generación de Google, para automatizar la toma de decisiones en función de un repositorio de instrucciones diseñadas que funcionan como reglas empresariales. Estas instrucciones, creadas con instrucciones específicas y formatos de salida esperados, guían a Gemini en el análisis de datos, la identificación de patrones y la toma de decisiones de manera coherente con la lógica empresarial predefinida.
Arquitectura
En el siguiente diagrama, se muestra una arquitectura de referencia para crear una BRE potenciada por Gemini para aplicaciones de SAP:
Esta arquitectura de referencia incluye los siguientes componentes:
Componente | Subsistema | Detalles |
---|---|---|
1 | SAP ERP | Un sistema de ERP de SAP, como SAP S/4HANA, que usa un BRE potenciado por Gemini para obtener estadísticas para la toma de decisiones automatizada Según tu caso de uso, le proporcionas al módulo BRE un ID de regla y los datos de entrada necesarios. |
2 | Módulo BRE | El módulo BRE usa el SDK de ABAP para Google Cloud para recuperar las reglas configuradas de Cloud Storage y llama a Gemini con el SDK de Vertex AI para ABAP para procesar las reglas. |
3 | Repositorio de reglas | Almacena reglas (indicaciones de ingeniería) en Cloud Storage
como archivos de texto, como .txt o .prompt ,
con una convención de nombres coherente. Por ejemplo, RiskShiftingClause.prompt .
Para la administración estructurada de instrucciones diseñadas, también puedes considerar usar una base de datos como Cloud SQL. |
4 | Procesador de reglas | El SDK de Vertex AI para ABAP envía los datos de entrada (por ejemplo, las instrucciones de publicación) y la regla recuperada (sugerencia) a Gemini. Gemini procesa la instrucción y los datos de entrada, realiza un análisis y muestra los resultados en el formato especificado. |
Productos usados
En esta arquitectura de referencia, se usan los siguientes productos de Google Cloud:
SDK de ABAP para Google Cloud: Te ayuda a desarrollar aplicaciones de ABAP que conectan tus sistemas SAP a los servicios de Google Cloud, como Cloud Storage.
SDK de Vertex AI para ABAP: Te permite usar Vertex AI de Google en tu entorno de SAP. Esto simplifica la compilación de funciones potenciadas por IA en tus aplicaciones de SAP.
Cloud Storage: Es un servicio en la nube para almacenar y acceder a cualquier cantidad de datos en línea.
Vertex AI: Te permite compilar, implementar y escalar modelos de aprendizaje automático para varias aplicaciones.
Caso de uso
Imagina una situación en la que tu empresa recibe órdenes de compra entrantes (OC) como archivos PDF y usa un proceso automatizado para generar pedidos de venta en SAP. Debes actualizar este proceso para identificar y mitigar las cláusulas de transferencia de riesgos que se encuentran en los comentarios de entrega de las órdenes de compra entrantes.
Las cláusulas de transferencia de riesgos en un contrato son condiciones que transfieren el riesgo de una parte a otra. Si no identificas y abordas estas cláusulas, tu empresa puede verse sorprendida por costos inesperados, batallas legales y daños a la reputación.
El siguiente es un ejemplo de una cláusula de transferencia de riesgos escrita en el comentario de entrega de un documento de orden de compra.
“El vendedor garantiza que los productos no tendrán defectos durante un período de diez años a partir de la fecha de entrega”.
Debes escribir una regla para lo siguiente:
- Identifica y categoriza las cláusulas de transferencia de riesgos.
- Explica por qué se considera un posible indicador de alerta.
- Proporcionar recomendaciones para mitigar el riesgo
Puedes compilar un BRE con Gemini para generar una respuesta JSON inteligente, lo que permite que tu aplicación empresarial de SAP tome decisiones automatizadas, active cualquier rechazo de proceso o inicie validaciones humanas descendentes.
Ejemplos de cláusulas de transferencia de riesgos
En la siguiente tabla, se enumeran las cláusulas de transferencia de riesgos de muestra que se pueden encontrar en las órdenes de compra entrantes:
Categoría del problema | Ejemplo de cláusula (Instrucciones de entrega) | Posibles problemas |
---|---|---|
Exceso de indemnización | El Vendedor indemnizará al Comprador contra todas las reclamaciones, pérdidas, daños y gastos, incluidos, sin limitaciones, los honorarios de abogados, que surjan de los productos o estén relacionados con ellos. | Esto podría ser problemático si es demasiado amplio y hace que el vendedor sea responsable de eventos imprevistos o de un uso inadecuado por parte del cliente. |
Exceso de confidencialidad | Toda la información que el comprador divulgue al vendedor, incluidos, sin limitaciones, los precios, las especificaciones y los planes de marketing, se considerará confidencial y de propiedad del comprador. | Esto podría dificultar la capacidad del vendedor para usar el conocimiento general de la industria o trabajar con otros clientes. |
Ley aplicable ambigua | Este Acuerdo se regirá por las leyes de la ubicación, por ejemplo, el estado de Illinois. | Esto podría generar conflictos de leyes si el comprador y el vendedor se encuentran en jurisdicciones diferentes. |
Limitación de fuerza mayor | El Vendedor no estará exento de cumplir con este Acuerdo debido a ningún evento de fuerza mayor, incluidos casos fortuitos naturales, guerra o terrorismo. | Esto podría hacer que el vendedor sea responsable de eventos fuera de su control. |
Ambigüedad de la propiedad intelectual | Todos los derechos de propiedad intelectual de los productos pertenecen al comprador. | Esto podría ser un tema importante si el vendedor es de un país sancionado o tiene vínculos con uno. |
Ejemplo de instrucción de ingeniería
En la sección, se describe una instrucción de muestra diseñada con el framework de RTF. El framework RTF en la ingeniería de instrucciones significa rol, tarea y formato. Es una forma eficaz de estructurar tus instrucciones para obtener resultados mejores y más coherentes de los LLM, como Gemini.
- Rol: Es el arquetipo que deseas que adopte el LLM, como “experto en ventas” o “asesor legal”.
- Tarea: Acción específica para el LLM, como "resumir este texto" o "analizar algo".
- Formato: Es la estructura de salida deseada, como una lista o un JSON.
Para obtener información sobre las estrategias de instrucción comunes que puedes usar para afectar las respuestas del modelo, consulta Descripción general de las estrategias de instrucción.
La siguiente instrucción actúa como una regla definitoria para ayudar a Gemini a identificar problemas, como la cláusula de transferencia de riesgos:
Marco de trabajo de 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." } |
Puedes almacenar esta instrucción en un repositorio, como Cloud Storage. Las transacciones de SAP pueden pasar los datos de entrada al módulo BRE.
Luego, usa el SDK de ABAP para Google Cloud para recuperar la instrucción de Cloud Storage y pasarla a Gemini para su ejecución con el SDK de Vertex AI para ABAP.
Gemini genera la respuesta JSON de muestra para este ejemplo de cláusula de transferencia de riesgos.
En el siguiente código de muestra, se muestra cómo recuperar las reglas y usarlas en tu código.
Se supone que implementas un servicio de BRE como una clase ABAP, como 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 ).
Reemplaza lo siguiente:
CLIENT_KEY
: La clave de cliente configurada para la autenticación en Vertex AI y Cloud Storage.MODEL_KEY
: Es el nombre de la clave de modelo para acceder al LLM, que se configura en los parámetros de generación del modelo.
El método execute_rule
realiza lo siguiente:
Lee el archivo de reglas de Cloud Storage con la clase
/GOOG/CL_STORAGE_V1
.Envía las reglas de procesamiento a Gemini, que se establece como instrucción para el modelo, con la clase
/GOOG/CL_GENERATIVE_MODEL
. Luego, el modelo genera una respuesta JSON.
El siguiente es el código de muestra completo para tu referencia:
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.
Consideraciones del diseño
En esta sección, se proporciona orientación para ayudarte a usar esta arquitectura de referencia para desarrollar una o más arquitecturas que te ayuden a cumplir con tus requisitos específicos de seguridad, privacidad, cumplimiento, costo y rendimiento.
Security, privacy, and compliance
La seguridad y el cumplimiento son responsabilidades compartidas. Para obtener información detallada, consulta Responsabilidad compartida de Vertex AI.
Para obtener información sobre cómo Gemini usa tus datos, consulta Cómo Gemini para Google Cloud usa tus datos.
Costo
Para obtener una estimación del costo de los recursos de Google Cloud, como Cloud Storage, usa la calculadora de precios de Google Cloud.
Para obtener información sobre los precios relacionados con Vertex AI y la API de Gemini, consulta los precios de Vertex AI.
Alternativa de diseño
Si bien este documento se enfoca en las ediciones locales o en la nube del SDK de ABAP para Google Cloud, puedes obtener resultados similares con la edición SAP BTP del SDK de ABAP para Google Cloud. El SDK de Vertex AI para ABAP no está disponible para el entorno de SAP BTP, pero puedes usar la muestra de código proporcionada en este documento para la edición local del SDK, ajustarla y compilar soluciones similares en tu entorno de SAP BTP.
¿Qué sigue?
- Si deseas obtener información sobre el SDK de Vertex AI para ABAP, consulta Descripción general del SDK de Vertex AI para ABAP.
- Para obtener información sobre el SDK de ABAP para Google Cloud, consulta Descripción general del SDK de ABAP para Google Cloud.
Si necesitas ayuda para resolver problemas con el SDK de ABAP para Google Cloud, haz lo siguiente:
- Consulta la guía de solución de problemas del SDK de ABAP para Google Cloud.
- Haz tus preguntas y analiza el SDK de ABAP para Google Cloud con la comunidad en Cloud Forums.
- Recopila toda la información de diagnóstico disponible y comunícate con el servicio de Atención al cliente de Cloud. Si deseas obtener más información para comunicarte con el equipo de Atención al cliente, consulta Obtén asistencia para SAP en Google Cloud.
Colaboradores
Autores: Ameya Suvarna | líder de equipo de ingenieros de aplicaciones de SAP
Otros colaboradores: Vikash Kumar | Escritor técnico