¿Cómo podemos aprovechar la tecnología en la que se basa ChatGPT para interactuar con S/4HANA?
En este post describo un escenario de integración que nos permite responder automáticamente con información proveniente de S/4HANA.
ChatGPT es una de las aplicaciones más utilizadas hoy en día por una gran variedad de usuarios a la hora de buscar información sobre casi cualquier tema. Si bien en cierta medida la rápida adopción de esta aplicación como fuente de consulta se debe al gran volumen de contenido que maneja, es poco probable que ofrezca información que no esté accesible en Internet.
Donde realmente se puede ver un avance sustancial es en la interfaz conversacional.
El enfoque innovador de Openai ha dado lugar a un salto significativo en la capacidad de los Grandes Modelos de Lenguaje (LLM por sus siglas en inglés) para aprender patrones y estructuras lingüísticas a partir de grandes cantidades de texto en diversos dominios. Estos modelos pueden generar texto coherente basado en el contexto proporcionado.
En la búsqueda de formas de aprovechar esta tecnología junto con los productos de SAP nos encontramos con una entrada previa a este blog en la que se describe un interesante escenario de integración entre ChatGPT y S/4HANA. En este artículo vamos a presentar un escenario similar pero 100% implementado en SAP BTP.
Descripción de escenario:
Se implementó un sistema que interactúa vía email con clientes que envían consultas sobre el estado de una Orden de Compra. El sistema revisa periódicamente una casilla de correo, decide si la solicitud del cliente tiene por objetivo conocer el estado de su orden de compra y en caso afirmativo extrae los datos relevantes del cuerpo del correo para realizar un llamado a S/4HANA y obtener el status de la orden de compra indicada. Una vez recibida la información del ERP el sistema confecciona un correo electrónico emulando a un agente de atención al cliente y proporciona los datos solicitados.
Arquitectura
OpenAI Text Completion API
La API llamada “Text Completion” pone a disposición la funcionalidad principal del modelo de lenguaje generativo GPT-3 de OpenAI. A través de la misma es posible completar y generar texto coherente y de alta calidad. Esta interfaz permite que nuestras aplicaciones realicen tareas como:
- Generación de texto
- Traducción de idiomas
- Conversación
- Búsqueda de información
Teniendo en cuenta lo anterior utilizaremos la API Text Completion para dos tareas:
-
- Procesar los mensajes de correo electrónico interpretando si se trata de una consulta por el estado de una orden de compra. En caso afirmativo le pediremos que genere una estructura JSON con dos datos puntuales: Nombre del cliente y número de la Orden de Compra.
- A partir de la respuesta de S/4HANA con la información de la orden de venta correspondiente, confeccionar un email de respuesta.
La integración entre el canal de entrada (email) y el ERP se realizará mediante iflows desarrollados en Integration Suite. Para recuperar los correos entrantes se configura un adaptador email receiver, en el que proporcionamos los datos de conexión al servidor de correo electrónico así como también la frecuencia con que queremos que se revise si han llegado nuevos mensajes.
La interacción con la API Text Completion se realiza mediante HTTP Requests y la instrucción que le damos es la siguiente:
“procesar el siguiente texto y convertirlo en un objeto JSON con propiedades ‘purchase_order’ y ‘nombre’ y asignar el valor de orden de compra en ‘purchase_order’ y el nombre de quien firma el texto en ‘nombre’. Solamente hacerlo si en el texto se identifica el numero de una orden de compra”
A continuación se muestra la estructura de datos que obtenemos como respuesta:
En este punto ya tenemos la información que necesitamos enviar al ERP para obtener el status de la orden de venta correspondiente a la PO indicada por nuestro cliente, por lo tanto procedemos a hacer un llamado a la API de S/4HANA. Dado que queremos acceder a un sistema On Premise desde BTP realizaremos el llamado al ERP en forma segura a través del SAP Cloud Connector. Definiremos un filtro para esta consulta con el objetivo de recuperar solamente los datos básicos de la orden de venta:
A continuación volvemos a llamar a Text Completion, en este caso para confeccionar un email de respuesta a partir de la información obtenida en el ERP. La instrucción que damos es la siguiente:
“confeccionar un texto orientado a un cliente que consultó a la empresa Invenzis por el estado de su orden de compra utilizando la información que se prorciona a continuación. El dato de estado es el indicado en el campo ‘OverallDeliveryStatus’ y el nombre del cliente está en el campo ‘nombre’ y el numero de orden de compra está en PurchaseOrderByCustomer:”
En este punto vale la pena aclarar que mediante un simple prompt o instrucción tan breve como la anterior, logramos generar en forma dinámica un bloque de texto totalmente coherente y con el tono adecuado como para enviar al cliente. Hasta hace poco tiempo, para lograr que un bot genere una respuesta de este tipo era necesario mucho más trabajo de diseño y programación.
Implementar iflow
Veamos como incorporar a un único flujo estas tres integraciones: Email, GPT y S/4HANA:
A lo largo del flujo es necesario implementar algunos Groovy Scripts para adaptar la información a cada una de las etapas de procesamiento (definir headers, eliminar tabulación y caracteres especiales en el texto, seleccionar datos de mensajes, etc).
Por último veamos cómo funciona el sistema completo:
Enviamos un correo electrónico a la casilla definida para consultas:
Finalmente el correo confeccionado por GPT a partir de la información obtenida en S/4HANA y enviado desde Integration Suite en forma automática:
Cabe aclarar que podemos fácilmente ajustar el contenido, tono, largo, y demás atributos de la respuesta si proporcionamos instrucciones más específicas, en este caso simplemente se pretende demostrar el potencial de esta tecnología para ser utilizada en el contexto de aplicaciones empresariales.
No duden ponerse en contacto conmigo si tienen dudas sobre el escenario descripto en este post.