Análisis del sentimiento de las solicitudes de soporte técnico mediante inteligencia artificial, utilizando MapForce y GPT-4
El análisis automatizado del sentimiento expresado en textos, como las reseñas de los usuarios, ha sido históricamente un desafío. Debido a la gran complejidad del lenguaje natural, los sistemas han enfrentado dificultades para analizar el contexto y los matices. Esto requería una gran cantidad de trabajo manual para superar estas limitaciones.
Una de las muchas capacidades útiles de los sistemas de inteligencia artificial modernos, que se basan en modelos de lenguaje grandes (LLM) como GPT-4 de OpenAI, es que son muy eficaces en el análisis de sentimientos en textos naturales. Podemos utilizar esa capacidad para crear una solución de base de datos muy eficiente en MapForce que, por ejemplo, analice todos los nuevos registros entrantes en una base de datos de soporte y determine automáticamente si una solicitud de soporte o cualquier otra retroalimentación del cliente es positiva, negativa, constituye un informe de error, o debe considerarse como una solicitud de mejora.

Pruebas iniciales con GPT-4 en la plataforma OpenAI Playground
Si desea seguir este artículo del blog o, en última instancia, implementar este enfoque en su propio sistema de bases de datos, necesitará crear una cuenta en OpenAI y obtener una clave de API que pueda utilizar en su implementación. Esto también le dará acceso al "Entorno de pruebas" en el portal de OpenAI, donde podrá realizar algunas pruebas iniciales y también obtener ejemplos de datos JSON que necesitará para construir las solicitudes JSON correctas en MapForce.
Como siempre, uno de los pasos más importantes al trabajar con un sistema de inteligencia artificial basado en modelos de lenguaje grandes (LLM) es la creación de una instrucción adecuada. Es importante ser lo más preciso posible para obtener el resultado deseado. Para nuestros propósitos, vamos a utilizar la siguiente instrucción:
“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”
Y a esto seguirá el análisis de los comentarios de los clientes, que es lo que queremos estudiar. Para probar esto en el entorno de OpenAI Playground, seleccionamos: Modo = Chat, Modelo = gpt-4, Temperatura = 1, Longitud máxima = 512, Top P = 1, y dejaremos tanto la penalización por frecuencia como la penalización por presencia en 0. Luego, podemos ingresar la instrucción, escribir nuestro primer comentario de un cliente, y hacer clic en el botón "Enviar":

La inteligencia artificial GPT-4 responde inmediatamente con "Positivo", que es la respuesta correcta. Podemos probar con algunos ejemplos más para verificar que nuestra instrucción funciona correctamente en todos los demás casos, y que estamos obteniendo los resultados de sentimiento esperados.
Luego, es momento de examinar la solicitud JSON haciendo clic en el botón "Ver código" y cambiando el selector de idioma del menú emergente de "Python" (que es el valor predeterminado) a "JSON". A continuación, copie el código y péguelo en XMLSpy, para poder revisarlo mejor en la vista de cuadrícula JSON:

La estructura JSON parece bastante sencilla. Esto también nos permite generar automáticamente un esquema JSON a partir de este código, que utilizaremos más adelante para configurar la solicitud del servicio web en XMLSpy y MapForce

Prueba de la API de OpenAI desde XMLSpy
Como siguiente paso, queremos asegurarnos de comprender correctamente la API de chat de OpenAI y analizar la salida JSON resultante. Vamos a realizar una prueba manual utilizando la práctica herramienta de pruebas HTTP disponible en XMLSpy, que pueden encontrar justo debajo de su ventana de trabajo principal, como una pestaña separada junto a la ventana de "Mensajes".
En la pestaña HTTP, cambie el método de solicitud HTTP a POST, introduzca la URL del punto de acceso de la API de chat de OpenAI, que es https://api.openai.com/v1/chat/completions, y establezca el tipo de contenido en application/json. Luego, copie y pegue la solicitud JSON de ejemplo que obtuvimos del entorno de pruebas (Playground) anterior en la sección "Cuerpo":

