Personality goes a long way: chatbot con OpenAI + Python

illustration. white background and main colour blue. Samuel L Jackson at Pulp Fiction with Artificial intelligence head with doctor’s cap showing self-confidence and strong personality surrounded by material from various professions such as medic, architect or attorney

Implementar un chatbot con un perfil de personalidad y campo de conocimiento específico mediante Python y la API de OpenAI es relativamente sencillo – bueno, digamos que requiere relativamente poco código – y ofrece una flexibilidad de mantenimiento y mejora basadas en reglas que pueden escribirse en un «perfil de personalidad» con el que adiestramos a Chat GPT como lo haríamos en un proceso de «Prompt Engineering», pero leyendo toda la información de contexto de un XML.

En nuestro prototipo, no nos hemos parado ahí: le hemos dado la posibilidad de que nuestro programa tome la iniciativa con preguntas que previamente sabemos que necesitará en su campo de aplicación y las incluya como contexto a las consultas del usuario y, si, todo dentro del XML de personalidad.

La gran ventaja aquí es la de juntar las bondades que nos aporta la IA Generativa con la capacidad de iteración y automatización que ya nos permitían las tecnologías de programación anteriores.

En nuestra aplicación, desarrollada con Python en Visual Studio Net, podemos observar cómo tenemos dos archivos XML en los que está la información de personalidad de la IA, en este caso, ya contamos con un experto en propiedad industrial y un personal sanitario encargado del triaje y valoración de pacientes.

Si abrimos cada uno de los ficheros en XML, encontraremos las etiquetas en XML que luego se cargarán para definir el comportamiento y el campo de conocimiento en el que queremos que Chat GPT nos aconseje o solucione problemas.

Para crear un nuevo tipo de robot, por ejemplo, uno que nos aconseje sobre fiscalidad, sólo tendremos que editar la plantilla definiendo la estructura que se observa en el XML de la izquierda.

El Bot desarrollado no sólo tiene un campo de aplicación con todos los modificadores y preguntas previas que le programemos para contextualizar la respuesta, si no que guarda un registro a texto (o base de datos) con las conversaciones y es capaz de modificar su opinión según le demos más datos durante la conversación: tiene memoria y contexto.

Por último, os dejamos una captura con el comportamiento del bot de triaje, que es capaz de asignar un nivel de gravedad según le relate el paciente: