Logo

Guía paso a paso para utilizar el flujo de trabajo de Dify

avatar admin 02 Dec 2024

Guía paso a paso para construir una aplicación de envío de noticias con el flujo de trabajo de Dify

Introducción

En este blog, mostraremos cómo utilizar el flujo de trabajo de Dify para construir una aplicación de envío de noticias.

Nuestro objetivo es obtener los últimos artículos de Hacker News y enviar las noticias organizadas a un grupo de Feishu. A través de este proceso, experimentaremos la poderosa funcionalidad del flujo de trabajo y la conveniencia del procesamiento automatizado.

¿Qué es un flujo de trabajo?

Antes de comenzar, echemos un vistazo rápido a lo que es un flujo de trabajo.

Un flujo de trabajo (Workflow) es una serie de tareas, actividades o pasos ordenados, diseñados para completar un proceso de negocio o un flujo de trabajo específico. El flujo de trabajo describe el orden de las tareas, las condiciones, los responsables y otra información relevante para asegurar que el trabajo se realice de acuerdo con los procesos y reglas establecidos. Los flujos de trabajo generalmente implican la coordinación e interacción entre múltiples participantes y sistemas.

El flujo de trabajo reduce la complejidad del sistema al descomponer tareas complejas en subtareas más pequeñas (nodos), disminuyendo la dependencia de la tecnología de palabras clave y la capacidad de razonamiento del modelo, mejorando el rendimiento de las aplicaciones LLM en tareas complejas, y aumentando la interpretabilidad, estabilidad y tolerancia a fallos del sistema.

Tipos de nodos utilizados

Durante la implementación, utilizaremos los siguientes tipos de nodos:

  1. Nodo de inicio: configura los parámetros iniciales para el inicio del programa.
  2. Nodo de solicitud HTTP: envía solicitudes HTTP para obtener datos.
  3. Nodo de iteración: recorre un array para ejecutar múltiples pasos.
  4. Nodo extractor de parámetros: procesa y extrae parámetros.
  5. Nodo de plantilla: permite realizar conversiones de datos y procesamiento de texto de manera flexible utilizando el lenguaje de plantillas Python Jinja2.
  6. Nodo LLM: llama a un modelo de lenguaje grande para procesar lenguaje natural.
  7. Nodo de envío de mensajes de Feishu: envía las noticias organizadas a Feishu.

Pasos de operación

Primer paso: Inicio

start.png

A través del nodo de inicio, podemos configurar los parámetros iniciales para el inicio del programa, como la clave API, la categoría de operación, etc. Así hemos dado el primer paso. A continuación, comenzamos a recopilar los datos deseados.

Segundo paso: Solicitud HTTP

Tomando como ejemplo Hacker News, primero encontramos la API para obtener la lista de datos https://hacker-news.firebaseio.com/v0/beststories.json?print=pretty.

Creamos un nodo de solicitud HTTP, configurando la solicitud HTTP que incluye la URL, los encabezados de solicitud, los parámetros de consulta, el contenido del cuerpo de la solicitud y la información de autenticación, etc.

http.png

El valor de retorno de la solicitud HTTP incluye el cuerpo de la respuesta, el código de estado, los encabezados de respuesta y archivos, etc. Estas variables se pueden utilizar directamente en los nodos posteriores, lo que es muy conveniente.

Una vez configurado el nodo, podemos intentar ejecutarlo.
http_result.png

La solicitud fue exitosa y obtuvimos los ids de la lista de artículos. Todo va bien, a continuación, debemos recorrer los ids para obtener los detalles de los artículos.

Tercer paso: Iteración

La función de la iteración es ejecutar múltiples pasos sobre un array hasta que se obtengan todos los resultados, siendo una herramienta para tareas repetitivas. Los escenarios de aplicación incluyen: generadores de artículos largos, solicitudes de recorrido, etc.

Simplemente introducimos los ids obtenidos de la lista de artículos en el iterador.
Iteration.png

Sin embargo, al conectar el nodo de iteración, descubrimos que no hay variables disponibles. Al revisar la documentación, encontramos:

La condición para usar la iteración es asegurarse de que el valor de entrada esté formateado como un objeto de lista