Ahora, necesitamos proporcionar nuestra clave API secreta en los encabezados para autenticar nuestra solicitud. Para ello, haga clic en la pestaña "Encabezados" y agregue una fila con el encabezado "Authorization" y un valor que comience con "Bearer", seguido de un espacio, y luego la clave API secreta. Si tiene varias cuentas con OpenAI y necesita asegurarse de que la facturación sea correcta, también puede agregar opcionalmente una segunda fila con el encabezado "OpenAI-Organization" y el valor configurado con el identificador de su organización asignada por OpenAI

Obviamente, hemos tenido que ocultar los valores exactos de nuestra clave secreta y del identificador de la organización en la captura de pantalla anterior.
Ahora estamos listos para pulsar el botón de "Enviar" para enviar la solicitud HTTP anterior al punto de acceso de la API de OpenAI y ver qué tipo de respuesta obtendremos

La primera buena noticia es que recibimos una respuesta "200 OK" en tan solo 780 milisegundos, junto con contenido del tipo "application/json", que es la carga útil de nuestra respuesta en formato JSON. Este contenido incluye un mensaje con la respuesta que el "asistente" de inteligencia artificial ha proporcionado, en forma del texto "Positivo". Por lo tanto, hemos podido replicar nuestra prueba anterior en el entorno OpenAI Playground directamente desde XMLSpy, enviando una solicitud HTTP real a la API y obteniendo la respuesta correcta.
Para continuar, guardaremos esta respuesta en un archivo utilizando el botón "Guardar en archivo" en la ventana del probador HTTP. Luego, podremos abrir ese archivo y utilizar XMLSpy para crear automáticamente un esquema JSON a partir del mensaje de respuesta JSON de ejemplo. En esta ocasión, el esquema describirá la estructura del resultado JSON esperado del servicio web, que luego podremos procesar en MapForce.

Base de datos de ejemplos de soporte
La mayoría de los sistemas de gestión de soporte técnico se basan en una base de datos SQL u otra similar, por lo que este enfoque se puede aplicar fácilmente a todos ellos. Sin embargo, para el ejemplo de esta entrada del blog, utilizaremos una versión simplificada de una base de datos de comentarios de clientes en SQLite:

Y tenemos algunos datos de ejemplo incluidos en él que nos permitirán ejecutar nuestras pruebas de integración en MapForce y determinar el sentimiento expresado en todas estas opiniones de los clientes:
![[FeedbackDatabaseData.png]]
Creación del mapeo de la base de datos en MapForce
Ahora tenemos todos los componentes necesarios para crear nuestro proyecto de transformación o ETL con MapForce, que leerá todos los registros de la base de datos, llamará a la API de OpenAI para obtener el análisis de sentimiento y escribirá los resultados de nuevo en la base de datos.
El primer paso para diseñar nuestro mapeo ETL es insertar el objeto de la base de datos "CustomerFeedback" dos veces en el mapeo: una vez como entrada (la.. extracto como parte del proceso ETL) y también como resultado final, y para conectar el objeto de la tabla principal, así como el ID. MapForce facilitará la conexión de las demás columnas, pero en realidad no necesitamos esas conexiones, por lo que puede eliminarlas de nuevo hasta que tenga este diseño:

Estamos dejando mucho espacio entre la entrada y la salida, porque es ahí donde insertaremos nuestra llamada al servicio web en breve. Pero antes de hacerlo, definamos con precisión las operaciones de la base de datos que vamos a utilizar (las... ) carga para una parte específica del proceso ETL, haga doble clic en el objeto de la base de datos correspondiente:

Asegúrese de que el primer botón de opción esté configurado en "Ninguno", porque no queremos realizar ninguna acción especial antes del primer registro. Luego, cambie el encabezado de la segunda columna a "Actualizar si..." y el cuadro combinado en la fila de "id" a "igual". Esto le indica a MapForce que actualice los datos en la base de datos para cualquier registro donde el "id" proporcionado a través del mapeo sea igual a un "id" que ya existe en la base de datos. Esto es todo lo que necesitamos hacer aquí, así que puede hacer clic en "Aceptar" nuevamente.
Ahora es el momento de insertar el componente de servicio web para llamar a la API de OpenAI. Haga clic en el botón "Insertar función de servicio web" en la barra de herramientas. Luego, configure los ajustes de llamada necesarios para la API, basándose en el trabajo que realizamos previamente al probar la API desde XMLSpy.
Al igual que antes, necesitaremos configurar el método de la solicitud HTTP para que sea POST y los encabezados para que incluyan nuestra clave API secreta, y, opcionalmente, el ID de nuestra organización. También necesitaremos indicar a MapForce cuál será la estructura de los datos de la solicitud y la respuesta, utilizando los dos esquemas JSON que creamos previamente:

Una vez que esto se haya definido, el objeto del servicio web aparecerá en el panel de diseño de MapForce, y podremos empezar a conectar las líneas correspondientes para configurar la funcionalidad. Primero, queremos llamar al servicio web una vez por cada registro en la tabla "CustomerFeedback", por lo que conectamos eso a la entrada "Request":
![[InsertWebServiceIntoMapping.png]]
Y el resultado se proporcionará en el atributo "content" dentro del mensaje que devuelve la IA, por lo que lo vinculamos a la columna de "sentimiento" en nuestro objeto de base de datos de salida.
Lo único que queda por hacer ahora es conectar todas las demás entradas necesarias para la solicitud del servicio web a la API, y podemos utilizar nuestro archivo JSON de ejemplo mencionado anteriormente para saber exactamente qué entradas son requeridas. Muchas de estas entradas serán constantes, como "gpt-4" para el modelo, y varios valores para los demás parámetros.
La información más importante que se proporciona es la instrucción inicial, junto con la retroalimentación obtenida de la base de datos. Por lo tanto, concatenamos ambas antes de enviarlas como entrada de contenido al servicio web
![[FinalMapping.png]]
Normalmente, en este punto habríamos terminado de diseñar nuestro mapeo ETL y podríamos ejecutar nuestra transformación. Sin embargo, debido a que GPT-4 es el modelo más avanzado y muchas personas lo están utilizando, OpenAI ha implementado límites de velocidad para el número de solicitudes que se pueden enviar a los servicios web por minuto, y superaríamos fácilmente esos límites si ejecutáramos esta transformación en este momento.
Por lo tanto, necesitamos añadir una pequeña función de "pausa" (sleep) entre nuestras llamadas a la interfaz del servicio web de OpenAI para separar nuestras llamadas por aproximadamente 1 segundo. Podemos hacerlo fácilmente mediante la nueva función "sleep()" integrada disponible en MapForce v2024:
![[MF-Sentiment-Analysis-With-Sleep.png]]
La pestaña "Vista previa de la salida" en MapForce es donde ahora puede ver el resultado de esta transformación. Una vez que haga clic en la pestaña, MapForce ejecutará el proyecto de mapeo ETL y generará las sentencias SQL necesarias para actualizar su base de datos, de acuerdo con los resultados del análisis de sentimiento realizado por la IA

Ahora puede ejecutar este código SQL directamente desde MapForce para actualizar realmente los datos en su base de datos.
Por supuesto, en una implementación real, querría automatizar aún más este proceso para que las nuevas solicitudes de soporte que lleguen se analicen automáticamente. Puede lograr esto fácilmente implementando este proyecto de mapeo ETL en una instancia de MapForce Server, ya sea en su propia infraestructura de TI o en su nube privada o pública. Luego, puede automatizar los requisitos del flujo de trabajo, es decir, cuándo ejecutar este análisis en función de ciertos desencadenantes o eventos, utilizando FlowForce Server.
Por cierto, todas las capturas de pantalla de XMLSpy y MapForce que aparecen en esta entrada del blog fueron tomadas utilizando el nuevo tema oscuro, ya que esa es mi preferencia personal, pero, por supuesto, pueden utilizar nuestros productos tanto en el nuevo tema claro como en el tema clásico, según sus preferencias personales.
Para probar la transformación de datos basada en inteligencia artificial en MapForce o para experimentar con cualquier API de servicios web de inteligencia artificial en XMLSpy, puede descargar una versión de prueba gratuita de 30 días de ambos productos, así como de varias otras herramientas útiles para desarrolladores, descargando la última versión de Altova MissionKit desde nuestro sitio web. Recomendamos utilizar la versión de 64 bits de la edición Enterprise para todo el trabajo relacionado con la inteligencia artificial.