SKILL de Diseño de Flujos de Trabajo en Dify
Domina los conocimientos esenciales y las mejores prácticas para el diseño de flujos de trabajo en Dify
Navegación Rápida
- Descripción General del Flujo de Trabajo
- Tipos de Nodos Principales
- Patrones de Diseño
- Plantillas de Flujo de Trabajo
- Sistema de Variables
- Mejores Prácticas
Descripción General del Flujo de Trabajo
Dify Workflow es un sistema de orquestación visual de aplicaciones de IA que, mediante la combinación de nodos y aristas, implementa lógica de negocio compleja.
Conceptos Principales
- Nodo (Node): Unidad básica de ejecución del flujo de trabajo, cada nodo realiza una función específica.
- Arista (Edge): Conecta nodos, define el flujo de datos y el orden de ejecución.
- Variable (Variable): Transmite datos entre nodos.
- DSL (Domain Specific Language): Lenguaje de definición de flujo de trabajo en formato YAML.
Tipos de Flujo de Trabajo
- Workflow: Flujo de trabajo estándar, adecuado para procesos complejos de múltiples pasos.
- Advanced Chat: Aplicación de conversación avanzada, compatible con orquestación de flujo de trabajo.
- Agent: Agente inteligente, toma de decisiones autónoma y llamada a herramientas.
Modelo de Ejecución
- Impulsado por cola: Programación de nodos basada en Ready Queue.
- Impulsado por eventos: La ejecución de nodos genera un flujo de eventos.
- Ejecución paralela: Soporta de 2 a 8 hilos de trabajo en paralelo.
- Respuesta en streaming: Soporta salida en tiempo real mediante streaming.
Tipos de Nodos Principales
1. Nodo Start
Función: Punto de entrada del flujo de trabajo, define las variables de entrada.
Ejemplo de configuración:
- data:
desc: ''
selected: false
title: Inicio
type: start
variables:
- label: Entrada del usuario
max_length: 1000
required: true
type: text-input
variable: user_input
id: start
type: custom
Documentación detallada: nodes/start.md
2. Nodo LLM
Función: Invoca un modelo de lenguaje grande para razonamiento y generación.
Ejemplo de configuración:
- data:
type: llm
model:
provider: openai
name: gpt-4
completion_params:
temperature: 0.7
max_tokens: 2000
prompt_template:
- id: system
role: system
text: "Eres un asistente profesional"
- id: user
role: user
text: "{{#sys.query#}}"
context:
enabled: true
variable_selector: ["knowledge", "result"]
id: llm
Parámetros clave:
model: Configuración del modelo (proveedor, nombre, parámetros).prompt_template: Plantilla de prompt (admite mensajes del sistema y del usuario).context: Configuración de contexto (habilita resultados de búsqueda en la base de conocimiento).memory: Configuración de memoria de conversación.vision: Configuración de capacidad visual (admite entrada de imágenes).
Documentación detallada: nodes/llm.md
3. Nodo Agent
Función: Agente inteligente que invoca herramientas de forma autónoma según las necesidades del usuario.
Ejemplo de configuración:
- data:
type: agent
agent_parameters:
instruction:
type: constant
value: "Según las necesidades del usuario, invoca la herramienta adecuada para completar la tarea"
model:
type: constant
value:
provider: openai
model: gpt-4
completion_params:
temperature: 0.7
query:
type: constant
value: "{{#sys.query#}}"
tools:
type: constant
value:
- enabled: true
provider_name: time
tool_name: current_time
type: builtin
- enabled: true
provider_name: duckduckgo
tool_name: ddgo_search
type: builtin
agent_strategy_name: function_calling
id: agent
Estrategias compatibles:
function_calling: Llamada a función (recomendada).react: Modo de razonamiento ReAct.
Documentación detallada: nodes/agent.md
4. Nodo Knowledge Retrieval
Función: Recupera información relevante de la base de conocimiento (RAG).
Ejemplo de configuración:
- data:
type: knowledge-retrieval
dataset_ids:
- "dataset-uuid-1"
- "dataset-uuid-2"
query_variable_selector: ["start", "sys.query"]
retrieval_mode: single
single_retrieval_config:
model:
provider: openai
name: text-embedding-3-small
top_k: 3
score_threshold: 0.7
reranking_model:
provider: cohere
model: rerank-english-v2.0
id: knowledge
Modos de recuperación:
single: Recuperación única.multiple: Recuperación múltiple.
Documentación detallada: nodes/knowledge-retrieval.md
5. Nodo Code
Función: Ejecuta código Python o JavaScript.
Ejemplo de configuración:
- data:
type: code
code_language: python3
code: |
def main(input_text: str) -> dict:
# Lógica de procesamiento
result = input_text.upper()
return {
"output": result,
"length": len(result)
}
variables:
- variable: input_text
value_selector: ["start", "user_input"]
outputs:
output:
type: string
length:
type: number
id: code
Lenguajes compatibles:
- Python 3
- JavaScript (Node.js)
Documentación detallada: nodes/code.md
6. Nodo HTTP Request
Función: Invoca una API HTTP externa.
Ejemplo de configuración:
- data:
type: http-request
method: POST
url: "https://api.example.com/endpoint"
headers:
Content-Type: application/json
Authorization: "Bearer {{#env.API_KEY#}}"
body:
type: json
data:
query: "{{#sys.query#}}"
options:
temperature: 0.7
timeout: 30
id: http
Métodos compatibles:
- GET, POST, PUT, DELETE, PATCH
Documentación detallada: nodes/http-request.md
7. Nodo Tool
Función: Invoca herramientas integradas o personalizadas.
Ejemplo de configuración:
- data:
type: tool
provider_id: google_translate
provider_type: builtin
provider_name: google_translate
tool_name: translate
tool_parameters:
content:
type: mixed
value: "{{#sys.query#}}"
dest:
type: mixed
value: "es"
id: tool
Tipos de herramientas:
builtin: Herramientas integradas.api: Herramientas de API.workflow: Herramientas de flujo de trabajo.
Documentación detallada: nodes/tool.md
8. Nodo If-Else
Función: Control de ramificación condicional.
Ejemplo de configuración:
- data:
type: if-else
conditions:
- variable_selector: ["llm", "text"]
comparison_operator: contains
value: "palabra clave"
logical_operator: and
id: condition
Operadores compatibles:
contains,not containsis,is notempty,not empty>,<,>=,<=,=,!=
Documentación detallada: nodes/if-else.md
9. Nodo Iteration
Función: Procesa iterativamente datos de tipo array.
Ejemplo de configuración:
- data:
type: iteration
iterator_selector: ["start", "items"]
output_selector: ["iteration_inner", "output"]
parallel_nums: 3
error_handle_mode: continue
id: iteration
Modos de manejo de errores:
continue: Continuar la ejecución.stop: Detener la iteración.
Documentación detallada: nodes/iteration.md
10. Nodo Answer
Función: Muestra el resultado del flujo de trabajo.
Ejemplo de configuración:
- data:
type: answer
answer: "{{#llm.text#}}"
id: answer
Documentación detallada: nodes/answer.md
Patrones de Diseño
1. Patrón de Pipeline Secuencial
Escenario de uso: Procesos lineales simples.
Estructura:
Start → LLM → Answer
Ejemplo: patterns/sequential.md
2. Patrón de Ramificación Condicional
Escenario de uso: Ejecutar diferente lógica de procesamiento según condiciones.
Estructura:
Start → LLM → If-Else → [Rama A / Rama B] → Answer
Ejemplo: patterns/conditional.md
3. Patrón de Procesamiento Iterativo
Escenario de uso: Procesamiento por lotes de datos en array.
Estructura:
Start → Code → Iteration → LLM → Answer
Ejemplo: patterns/iterative.md
4. Patrón de Recuperación de Conocimiento (RAG)
Escenario de uso: Preguntas y respuestas basadas en la base de conocimiento.
Estructura:
Start → Knowledge Retrieval → LLM (con contexto) → Answer
Ejemplo: patterns/rag.md
5. Patrón de Agregación Multi-Fuente
Escenario de uso: Integrar información de múltiples fuentes de datos.
Estructura:
Start → [Tool1, Tool2, HTTP] → Variable Aggregator → LLM → Answer
Ejemplo: patterns/aggregation.md
Plantillas de Flujo de Trabajo
Pregunta-Respuesta Simple
Archivo: templates/simple-qa.yml
Descripción: El flujo de trabajo de preguntas y respuestas más básico.
Nodos: Start → LLM → Answer
Asistente RAG
Archivo: templates/rag-assistant.yml
Descripción: Asistente inteligente basado en la base de conocimiento.
Nodos: Start → Knowledge Retrieval → LLM → Answer
Llamada a Herramientas con Agente
Archivo: templates/agent-tools.yml
Descripción: Agente inteligente que invoca herramientas de forma autónoma.
Nodos: Start → Agent → Answer
Procesamiento Multi-Paso
Archivo: templates/multi-step.yml
Descripción: Proceso de procesamiento complejo de múltiples pasos.
Nodos: Start → Code → HTTP → LLM → If-Else → Answer
Sistema de Variables
Variables del Sistema
{{#sys.query#}} # Consulta del usuario
{{#sys.files#}} # Archivos subidos
{{#sys.conversation_id#}} # ID de la conversación
{{#sys.user_id#}} # ID del usuario
Variables de Nodo
{{#ID_del_nodo.campo_de_salida#}} # Referencia a la salida de un nodo
{{#llm.text#}} # Salida de texto del LLM
{{#knowledge.result#}} # Resultado de la recuperación de conocimiento
{{#code.output#}} # Salida del nodo de código
Variables de Conversación
{{#conversation.nombre_variable#}} # Variable a nivel de conversación
Variables de Entorno
{{#env.API_KEY#}} # Variable de entorno
{{#env.DATABASE_URL#}} # Conexión a base de datos
Variables de Iteración
{{#item#}} # Elemento actual de la iteración
{{#index#}} # Índice actual
Mejores Prácticas
1. Diseño Modular
- Divide procesos complejos en múltiples nodos independientes.
- Usa variables para transmitir datos, evita codificar valores fijos.
- Utiliza adecuadamente nodos de ramificación condicional e iteración.
2. Normas de Nomenclatura de Variables
- Usa nombres de variables significativos.
- Sigue una convención de nomenclatura uniforme.
- Añade descripciones informativas cuando sea necesario.
3. Manejo de Errores
- Añade lógica de manejo de errores en nodos críticos.
- Usa ramificaciones condicionales para manejar excepciones.
- Proporciona mensajes de error amigables.
4. Optimización de Rendimiento
- Evita invocaciones innecesarias de nodos.
- Utiliza mecanismos de caché de manera adecuada.
- Controla el número de iteraciones en bucles.
- Usa ramas paralelas para mejorar el rendimiento.
5. Mantenibilidad
- Añade descripciones y comentarios a los nodos.
- Usa nombres de nodos claros.
- Mantén la estructura del flujo de trabajo simple.
- Revisa y optimiza periódicamente.
Contenido detallado: best-practices.md
Próximos Pasos
- Aprende en profundidad Tipos de Nodos
- Explora Patrones de Diseño
- Comienza rápidamente con Plantillas de Flujo de Trabajo
- Lee las Mejores Prácticas para mejorar tus habilidades
SKILLs Relacionadas
- 02-plugin SKILL - Desarrolla herramientas y complementos personalizados
- 03-performance SKILL - Optimiza el rendimiento del flujo de trabajo
- 06-reference SKILL - Referencia de sintaxis DSL
Versión: v1.0.0 Última actualización: 2026-03-04 Volver: SKILL General