Crear un chatbot sencillo
Disponible desde la versión 6.2.0-Xenon
Introducción
En este tutorial se va a crear un chatbot sencillo al que preguntar sobre cualquier tema que el usuario quiera.
Para crear el chatbot, se van a utilizar los siguientes nodos:
Conversation Chain: para generar el asistente de chat en el que introducir información y recibir las respuestas.
ChatOpenAI: como motor de LLM a utilizar, específico para ChatGPT.
Buffer Memory: componente para recordar la conversación actual.
Requisitos previos
En este tutorial se va a utilizar los servicios de OpenAI, por lo que se requiere de una cuenta de ChatGPT Plus para poder seguir los pasos.
Además, se requiere de tener una instancia de LLM Flow ya creada. En la siguiente guía se explican los primeros pasos con LLM Flow:
Creación del chatbot
Para crear el chatbot, se irán añadiendo los siguientes nodos con sus respectivas configuraciones.
Conversation Chain
Este nodo será el encargado de llevar a cabo la conversación, pudiendo definir el trasfondo de la conversación y moderando sus contenidos. Se encuentra en LangChain > Chains > Conversation Chain.
Una vez arrastrado al lienzo, por defecto tiene el siguiente aspecto:
Este nodo sólo tiene una propiedad configurable:
Additional Parameters:
System Message: este texto define el trasfondo del chatbot. Aquí se puede indicar cómo actuará, a grandes rasgos, la IA a la hora de responder e interactuar con el usuario. Por defecto viene configurado de la siguiente forma:
En este apartado se puede ser tan creativo como se quiera.
Este nodo cuenta con cuatro conexiones de entrada:
Chat Model: que hace referencia al nodo de chat que se quiere utilizar.
Memory: el nodo de almacenamiento para guardar y recuperar las conversaciones.
Chat Prompt Template: se refiere a un nodo que permite disponer de un esquema para representar y dar contexto al mensaje del chat. En caso de que se utilice, se obviará la opción de «System Message».
Input Moderation: el nodo que permite detectar texto que pueda generar resultados ofensivos e impedir que se envíe al modelo lingüístico.
También cuenta con otro de salida:
Conversation Chain: otro nodo similar a este, por si se quiere añadir otro tipo de cadena de conversación diferente.
La documentación de este módulo se puede consultar en el siguiente enlace:
Para este tutorial, no se cambiará ninguna propiedad por defecto. Una vez que se generen todos los nodos necesarios se realizarán las conexiones pertinentes.
ChatOpenAI
Este nodo sirve para configurar ChatGPT.
Una vez arrastrado al lienzo, por defecto tiene el siguiente aspecto:
Este nodo contiene las siguientes propiedades:
Connect Credential: hace referencia al token de usuario de OpenAI, la propietaria de ChatGPT. Si se tiene una introducida, se podrá seleccionar desde el desplegable. En caso de no disponer aun de ninguna, se podrá crear una inmediatamente.
Model Name: el modelo de ChatGPT que se quiere utilizar.
Temperature: hiperparámetro que afecta al cálculo de las probabilidades de los tokens cuando se genera la salida a través del LLM. El valor de la temperatura oscila entre 0 y 2, donde los valores más bajos indican un mayor determinismo y los más altos una mayor aleatoriedad.
Allow Image Uploads: permite que el usuario incluya una imagen para preguntar sobre ella. Si se activa esta opción, se utilizará automáticamente el modelo de «gpt-4-vision-preview» cuando la imagen se suba al chat.
Additional Parameters: es posible configurar otros parámetros más avanzados del nodo, como son:
Max Tokens: el número máximo de tokens que se pueden generar en la finalización del chat. Este valor puede utilizarse para controlar los costes del texto generado a través de la API.
Top Probability: una alternativa al muestreo con temperatura, en la que el modelo considera los resultados de los tokens con masa de probabilidad top_p. Así, 0,1 significa que sólo se consideran los tokens que comprenden el 10% superior de masa de probabilidad. No se recomienda utilizar a la vez que la temperatura.
Frequency Penalty: valor entre -2,0 y 2,0. Los valores positivos penalizan los tokens nuevos en función de su frecuencia existente en el texto hasta el momento, lo que disminuye la probabilidad de que el modelo repita textualmente la misma línea.
Presence Penalty: número comprendido entre -2,0 y 2,0. Los valores positivos penalizan los tokens nuevos en función de si aparecen en el texto hasta el momento, lo que aumenta la probabilidad de que el modelo hable de temas nuevos.
Timeout: tiempo máximo de espera para recibir la respuesta.
BasePath: flowise admite el uso de URL base y encabezados personalizados para Chat OpenAI. Los usuarios pueden usar fácilmente integraciones como OpenRouter, TogetherAI y otros que sean compatibles con la API de OpenAI.
Proxy URL: en caso de encontrarse tras un proxy, se podrá indicar aquí la dirección del mismo.
Stop Sequence: lista de palabras reservadas para la generación. Se puede usar una coma para separar varias palabras reservadas.
BaseOptions: JSON en el que añadir otras opciones.
Image Resolution: la resolución de la imagen que será utilizada por el modelo para analizarla. Se puede configurar en «low», «high» o «auto».
Además, este nodo cuenta con dos conexiones a considerar. Uno de entrada:
Cache: que se puede conectar a otro nodo que almacene la información del chat.
Y otro de salida:
ChatOpenAI: que se puede conectar a una cadena conversacional para generar el chatbot.
Para este tutorial, únicamente se configurarán las siguientes opciones:
Connect Credential: con el token de OpenAI.
Model Name: se utilizará «gpt-3.5-turbo».
Temperature: 0,9
Buffer Memory
Este nodo tiene la función de almacenar las conversaciones del chatbot y recuperarlas posteriormente. Se encuentra en LangChain > Memory > Buffer Memory.
Una vez arrastrado al lienzo, por defecto tiene el siguiente aspecto:
Este nodo sólo tiene una propiedad configurable:
Additional Parameters:
Session ID: un identificador para recuperar y almacenar mensajes. Si no se especifica, se usará un ID aleatorio.
Memory Key: una clave usada para formatear mensajes en la plantilla de prompt. Por defecto se usa «chat_history».
Este nodo no tiene conexiones de entrada, pero si uno de salida:
Buffer Memory: que conecta con el nodo que lo utilizará.
Para este tutorial, no se cambiará ninguna propiedad por defecto.
Conexión de nodos
Una vez que se han creado los nodos necesarios, se llevará a cabo la interconexión entre ellos.
El nodo de ChatOpenAI se conectará al nodo de Conversation Chain mediante la conexión de «Chat Model».
El nodo de Buffer Memory se conectará al nodo de Conversation Chain mediante la conexión de «Memory».
Tras las conexiones, el flujo debería de quedar tal que así:
Probando el chatbot
Tras llevar a cabo la configuración y conexión de los nodos, se procederá a guardar el flujo creado. Seguidamente, se pulsará en el botón de chat para lanzar el chatbot.
Se abrirá entonces la ventana de chat con el asistente, en donde se podrá empezar a conversar.