En Foxize, llevamos algunos meses indagando en el misterioso pero popular mundo de la Inteligencia Artificial. Se han lanzado diversas iniciativas internas, como formación, charlas y desarrollo de proyectos. En este último es donde se sitúa esta entrada y el proyecto Markus.
La concepción de Markus
Para poneros un poco en contexto, desarrollamos una aplicación interna llamada Params, para que el equipo pudiera gestionar los parámetros de los Cloud de los clientes sin la necesidad de depender del equipo técnico. Aun así, todavía es un proyecto muy técnico y queríamos hacerlo más approachable para otros equipos (en concreto el equipo de Project Managers, que están día a día gestionando Cloud de clientes).
Así surgió la idea de desarrollar el chatbot Markus (en honor a Marc, nuestro increíble Customer Success), para reducir la fricción en el uso de Params.
Pero antes de entrar de lleno a desarrollar el chatbot, es necesario hacer investigación sobre cómo funciona una IA.
Bóvedas y Zettelkasten: estudio preliminar sobre la IA
Mi objetivo principal era entender los diferentes tipos de Inteligencia Artificial para decidir qué tipo sería el más adecuado para Markus.
Justo empecé a usar Obsidian para desarrollar ideas para mi blog personal, así que decidí crear una nueva Bóveda para investigar la IA.
Investigué los tipos de IA, los clasifiqué en grupos y los organicé en una bóveda para entender las relaciones entre ellas y así poder identificar el tipo de IA a emplear según el propósito de Markus.
Todo este proceso lo realicé empleando el método Zettelkasten, del alemán “Caja de notas”. Es un sistema de gestión de conocimiento con la intención de recopilar muchas ideas breves y conectarlas entre ellas, creando así una red de conocimiento. Originalmente, se utilizaba un método físico con cajas y papel, pero actualmente Obsidian es una de las mejores herramientas para usar este método. Es un sistema muy interesante que se suele usar actualmente como “segundo cerebro”.
Tipos de inteligencia artificial
Gracias a este trabajo de investigación, pude definir los diferentes tipos de Inteligencia Artificial en diferentes categorías:
Según su funcionalidad:
IA del tipo Reactiva
IA con memoria limitada
Teoría de la mente
Según su capacidad:
IA Específica
IA General
Superinteligencia Artificial
Según su aplicación:
IA basada en Machine Learning
IA basada en NPL
IA basada en visión por computadora
Robótica
Markus Project: el nacimiento de un chatbot
El siguiente paso es definir cómo será Markus. Markus debería tener la capacidad de:
Interactuar con el/la usuari@ proponiendo respuestas efectivas a preguntas formuladas.
Poder aprender sobre los inputs recibidos por parte del/la usuari@.
Actuar sobre la App Params, ejecutando acciones de activación y desactivación de parámetros.
Teniendo en cuenta estos puntos y la investigación previa sobre la IA, podemos definir que Markus es una IA Específica que emplea tecnologías de Machine Learning y Procesamiento del Lenguaje Natural (NPL). Es decir, un chatbot.
¿Qué es un chatbot?
Los Chatbots son un tipo de IA específica que emplea técnicas de procesamiento de lenguaje natural (NPL) y aprendizaje automático o Machine Learning, combinado con un sistema de reglas predefinidas, con el objetivo de poder interactuar con los usuarios de manera efectiva.
Vayamos paso por paso:
IA específica: IA diseñada para desempeñar una tarea específica que no sobrepase su dominio o conjunto de funciones.
Procesamiento de lenguaje natural (NPL): IA diseñadas para entender, interpretar y generar lenguaje humano.
Machine Learning: IA basada en sistemas que aprenden y mejoran automáticamente a partir de la experiencia sin ser explícitamente programadas. Se suelen dividir en:
IA de Aprendizaje Supervisado
IA de Aprendizaje No Supervisado
IA de Aprendizaje por refuerzo
¿Cómo funciona un chatbot?
Un chatbot sigue un flujo determinado. Desde que el usuario le solicita algo, hasta que el chatbot le dé una respuesta, debe pasar por diferentes fases:
Fase 1: Prompt o entrada de usuario
El usuario interactúa enviando un mensaje al Chatbot a través de una interfaz.
Fase 2: Contexto y memoria
El almacenamiento del contexto de la conversación permite almacenar información proporcionada por el usuario y emplearla en respuestas futuras.
Fase 3: Procesamiento del lenguaje natural (NPL)
Tokenización: El usuario envía un mensaje al chatbot a través de una interfaz.
Análisis Sintáctico: El chatbot analiza el mensaje para entender su estructura.
Reconocimiento de Entidades: El chatbot identifica las entidades mencionadas en el mensaje.
Análisis Semántico: El chatbot analiza el significado del mensaje.
Fase 4: Detección de intenciones y Extracción de entidades
Modelo de Detección de Intenciones: El chatbot determina la intención detrás del mensaje.
Modelo de Extracción de Entidades: El chatbot extrae las entidades mencionadas en el mensaje.
Fase 5: Generación de respuesta
Motor de Reglas de la IA: El chatbot utiliza un sistema de reglas predefinidas para generar una respuesta.
Modelos Generativos: El chatbot utiliza modelos generativos para generar respuestas futuras.
Fase 6: Salida del chatbot
Se produce la respuesta generada, la cual se envía a través de la misma interfaz.
Cómo pasar de un concepto a un MPV
Ahora que ya hemos definido qué hace que un chatbot sea un chatbot, pasamos de una idea abstracta a concretar una serie de requisitos que queremos que tenga Markus y que permita cumplir con su propósito principal: ayudar a los usuarios.
Para el MVP se especifican una serie de requerimientos tales como:
Que Markus pueda responder efectivamente a preguntas dentro de su dominio o conocimiento adquirido por parte de textos, PDF o tablas.
Que pueda alterar el valor de los parámetros definidos en la aplicación Params en tiempo real.
Que pueda aprender a base de entrenamiento para mejorar la calidad de las respuestas.
Que pueda escalar de manera que pueda ser llevada a otros entornos como el Cloud.
Y ahora, ¿cómo ponemos en marcha el plan?
La implementación de Markus se fundamenta en cinco fases definidas a continuación:
Definición del MVP: Definimos los requerimientos y el funcional interno a validar.
Desarrollo del Piloto: Desarrollamos el piloto y lo probamos.
Implantación en Params: Implantamos Markus en Params y liberamos el producto de forma interna.
Entrenamiento y Corrección de Errores: Entrenamos a Markus, detectamos errores y los corregimos para que dé respuestas precisas y correctas.
Escalado a otros entornos: Escalamos e implementamos Markus en otros productos de la compañía, como podría ser Foxize Cloud.
¿Por qué tanto esmero en un proyecto interno?
Quizás te estarás preguntando, al igual que algunos compis: ¿Por qué motivos estamos desarrollando este proyecto? ¿Es, quizás, una pérdida de tiempo? Ya que estáis dedicando tanto tiempo a este proyecto, ¿no sería mejor desarrollar un producto dirigido a cliente y comercializarlo?
Yo no lo veo así. Aunque parezca que lo más lógico es empezar a desarrollar un chatbot para clientes con el que poder configurar fácilmente el Cloud, cosa que conlleva una responsabilidad muy grande, creo que primero es necesario hacer un testeo interno para definir correctamente las bases de la IA, los datos y cómo optimizarlo, para que no de información errónea. El proyecto Markus nos ha de servir como un espacio seguro en el que podemos equivocarnos, aprender y mejorar el producto para que, una vez listo, podamos trasladarlo a un chatbot para clientes.
La fase de investigación y exploración son muy importantes en el diseño. De hecho, existe un proceso llamado diamante doble que define muy bien los pasos que se siguen al desarrollar un producto.
Tiene formato de diamante porque combina fases de expansión como la de descubrimiento, donde se intenta encontrar el máximo de información, y las fases de convergencia, donde se intenta combinar todo lo aprendido y concretar.
No nos podemos olvidar tampoco que en todo proceso, es muy importante evaluar e iterar. Por esa razón, contar con un MVP que podamos testear con el equipo nos viene de perlas.
Conclusión
Todavía estamos en una fase muy inicial en este proyecto, pero creo que es una oportunidad para aprender y mejorar nuestro servicio para los usuarios. Por eso, nos gusta explorar nuevas ideas y formas de aplicarlas a nuestros productos.
Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.
Cookies estrictamente necesarias
Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.
Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.
Cookies de terceros
Esta web utiliza Google Analytics y VWO para recopilar información anónima, tal como el número de visitantes del sitio, o las páginas más populares.
Dejar esta cookie activa nos permite mejorar nuestra web.
¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!