Construyendo Nuestro Propio Asistente de IA con n8n: Un Viaje de Aprendizaje y Éxito
En n8n, nos gusta beber nuestro propio champán. Por eso, cuando decidimos reconstruir nuestro asistente interno de inteligencia artificial, optamos por utilizar nuestras propias herramientas. Como ingenieros que pensamos en código, fue un desafío tentador alejarnos de la línea de comandos y experimentar con la creación de flujos de trabajo. Después de varios meses de trabajo, logramos hacerlo con éxito y, además, aprendimos lecciones valiosas en el camino. Si estás planeando construir herramientas de IA, esperamos que nuestras experiencias te resulten tan útiles como lo han sido para nosotros.
La Dificultad de un Asistente de IA Duro
Hemos estado utilizando un asistente de IA duro durante un tiempo, pero era complicado de iterar y demasiado complejo para que nuestros colegas de gestión de productos pudieran interactuar con él. Si querías ajustar la lógica de la IA, mejorar un aviso o simplemente veías una posible mejora en la eficiencia, necesitabas sumergirte en el código. En general, era una pieza sólida de ingeniería, pero inaccesible para quienes más podrían beneficiarse de ella.
Herramientas que Funcionan
Nos gustaron las herramientas que utilizamos para el asistente de IA original, así que decidimos mantener LangChain para la orquestación y hacer que todo funcionara a través de GPT-4. Sin embargo, queríamos ver si un caso de uso de IA tan complicado podría construirse puramente sobre n8n.
El Asistente de IA: Usos y Funcionalidades
El asistente de IA de n8n tiene tres casos de uso principales:
- Depuración de errores de usuario
- Responder preguntas en lenguaje natural en un formato de chat
- Ayudar a los usuarios a configurar credenciales
Base de Conocimiento Interna
En el backend, contamos con dos grandes fuentes de vectores que componen una base de conocimiento interna: una es nuestra documentación y la otra es el foro de n8n. Instruimos a nuestro asistente para que lea primero la documentación, evitando así las alucinaciones, y luego se dirija al foro para obtener más información.
Organizamos nuestros datos en fragmentos. Cada fragmento se guarda con contexto para que el asistente pueda entender qué parte de un documento está leyendo y el contexto más amplio que lo rodea. Además, automatizamos flujos de trabajo en n8n para raspar la documentación tres veces por semana y actualizar la base de datos. Al mismo tiempo, también raspamos el foro para preguntas que tienen respuestas correspondientes, y las acoplamos en la base de conocimiento. ¡Bebiendo nuestro propio champán! 🍾
Componentes Principales del Asistente
El servicio de IA y nuestra instancia interna donde viven los flujos de trabajo tienen entornos de desarrollo y producción, lo que nos permite trabajar en ellos sin cambiar las versiones de producción directamente. Aquí hay un resumen de los componentes principales del asistente:
- Frontend de n8n: Todos los mensajes enviados por los usuarios desde la barra lateral del chat del asistente se envían primero a nuestro servicio de IA, que es un servicio web separado alojado internamente.
- Servicio de IA: Maneja la autenticación para las solicitudes entrantes y llama al webhook de n8n también con autenticación, asegurando que el flujo de trabajo acepte solo solicitudes del servicio de IA.
- Flujos de Trabajo del Asistente: Alojados en nuestra instancia interna. Hay un flujo de trabajo principal (Gateway) que acepta llamadas de webhook y las dirige a un agente específico, según el modo del usuario.
Agentes Especializados
Bajo el capó, tenemos cuatro agentes distintos que manejan los casos de uso del asistente. Elegimos esta configuración porque cada caso de uso requiere un contexto y herramientas de entrada diferentes. Cuando un usuario inicia el asistente, dirigimos la solicitud utilizando el nodo Switch de n8n a uno de los cuatro agentes. La única desventaja de este enfoque es que, una vez que un agente ha comenzado un chat con un usuario, no puede cambiar a otro agente mientras está en sesión, por lo que el usuario necesita comenzar de nuevo.
Depuración de Errores de Usuario
Agentes de Ayuda para Errores
- Ayudante de errores genéricos: Se inicia cuando los usuarios hacen clic en el botón «Preguntar al Asistente» desde el panel de salida del nodo cuando hay un error en el nodo. Este agente está especializado en depurar errores de nodos, tiene contexto sobre el error y acceso a la documentación y respuestas del foro de n8n.
Ayudante de errores en el nodo de código: Especializado en depurar errores en el nodo de código. Este agente se inicia cuando los usuarios hacen clic en el botón «Preguntar al Asistente» desde el panel de salida del nodo cuando hay un error en el nodo de código. Tiene contexto sobre el código del usuario y acceso a la documentación de n8n. Además de responder preguntas, este agente también puede sugerir cambios en el código y aplicarlos al nodo actualmente abierto si el usuario lo elige.
Respuestas a Preguntas en Lenguaje Natural
Agente de Soporte
Este agente responde a las solicitudes de los usuarios cuando abren un chat y comienzan a hacer preguntas. Tiene contexto sobre lo que los usuarios están viendo actualmente (flujos de trabajo y nodos) y tiene acceso a la documentación y respuestas del foro de n8n.
Ayuda para Configurar Credenciales
Ayudante de Credenciales
Se inicia cuando los usuarios hacen clic en el botón «Preguntar al Asistente» desde el modal de credenciales. Este agente tiene contexto sobre el nodo actual de los usuarios y las credenciales que desean configurar, además de acceso a la documentación de n8n.
Implementación: Aprendiendo a Trabajar con IA
Uno de los aspectos más complicados de trabajar con IA es que las respuestas que produce pueden ser completamente inesperadas. Pregunta algo de una manera y obtendrás una respuesta correcta. Cambia algo tan pequeño como un nombre o un número en el aviso, y puedes terminar con una respuesta completamente diferente.
Proporcionando Contexto
Para mitigar esto, comenzamos de a poco, probando un agente con un aviso de usuario como «¿por qué estoy viendo esto?». Rápidamente nos dimos cuenta de que necesitábamos proporcionar más contexto, ya que el asistente no necesariamente digería lo que estaba en la pantalla del usuario antes de buscar en la base de conocimiento. Así que creamos una herramienta de «información del flujo de trabajo», que permite al asistente recopilar información sobre un flujo de trabajo específico.
Ahora, cuando los usuarios preguntan algo sobre su flujo de trabajo, o por qué están viendo algo específico sin explicarlo, el asistente puede utilizar la herramienta de «información del flujo de trabajo» para extraer el error o el proceso del contexto que está en la pantalla del usuario. Hoy en día, nuestro chat de soporte está entregando respuestas precisas al observar los esquemas que el usuario está viendo y utilizando esto como parte de su búsqueda.
Evaluando la IA con IA
Guardamos ejecuciones, por lo que todos nuestros rastros están disponibles directamente en n8n, lo que significa que tenemos un conjunto fantástico de rastros internos para evaluar pruebas y cambios de aviso. Dado que contamos con un rico conjunto de datos de rastros, pensamos: «¿por qué no usar IA para acelerar el proceso de iteración?» y lanzamos un LLM para juzgar las respuestas que nuestro LLM estaba produciendo.
Sin embargo, cometimos un error al dar las mismas instrucciones tanto al Asistente como al Juez: hacer que las respuestas sean útiles, accionables y breves. Esto resultó en que el Juez calificara cada respuesta perfectamente. Así que iteramos un poco en el marco.
Internamente, tenemos un proyecto de validación personalizado configurado en LangSmith donde podemos ejecutar el Asistente contra diferentes solicitudes de muestra de nuestros rastros y obtener una puntuación sobre la calidad de las respuestas. Esto nos permite probar diferentes avisos y modelos rápidamente. Nos llevó mucha experimentación llegar a un marco que funcione de manera confiable, y, por supuesto, cada vez que cambiamos algo, tenemos que probarlo. Pero ahora tenemos casi 50 casos de uso y podemos probar con mayor precisión cómo nuestros cambios están mejorando o disminuyendo la calidad de las respuestas.
Hoy en día, el Juez LLM recibe un aviso de usuario y la salida del Asistente, y evalúa y puntúa la salida en función de un conjunto de instrucciones, como «¿debería incluirse X?, ¿es esto una alta prioridad?, ¿es esta salida accionable?» etc. Hasta ahora, la calidad parece ser un poco mejor que nuestro modelo anterior.
Lecciones Aprendidas en el Camino
La Paciencia es una Virtud
Una de las cosas que nos dimos cuenta desde el principio es que a los usuarios no les importa esperar unos segundos por respuestas útiles. Supusimos que un agente que tardara 10 segundos en transmitir una respuesta sería una barrera para la adopción, pero no lo es en absoluto. Así que, aunque hemos notado un ligero aumento en los tiempos de respuesta, no hemos visto una disminución en la resolución de errores.
Reflexiones Finales
A lo largo de este proceso, hemos aprendido que construir un asistente de IA efectivo no solo se trata de la tecnología, sino también de entender las necesidades de nuestros usuarios y proporcionarles las herramientas adecuadas para interactuar con la IA. Al final del día, nuestro objetivo es hacer que la experiencia del usuario sea lo más fluida y eficiente posible. Estamos emocionados por lo que el futuro nos depara y esperamos que nuestras experiencias sirvan como guía para otros que se embarquen en un viaje similar.
Preguntas Frecuentes (FAQs)
¿Qué es n8n y cómo se utiliza en la construcción de asistentes de IA?
n8n es una herramienta de automatización de flujos de trabajo que permite a los usuarios integrar diferentes aplicaciones y servicios. En la construcción de asistentes de IA, n8n se utiliza para orquestar flujos de trabajo y gestionar la interacción entre el usuario y el sistema de IA.¿Cuáles son los principales casos de uso del asistente de IA de n8n?
Los principales casos de uso incluyen la depuración de errores de usuario, responder preguntas en lenguaje natural y ayudar a los usuarios a configurar credenciales.¿Cómo se asegura la calidad de las respuestas del asistente de IA?
La calidad de las respuestas se asegura mediante un sistema de evaluación que utiliza un modelo de lenguaje para juzgar y puntuar las respuestas del asistente en función de criterios específicos.¿Qué herramientas se utilizan para la orquestación del asistente de IA?
Se utiliza LangChain para la orquestación del asistente de IA, junto con GPT-4 para el procesamiento del lenguaje natural.¿Qué lecciones se aprendieron durante el proceso de construcción del asistente de IA?
Se aprendió que los usuarios son pacientes y no les importa esperar por respuestas útiles, y que es crucial proporcionar contexto adecuado para mejorar la precisión de las respuestas del asistente.