En el formato de retorno de la solicitud de lista anterior, el cuerpo es un String. Por lo tanto, necesitamos procesar el resultado devuelto e introducir un extractor de parámetros antes del nodo de iteración.
Paras.png

Tomamos el cuerpo devuelto de la lista como parámetro de entrada, configurando el extractor de parámetros como un array de números Ids. Declaramos brevemente la instrucción:

example: 
body: [1,2,3,4,5...500]
retorna Array[Number], y solo conserva 10

De esta manera, no solo podemos extraer y convertir los parámetros, sino que también podemos preprocesar los parámetros, como limitar la cantidad de resultados, etc. A través de este método, podemos asegurarnos de que al conectar al nodo de iteración, obtengamos un parámetro de entrada ids formateado y que cumpla con los requisitos.
Para2.png

En el nodo de iteración, podemos obtener cada elemento recorrido, es decir, el id de cada artículo. De esta manera, podemos realizar un procesamiento adicional en cada id, como enviar una nueva solicitud HTTP para obtener la información detallada del artículo. Así, podemos procesar cada id uno por uno, asegurando que cada artículo se obtenga y procese correctamente.

7.png

Luego, agregamos el nodo HTTP para solicitar los detalles, y al ejecutarlo, podemos obtener los resultados de los detalles.

Aprendiendo de la experiencia anterior, notamos que la salida del iterador es Array[String].

Lo que debemos hacer a continuación es usar el nodo LLM para organizar y resumir los resultados devueltos, veamos el nodo LLM.

Cuarto paso: Nodo LLM

La función del nodo LLM es llamar a un modelo de lenguaje grande para responder preguntas o procesar lenguaje natural.

Si es la primera vez que usas Dify, antes de seleccionar el modelo en el nodo LLM, debes completar la configuración del modelo en Configuración del sistema - Proveedor de modelos.

Creamos un nuevo nodo LLM conectado a la iteración y configuramos nuestro prompt. Al ingresar el contenido del usuario, nos damos cuenta de que no podemos obtener los detalles del artículo, ya que el nodo LLM no admite parámetros de entrada en formato de array, por lo que necesitamos convertir el array en texto para continuar.

8.png

Al revisar la documentación Cómo convertir un array en texto, descubrimos que necesitamos usar un nodo de código para la conversión o un nodo de plantilla para la conversión.

Aquí utilizamos el nodo de plantilla para la conversión:
9.png

10.png

De esta manera, nuestro nodo LLM puede funcionar correctamente, hacemos clic en ejecutar para depurar.

11.png

Ejecución exitosa.

Quinto paso: Enviar mensajes de Feishu

A continuación, enviaremos las noticias organizadas a Feishu, agregando un nodo - Herramienta - Enviar mensaje de Feishu.

Después de crear un bot en el grupo de Feishu, obtenemos la clave del WEBHOOK y la ingresamos:
12.png

Efecto logrado

Ejecutamos nuevamente y mostramos el resultado:
13.png

Hasta aquí, hemos completado una aplicación de Dify que obtiene información - procesa datos - envía a IM. A través de este proceso, mostramos cómo utilizar el flujo de trabajo de Dify para lograr el envío automatizado de noticias y experimentamos la poderosa funcionalidad y conveniencia del flujo de trabajo.

Resumen

Hoy aprendimos cómo utilizar el flujo de trabajo de Dify para construir una aplicación de envío de noticias. Desde la configuración de los parámetros iniciales, avanzamos paso a paso a través de solicitudes HTTP para obtener datos, utilizando nodos de iteración para procesar datos, luego organizando los datos a través del nodo LLM, y finalmente enviando las noticias organizadas a Feishu. Todo el proceso no solo mostró la poderosa funcionalidad del flujo de trabajo, sino que también nos permitió experimentar la conveniencia del procesamiento automatizado.

Por supuesto, las poderosas funciones del flujo de trabajo de Dify van mucho más allá de esto. También ofrece más nodos y funciones, esperando que los exploremos y apliquemos. En el futuro, continuaremos publicando artículos relacionados, guiando a todos a profundizar en el aprendizaje y la exploración de más posibilidades del flujo de trabajo de Dify.

Tags
Dify
workflow
feishu