Communitygithub.com

Dify 工作流设计

Guía completa para el diseño de flujos de trabajo en Dify: tipos de nodos, patrones de diseño, plantillas y mejores prácticas.

¿Qué es Dify 工作流设计?

Esta SKILL proporciona una guía completa para diseñar flujos de trabajo en Dify, un sistema de orquestación visual de aplicaciones de IA. Cubre todos los tipos de nodos principales (Start, LLM, Agent, Knowledge Retrieval, Code, HTTP Request, Tool, If-Else, Iteration, Answer) con ejemplos de configuración YAML detallados, patrones de diseño como pipeline secuencial, ramificación condicional, procesamiento iterativo, recuperación de conocimiento (RAG) y agregación de múltiples fuentes. También incluye plantillas listas para usar (pregunta-respuesta simple, asistente RAG, agente con herramientas, proceso multi-paso), un sistema completo de variables (sistema, nodo, conversación, entorno, iteración) y mejores prácticas para diseño modular, nomenclatura, manejo de errores, optimización de rendimiento y mantenibilidad. Es útil para desarrolladores que trabajan con Dify en plataformas como Claude Code, Cursor o Codex, y está diseñada para ser referencia directa desde el contexto del asistente, siguiendo la estructura de SKILL.md que aprovecha al máximo el espacio de contexto.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SystemTce/dify-skills/tree/main/01-workflow

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

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

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

  1. Workflow: Flujo de trabajo estándar, adecuado para procesos complejos de múltiples pasos.
  2. Advanced Chat: Aplicación de conversación avanzada, compatible con orquestación de flujo de trabajo.
  3. 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 contains
  • is, is not
  • empty, 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


SKILLs Relacionadas


Versión: v1.0.0 Última actualización: 2026-03-04 Volver: SKILL General

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Skills relacionados