Programa
Dify es una plataforma fácil de usar que te ayuda a construir aplicaciones de IA con poco o ningún código requerido. Funciona arrastrando y soltando bloques con diferentes funciones. La información fluye a través de los bloques y se procesa y combina para generar respuestas.
En este artículo, te explicaré los fundamentos de Dify guiándote a través de los pasos para crear una agencia de viajes con IA.
Mantenemos a nuestros lectores al día de lo último en IA enviándoles The Median, nuestro boletín gratuito de los viernes que desglosa las noticias clave de la semana. Suscríbete y mantente alerta en sólo unos minutos a la semana:
¿Qué es Dify?
Dify es una plataforma diseñada para simplificar el desarrollo de aplicaciones de IA sin necesidad de grandes conocimientos de codificación. Proporciona un entorno fácil de usar y de bajo código en el que los usuarios pueden crear aplicaciones arrastrando y soltando diferentes componentes.
Imagina Dify como una caja de herramientas digital llena de bloques prefabricados que se pueden unir para crear software funcional. Este enfoque hace que la tecnología sea más accesible, permitiendo que personas con escasos conocimientos de programación den vida a sus ideas.
Cada tipo de bloque tiene entradas y las transforma en diferentes salidas, según el tipo de bloque. La información pasa y se transforma de bloque a bloque, produciendo el resultado final.
Cómo empezar con Dify
Tenemos dos formas de utilizar Dify:
- Configuración local.
- Utilizando la versión en la nube.
En este tutorial, utilizaremos la versión en la nube. La versión en la nube de Dify ofrece un plan gratuito, por lo que es posible seguir este tutorial sin necesidad de una suscripción de pago.
Si te interesa la configuración local, la forma más sencilla es
- Descarga o clona Dify desde el repositorio oficial.
- Ejecuta Dify utilizando Docker como se describe en la sección Inicio rápido del README del repositorio.
Crear un Chatflow con Dify
Dify ofrece varios tipos de aplicaciones. Vamos a centrarnos en construir una aplicación Chatflow, que es un flujo de IA en el que los usuarios utilizan una interfaz de chat para interactuar con el agente.
Para crear una nueva aplicación Chatflow, primero haz clic en "Crear desde cero" y selecciona la opción "Chatflow".
Para crear el flujo, establecemos un nombre y pulsamos el botón "Crear":
Esto creará el siguiente flujo por defecto:
Este flujo tiene tres bloques:
- El bloque de inicio se encarga de poner en marcha el flujo. En el caso de un Chatflow, el flujo se inicia con el envío de un mensaje por parte del usuario.
- El nodo LLM toma como entrada el mensaje del usuario y lo envía a un LLM,
gpt-4
en este caso. - El nodo final se utiliza para mostrar un mensaje en el chat. En este ejemplo, está conectado al nodo LLM, por lo que la salida del nodo LLM se envía al chat.
Estos tres nodos juntos crean efectivamente un chat AI similar a ChatGPT. Antes de ejecutar esta aplicación, tenemos que instalar y configurar el plugin OpenAI.
Instalar y configurar el plugin OpenAI
Para instalar el plugin OpenAI, haz lo siguiente:
- Haz clic en el botón "Plugins" de la esquina superior derecha.
- Haz clic en "Instalar desde Marketplace".
- Escribe "openai" en el cuadro de búsqueda y haz clic en el plugin OpenAI.
- Selecciona el plugin OpenAI y haz clic en "Instalar".
A continuación, tenemos que configurar la clave de la API de OpenAI. Si aún no tienes uno, créalo aquí. Ten en cuenta que utilizar la API de OpenAI no es gratuito, por lo que tendrás que asociar un método de pago a la clave de la API.
Una vez que tenemos una clave, podemos configurarla mediante:
- Selecciona el nodo LLM.
- Pulsa el icono de configuración situado junto al nombre del modelo.
- Haz clic en el desplegable de modelos de la parte superior.
- Haz clic en "Configuración del proveedor del modelo" en la parte inferior de la lista.
- Haz clic en "Configurar" en la sección de la clave API.
- Pega la clave API y haz clic en "Guardar".
Ejecutar la app
Ahora podemos ejecutar la aplicación pulsando el botón de vista previa:
Ahora mismo, no es muy interesante, ya que sólo es un chatbot de IA. Recuerda que no hará nada hasta que el usuario envíe un mensaje.
Crear variables
Dify permite almacenar el estado de la aplicación asignando valores a variables accesibles a todos los bloques.
Para crear una variable, haz clic en el botón Variable:
Vamos a crear una variable para almacenar el nombre del usuario:
Esta configuración creó una variable llamada name
que almacena una cadena (texto). Dejamos vacío el valor por defecto, por lo que inicialmente la variable será una cadena vacía.
Hay varias formas de rellenarlo, pero la más común es utilizar un bloque de IA para que lo deduzca automáticamente de la conversación. Aprenderemos a hacerlo más adelante. En primer lugar, aprendemos a comprobar el valor de una variable para controlar el flujo de la aplicación.
Bloques IF/ELSE
Para comprobar el valor de una variable, podemos utilizar un bloque IF/ELSE. Este bloque se utiliza para ejecutar distintas acciones en función del valor de una variable.
Para añadir un nuevo bloque, haz clic en el botón "+" de la parte inferior:
A continuación, selecciona el bloque que quieras añadir. En este caso, seleccionamos "SI/ELSE":
A continuación, hacemos clic en el bloque para configurarlo seleccionando la variable name
que hemos creado antes.
Para probarlo, añadimos dos bloques Respuesta. Estos bloques se utilizan para mostrar un mensaje en el chat. Conectamos uno de ellos a la salida IF
(que se ejecuta cuando la condición es verdadera) y el otro a la salida ELSE
(que se ejecuta cuando la condición es falsa).
Para la salida IF
, establezco la cadena "Lo siento, no sé tu nombre", mientras que para la ELSE
, establezco "¡Hola, {nombre}!". Podemos utilizar las llaves para inyectar una variable en una cadena. Esto también te será útil más adelante cuando construyas avisos.
Podemos probar este Chatflow haciendo clic en el botón "Vista previa". Ten en cuenta que un Chatflow se activa con un mensaje de usuario, así que primero tenemos que enviar un mensaje, como "Hola". Aquí tienes los resultados en función de si el nombre está puesto o no (yo lo puse manualmente en la variable de interfaz para el segundo ejemplo):
Bloques asignador de variables y extractor de parámetros
Podemos utilizar la IA para identificar y extraer los valores de las variables mediante un bloque Extractor de Parámetros. Este bloque utiliza un LLM para extraer información de la conversación.
Primero añadimos un bloque Extractor de Parámetros conectado a la rama IF
. Ésta es la configuración del bloque:
- El
INPUT VARIABLE
se pone ensys.query
, que corresponde al mensaje del usuario. Esto significa que el bloque Extractor de parámetros intentará extraer el valor del mensaje de usuario. - En
EXTRACTION PARAMETERS
, definimos la información que intentamos extraer. Por desgracia, aquí no podemos especificar directamente una variable, así que tenemos que redefinir esa información haciendo clic en el botón "+".
- El campo
INSTRUCTION
es la indicación para guiar al LLM sobre lo que debe hacer. - A continuación, añadimos un bloque Asignador de variables para asignar el valor extraído por el Extractor de parámetros (si lo hay) a la variable
name
.
Asegúrate de asignar el name
extraído a la variable name
.
Después de este paso, la variable name
podría seguir sin estar definida, porque podría darse el caso de que el usuario no hubiera proporcionado su nombre. Así que añadimos otro bloque IF/ELSE para comprobarlo. Si el nombre está puesto, saludamos al usuario. Si no, les preguntamos su nombre.
He aquí un ejemplo de interacción:
Este flujo ilustra los fundamentos de los flujos de trabajo de Dify. No importa cuál sea el mensaje del usuario, si el nombre no está definido, intenta extraer el nombre del mensaje. Si falla, lo pide. De lo contrario, sólo saluda al usuario por su nombre.
En este punto, no hay bloqueo LLM, por lo que el agente no hará nada más.
Bloque de código
Los bloques de código pueden utilizarse para ejecutar código Python personalizado. Modifiquemos el flujo anterior para extraer la ubicación del usuario en lugar del nombre de usuario. A continuación, utilizaremos un bloque Código para realizar una petición a una API meteorológica y enviar la previsión meteorológica al usuario.
- Crea una nueva variable llamada
location
. - Modifica los bloques IF/ELSE para comprobar
location
en lugar dename
. - Modifica el bloque Extractor de Parámetros para extraer la ubicación en lugar del nombre.
- Modifica el bloque Asignador de variables para asignar el valor extraído a la variable
location
. - Modifica los bloques Respuesta para pedir la localización y mostrar la localización, respectivamente.
Después de estos pasos, el flujo debería tener este aspecto:
Aquí tienes un ejemplo de interacción:
El siguiente paso es añadir un bloque Código después de tener la ubicación. Este bloque realiza una petición a la API de OpenWeather para solicitar la previsión meteorológica de ese lugar.
El uso de esta API es gratuito, siempre que no hagamos demasiadas peticiones.
Sustituye el segundo bloque Respuesta por un bloque Código.
Configúralo para que reciba un único parámetro con el valor location
.
En cuanto al código Python, así es como podemos utilizar el paquete requests
para obtener el tiempo de la API OpenWeather:
import requests
API_KEY = "PASTE_YOUR_API_KEY_HERE"
def main(location: str) -> str:
base_url = "http://api.openweathermap.org/data/2.5/weather"
params = {
"q": location,
"appid": API_KEY,
"units": "metric",
}
response = requests.get(base_url, params=params)
data = response.json()
if response.status_code == 200:
weather_desc = data["weather"][0]["description"]
temp = data["main"]["temp"]
return {
"result": f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"
}
else:
return {
"result": "Could not retrieve weather data",
}
Por último, conectamos la salida del nodo Código a un nodo Respuesta para mostrársela al usuario.
Ahora tenemos un Chatflow que puede decirnos la previsión meteorológica:
Proyecto: Crear un agente de IA planificador de viajes
Ahora tenemos todas las herramientas que necesitamos para construir una agencia de viajes con IA. Las posibilidades son infinitas, pero para no complicar demasiado este tutorial, lo haremos sencillo.
El agente se centrará en planificar un solo día del viaje. Empezará recopilando la ubicación del usuario y los tipos de actividades que le gusta hacer. Para ello, utilizamos dos variables:
location
: Almacena la ubicación a la que viaja el usuario.activities
: Un arreglo de cadenas que almacenan las actividades que el usuario quiere hacer.
He aquí cómo podemos crear un flujo para extraer ambas variables:
En este ejemplo, empezamos con un bloque de extracción de variables para extraer tanto la location
como la lista de activities
.
A continuación, utilizamos bloques IF/ELSE para comprobar si se ha extraído cada uno de estos parámetros y actualizar las variables en caso afirmativo. Al contrario que en los ejemplos anteriores, esto permite al usuario actualizar los valores.
Al final de la extracción de valores y asignación de variables, añadimos otro bloque IF/ELSE para comprobar si faltan valores. Si falta algo, pedimos explícitamente al usuario que lo proporcione.
Si se definen tanto location
como activities
, utilizamos el bloque Código que hemos creado antes para obtener el tiempo en la ubicación dada. Por último, proporcionamos el tiempo, la ubicación y las actividades a un bloque LLM para planificar el día del usuario.
El bloque LLM está configurado con un indicador del sistema que indica al modelo lo que debe hacer. El lugar, las actividades y el tiempo se inyectan en él. Aquí está la parte final del flujo:
Aquí tienes un ejemplo de interacción con el agente:
Vemos en la respuesta que, gracias al nodo Código, el agente puede proporcionar el tiempo al usuario y tenerlo en cuenta al planificar las actividades.
Debido a la forma en que se configuró el flujo, si el usuario proporciona la información directamente en el primer mensaje, el agente le proporcionará directamente un plan para el día.
Definir un saludo personalizado
Te habrás dado cuenta de que el agente ha empezado saludando al usuario con un mensaje:
Para ello, debemos activar la función Abrir conversación.
Herramientas Dify
En este tutorial, hemos aprendido los bloques de construcción fundamentales de Dify. Un aspecto que no cubrimos fue el de las herramientas.
En Dify, las herramientas son potentes extensiones que permiten a tus agentes de IA interactuar con el mundo exterior más allá de las limitaciones de un modelo lingüístico. Aunque un LLM puede razonar y generar respuestas basándose en sus datos de entrenamiento y en el contexto de la solicitud, no tiene acceso en tiempo real a datos en vivo ni a servicios externos.
Las herramientas solucionan esto permitiendo a tu agente hacer llamadas a la API, consultar bases de datos, realizar cálculos, recuperar documentos, etc., actuando esencialmente como puente entre tu IA y las fuentes de información externas.
Puedes configurar herramientas en Dify a través de la interfaz visual de la plataforma, especificando el tipo de herramienta (como peticiones HTTP, intérpretes de código o plugins de terceros), el esquema de entrada/salida y cualquier requisito de autenticación. Una vez configuradas, estas herramientas se pueden utilizar en tu flujo de agentes mediante bloques Herramienta, que te permiten pasar datos hacia y desde la herramienta y alimentar los resultados en nodos LLM u otros bloques lógicos.
Esto hace que tus agentes no sólo sean más inteligentes, sino también orientados a la acción, capaces de dar respuestas actualizadas y contextualmente relevantes interactuando con servicios del mundo real.
En nuestro ejemplo, hemos utilizado un bloque de código para realizar una petición a la API meteorológica. Una alternativa habría sido crear una herramienta y proporcionársela al LLM.
Conclusión
En este tutorial, hemos explorado algunos de los bloques fundamentales que necesitarás para empezar a trabajar con Dify. Sin embargo, Dify ofrece muchas más funciones y capacidades por descubrir.
Para consolidar tu comprensión, un gran ejercicio sería mejorar la agencia de viajes que hemos creado. Considera la posibilidad de añadir funciones como la capacidad de búsqueda en Internet para encontrar actividades locales en línea, lo que puede enriquecer la funcionalidad del agente y ofrecer sugerencias más dinámicas.
Si te interesan los constructores de agentes de IA como Dify, te recomiendo que eches un vistazo a nuestros otros tutoriales para seguir aprendiendo: