AI Workflow (flujo de trabajo de IA)

AI Workflow (flujo de trabajo de IA) es un sistema que combina de forma ordenada múltiples llamadas a modelos de IA, uso de herramientas y pasos de procesamiento de datos en una línea de producción automatizada.

Una sola llamada a un LLM puede responder preguntas, pero las tareas reales suelen requerir: buscar en la web → extraer información → analizar → escribir un informe → enviar un correo. AI Workflow conecta estos pasos para que la IA complete automáticamente la tarea completa, no solo responda una frase.

Una analogía intuitiva

Imagina una línea de ensamblaje:

PatrónAnalogíaDescripción
Llamada única a LLMComo un artesanoLe das un trozo de hierro y te devuelve una espada
AI WorkflowComo una línea de producción completaEntra la materia prima y pasa automáticamente por fundición → forja → temple → pulido → embalaje, y sale el producto terminado

Cada paso puede ser un modelo de IA, una función de código, una API externa o un nodo de revisión humana.

De responder preguntas a realizar tareas: la evolución

Tres niveles de capacidad de IA Nivel 1: Pregunta y respuesta única Q & A Entrada del usuario → LLM → Salida Ejemplo: “Escríbeme un poema” Limitación: solo un paso No puede completar tareas complejas → Nivel 2: Llamadas encadenadas (Chain) Chain Paso A → Paso B → Paso C Ejemplo: Traducción → Resumen → Pulido Limitación: flujo fijo No puede tomar decisiones dinámicas → Nivel 3: AI Workflow Incluye Agent (agente) Agent Percepción → Planificación → Llamada a herramientas → Reflexión → Iteración en bucle Ejemplo: investigar a la competencia y generar un informe Decisiones dinámicas; puede completar tareas abiertas AI Workflow es el paradigma principal para la implementación de aplicaciones de IA actuales y la base de realización de los AI Agents.

¿Por qué se necesita AI Workflow?

Limitaciones de una sola llamada

Una sola llamada a un LLM puede hacer muy poco:

  • Ventana de contexto limitada: no puede leer un libro completo de una vez
  • No puede acceder a información en tiempo real: los datos de entrenamiento tienen una fecha límite
  • No puede ejecutar acciones: no puede enviar correos, escribir código y ejecutarlo de verdad
  • No puede verificarse a sí mismo: no puede darse cuenta de un error generado y corregirlo
  • Las tareas complejas son propensas a errores: hacer demasiado en un solo paso reduce la calidad

Los cinco problemas clave que resuelve AI Workflow

Los cinco problemas clave que resuelve AI Workflow Descomposición de tareas Dividir tareas complejas en múltiples pasos pequeños Cada paso se centra en una sola cosa Escribir informe → investigación + esquema + redacción + revisión Mejora la precisión Reduce la presión de cada paso Integración de herramientas Llamar a búsqueda, base de datos ejecutor de código, API y otras capacidades externas Motores de búsqueda, calculadoras Base de datos, servicios de correo Superar los límites del conocimiento Conexión con el mundo real Reflexión iterativa La IA puede verificar su propio resultado y, al detectar problemas, reintentar y corregir Generar código → ejecutar → error → corregir Autocorrección Mayor garantía de calidad Procesamiento paralelo Múltiples subtareas se ejecutan a la vez, sin tener que esperar en cola a que el paso anterior termine Analizar simultáneamente las dimensiones financiera, técnica y de mercado Aumenta enormemente la eficiencia Ahorra tiempo de ejecución Observabilidad Las entradas y salidas de cada paso pueden registrarse Monitoreo y depuración Registros, trazabilidad Localización de errores Confiabilidad a nivel de producción Facilita la resolución de problemas

Componentes principales

Un AI Workflow completo se compone de los siguientes elementos principales.

Arquitectura principal de AI Workflow AI Workflow Motor de orquestación LLM/modelos GPT-4、Claude Gemini, modelos locales El cerebro del Workflow Herramientas/Tools Búsqueda, ejecución de código Base de datos, API externas Interacción con el exterior Memoria/Memory Corto plazo: historial de conversación Largo plazo: base de datos vectorial Persistencia entre sesiones Estado/State Progreso de la tarea, resultados intermedios, transmisión de contexto Como un testigo de relevo Intervención humana Revisión, retroalimentación Corrección, autorización Pausa ante operaciones de alto riesgo Enrutamiento/condiciones Decidir según condiciones qué ruta de ejecución tomar Ramas, bucles, saltos Entrada/salida Texto, imágenes, archivos Datos estructurados Todos los componentes son orquestados y coordinados de manera unificada por el motor de orquestación (LangChain / LlamaIndex / Dify, etc.)

Explicación detallada de cada elemento

LLM (grandes modelos de lenguaje)- Es el “cerebro” del Workflow, responsable del razonamiento, la generación y la toma de decisiones. Comunes: GPT-4o, Claude 3.5, Gemini 1.5, Llama 3 local.

Herramientas (Tools)- Interfaces que permiten a la IA interactuar con el mundo exterior, incluyendo: motores de búsqueda (Tavily, Serper, Bing), ejecutores de código (Python REPL, entornos sandbox), consultas a bases de datos (SQL, bases vectoriales), API externas (clima, acciones, correo, calendario), operaciones con archivos (leer/escribir, parsear PDF/Excel).

Memoria (Memory)- La memoria a corto plazo almacena el historial de la conversación actual (en el prompt); la memoria a largo plazo logra persistencia entre sesiones mediante base de datos vectorial + RAG; la memoria de trabajo mantiene el estado intermedio durante la ejecución de la tarea.

Estado (State)- Portador de información que se transmite entre los pasos de una tarea, como un testigo de relevos: cada paso puede leer el resultado anterior y escribir un nuevo resultado.

Enrutador / Condición (Router)- Decide dinámicamente el siguiente paso según la salida del paso anterior, implementando control de flujo complejo como ramificaciones, bucles y saltos.

Intervención humana (Human in the Loop)- Se pausa en puntos críticos para esperar confirmación humana; apto para operaciones de alto riesgo (como eliminar datos, enviar correos, operaciones financieras).


Seis patrones comunes de Workflow

A continuación se presentan los seis patrones de diseño más utilizados en AI Workflow, de simples a complejos, adecuados para diferentes escenarios.

Patrón 1: Cadena secuencial (Sequential Chain)

El patrón más básico: los pasos A → B → C se ejecutan linealmente; la salida de un paso es la entrada del siguiente.

Patrón 1: Cadena secuencial (Sequential Chain) Entrada Usuario original Artículo en inglés Paso 1: Traducción Inglés → Chino GPT-4o Paso 2: Resumen Extraer ideas clave Dentro de 100 caracteres Paso 3: Pulido Optimizar la redacción Añadir título Salida Resumen chino refinado Con título y puntos clave Cada salida se convierte automáticamente en la entrada del siguiente paso; flujo lineal, lógica clara
DimensiónDescripción
Escenarios aplicablesProcesamiento de documentos en pipeline, generación de contenido, transformación de datos
VentajasSimple, predecible
DesventajasRígido, no se puede ajustar dinámicamente según el contenido

Patrón 2: Enrutamiento condicional (Conditional Routing)

Selecciona dinámicamente diferentes rutas posteriores según el contenido de salida de un paso.

Patrón 2: Enrutamiento condicional (Conditional Routing) Pregunta del usuario "¿Cómo usar Python para ordenar una lista?" Clasificación de intención Router Problema de código → Agente de generación de código Ejecutar código para verificar Devolver resultado + explicación Problema de conocimiento → Recuperación de base de conocimiento RAG Recuperar documentos relevantes Generar respuesta basada en documentos Problema en tiempo real → Búsqueda en línea Buscar información más reciente Consolidar en una respuesta El nodo enrutador asigna la tarea a la rama de procesamiento más adecuada según el tipo de pregunta
DimensiónDescripción
Escenarios aplicablesAtención al cliente inteligente, asistentes multifunción, clasificación y procesamiento de preguntas
VentajasFlexible, alta utilización de recursos
DesventajasLa lógica de enrutamiento requiere diseño cuidadoso; un error de clasificación afecta a todo el flujo

Patrón 3: Ejecución paralela (Parallel Execution)

Varias subtareas se ejecutan simultáneamente y los resultados se consolidan al final.

DimensiónDescripción
Escenarios aplicablesAnálisis multidimensional, procesamiento por lotes, subtareas independientes
VentajasGran mejora de velocidad
DesventajasRequiere manejar control de concurrencia y lógica de combinación de resultados

Patrón 4: Bucle ReAct (Reason + Act)

La IA primero razona para decidir qué hacer, luego actúa llamando herramientas, continúa razonando según los resultados y repite el ciclo hasta completar la tarea. Es el patrón central de AI Agent.

Patrón 4: Ciclo ReAct (Reason → Act → Observe → Repeat) Tarea Consultar el clima de hoy en Beijing y recomendar vestimenta Thought (Pensamiento) Necesito primero obtener el clima en tiempo real de Beijing debería llamar a la API del clima Action (Acción) Llamar a la herramienta meteorológica get_weather( city="Pekín") Observation (Observación) Devuelve: soleado, temperatura 18°C, brisa ligera (Resultado de la ejecución de la herramienta) El ciclo continúa razonando Thought (2.ª ronda) El clima ya es conocido, ahora puedo dar directamente sugerencias de vestimenta Final Answer (Respuesta final) Hoy en Beijing está soleado, 18°C, se sugiere usar una chaqueta ligera Pantalones largos + zapatillas, y llevar una chaqueta fina de repuesto. (Tarea completada, salir del bucle) Cada ronda de "pensar → actuar → observar" acumula información hasta que el LLM considera que puede dar una respuesta final
DimensiónDescripción
Escenarios aplicablesAI Agent, ejecución de tareas complejas, resolución de problemas abiertos
VentajasDinámico y flexible, puede manejar situaciones desconocidas
DesventajasEl número de iteraciones no es controlable; se debe establecer un número máximo de pasos para evitar bucles infinitos

Patrón 5: Plan & Execute (planificar y luego ejecutar)

Primero se pide al LLM que elabore un plan completo y luego se ejecuta paso a paso según el plan. La diferencia con ReAct es "pensar primero, actuar después".

Patrón 5: Plan & Execute (Planificar antes de ejecutar) Objetivo de la tarea Investigar competidores y escribir un informe de análisis Planner (Planificación) 1. Recopilar información de competidores 2. Extraer características clave 3. Análisis comparativo 4. Redactar informe Ejecución 1 Motor de búsqueda Llamada x3 Ejecución 2+3 Extracción por LLM Análisis comparativo Ejecución 4 → Salida Generar Markdown Informe de análisis de competidores El Planner usa una sola llamada al LLM para definir el plan global; los pasos posteriores se ejecutan estrictamente según el plan

Patrón 6: Colaboración multiagente (Multi-Agent)

Varios Agentes especializados cooperan con división del trabajo; cada Agente tiene su propio rol y conjunto de herramientas.

Patrón 6: Colaboración multiagente (Multi-Agent) Agente coordinador Recibe tareas del usuario, las asigna a Agentes especializados y consolida resultados Agente investigador Herramientas: motor de búsqueda, scraping web Responsabilidades: recopilar material, organizar hechos Salida: resumen estructurado de información ↑ Reporta al coordinador Agente analista Herramientas: calculadora, Python Responsabilidades: análisis de datos, generación de gráficos Salida: conclusiones del análisis ↑ Reporta al coordinador Agente redactor Herramientas: plantillas de documentos Responsabilidades: redactar y pulir informes Salida: documento final ↑ Reporta al coordinador Agente revisor Herramientas: herramientas de verificación de hechos Responsabilidades: verificar precisión Salida: opinión de revisión ↑ Reporta al coordinador Resultado final → Usuario Cada Agente se especializa en una habilidad, el coordinador supervisa el conjunto; la cooperación con división del trabajo supera con creces a un único Agente en eficiencia
DimensiónDescripción
Escenarios aplicablesDesarrollo de software complejo, asistencia en investigación, automatización empresarial
VentajasEspecialización dedicada, mayor calidad, fácil de escalar
DesventajasAlta complejidad del sistema; la comunicación entre Agentes requiere diseño cuidadoso

Comparación de frameworks y herramientas principales

A continuación se muestra una comparación panorámica de los frameworks de AI Workflow más populares, para ayudarte a elegir según tu situación.

Comparación panorámica de frameworks principales de AI Workflow Framework Posicionamiento Características principales Público objetivo Curva de aprendizaje Código abierto LangChain Python/JS Framework orientado al código Ecosistema más completo Cobertura completa de Chain, Agent, RAG Mayor cantidad de integraciones de herramientas (200+) Plataforma de observabilidad LangSmith Desarrolladores con conocimientos de Python Requieren una gran cantidad de integraciones personalizadas Intermedio √ LangGraph Producido por LangChain Marco de agentes basado en grafos Flujos de trabajo con estado Define flujos de trabajo complejos mediante "grafos" Gestión de estado integrada, reanudación desde puntos de interrupción Soporta Human-in-the-Loop Escenarios que requieren control de procesos complejos Aplicaciones de agentes de nivel de producción Difícil √ LlamaIndex Python Marco especializado en RAG El más potente en procesamiento de datos El mejor en ingesta, indexación y recuperación de datos Compatible con conectores para más de 80 fuentes de datos Estrategias avanzadas de RAG integradas Escenarios de bases de conocimiento y preguntas y respuestas sobre documentos Necesita integrar grandes volúmenes de datos no estructurados Intermedio √ Dify LLMOps de código abierto Visual y low-code Plataforma de IA full-stack Crea Workflows arrastrando y soltando, sin necesidad de escribir código Gestión de aplicaciones y publicación de API integradas Compatible con autoalojamiento y nube Usuarios sin formación técnica Desde prototipos rápidos hasta despliegue en producción Muy bajo √ n8n Plataforma de automatización Automatización de flujos de trabajo generales Con nodos de IA Más de 400 integraciones de servicios, orquestación visual Combinación de nodos de IA + automatización tradicional Autoalojable, los datos no salen del país Necesita conectarse a varios sistemas SaaS Escenarios de automatización de procesos de negocio Bajo √ CrewAI Python Colaboración multi-agente Marco de roles Define agentes mediante "roles" y "tareas" Mecanismos de delegación y supervisión integrados API muy simple, aprendizaje rápido Escenarios de colaboración multi-agente Principiantes con conocimientos de Python Bajo √ Recomendación para principiantes: con base de código → LangChain / CrewAI; sin formación técnica → Dify / n8n

Árbol de decisión para la selección de framework

Según tu situación específica, elige el framework adecuado siguiendo el siguiente árbol de decisión:

你的情况是什么?
│
├─── 没有编程基础,想用可视化工具搭建
│    ├─── 主要是 AI 应用(问答、生成)→ Dify(首选)
│    └─── 需要连接 Slack/邮件等 SaaS 系统 → n8n
│
├─── 有 Python 基础,代码优先
│    ├─── 做知识库 / RAG 系统 → LlamaIndex
│    ├─── 做多 Agent 协作,想快速上手 → CrewAI
│    ├─── 需要复杂有状态流程控制 → LangGraph
│    └─── 通用场景,想要最大生态 → LangChain
│
└─── 已有明确场景,生产级要求
     ├─── 高并发、精细控制 → LangGraph + LangSmith
     └─── 企业部署、私有化 → Dify 自托管

Inicio rápido: ejemplos de código Python

Los siguientes ejemplos, desde la cadena secuencial más simple hasta la colaboración multi-agente compleja, demuestran paso a paso cómo implementar Workflows de IA.

Cadena secuencial con LangChain

El patrón de Workflow más básico, que utiliza el operador de tubería | para encadenar varios pasos de llamadas a LLM.

Instala los paquetes de dependencias:

pip install langchain langchain-openai

Ejemplo

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(model="gpt-4o-mini", api_key="your-api-key")

# ─── Definir tres pasos ────────────────────────────────────────────
# Paso 1: Traducir el artículo al chino
translate_prompt = ChatPromptTemplate.from_template(
    "Traduce el siguiente artículo en inglés al chino, manteniendo el significado original:\n\n{article}"
)

# Paso 2: Extraer el resumen
summarize_prompt = ChatPromptTemplate.from_template(
    "Extrae 3 puntos clave del siguiente artículo, cada punto en una frase:\n\n{translated}"
)

# Paso 3: Generar el título
title_prompt = ChatPromptTemplate.from_template(
    "Basándote en el siguiente resumen, genera un título atractivo en chino (dentro de 15 caracteres):\n\n{summary}"
)

parser = StrOutputParser()

# ─── Encadenar con el operador | como una tubería ─────────────────────────────────
chain = (
    {"translated": translate_prompt | llm | parser}
    | {"summary": summarize_prompt | llm | parser,
       "translated": lambda x: x["translated"]}
    | title_prompt | llm | parser
)

# ─── Ejecutar ────────────────────────────────────────────────────
article = """
Artificial intelligence is transforming how we work and live.
From automating repetitive tasks to assisting in creative work,
AI tools are becoming indispensable in modern workflows...
"""


result = chain.invoke({"article": article})
print(result)
AI 正在重塑现代工作流:从自动化到创意辅助

Agente con llamada a herramientas (modo ReAct)

ReAct es el patrón central de los agentes de IA, que hace que la IA alterne entre pensamiento y acción hasta completar la tarea.

Ejemplo

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.tools import tool
from langchain import hub
import requests, datetime

# ─── Definir herramientas ────────────────────────────────────────────────
@tool
def get_weather(city: str) -> str:
    """Obtiene la información meteorológica actual de la ciudad especificada"""
    # En un proyecto real, reemplazar por una API meteorológica real
    mock_data = {
        "Pekín": "Despejado, 22°C, brisa suave",
        "Shanghái": "Nublado, 26°C, humedad 75%",
        "Guangzhou": "Lluvia ligera, 30°C, se recomienda llevar paraguas",
    }
    return mock_data.get(city, f"No hay datos meteorológicos disponibles para {city}")

@tool
def search_web(query: str) -> str:
    """Busca información en la web y devuelve un resumen del contenido relacionado"""
    # En un proyecto real, integra la API de Tavily / Serper
    return f"Resultado de la búsqueda de '{query}': este es un resultado de búsqueda simulado..."

@tool
def calculate(expression: str) -> str:
    """Calcula expresiones matemáticas, por ejemplo '2 + 3 * 4'"""
    try:
        result = eval(expression, {"__builtins__": {}}, {})
        return str(result)
    except Exception as e:
        return f"Error de cálculo: {e}"

@tool
def get_date() -> str:
    """Obtiene la fecha de hoy"""
    return datetime.date.today().strftime(%d/%m/%Y)

# ─── Crear el agente ───────────────────────────────────────────────
tools = [get_weather, search_web, calculate, get_date]
llm   = ChatOpenAI(model="gpt-4o", temperature=0)

# Usar el prompt estándar de ReAct de LangChain Hub
prompt = hub.pull("hwchase17/react")

agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,      # Imprimir el proceso de pensamiento de cada paso, para facilitar la depuración
    max_iterations=8,  # Evitar bucles infinitos
    handle_parsing_errors=True
)

# ─── Ejecutar ────────────────────────────────────────────────────
result = agent_executor.invoke({
    "input": "¿Qué día es hoy? ¿Cómo está el tiempo en Pekín? Si caminas 5 km quemas unas 300 calorías,"
             "correr la misma distancia quema aproximadamente 1.6 veces más que caminar, calcula las calorías quemadas al correr."
})

print(result["output"])
# El agente decidirá automáticamente: primero llama a get_date → get_weather("Pekín") → calculate("300*1.6")
# Finalmente combina toda la información y da una respuesta completa

Workflow con estado en LangGraph

LangGraph define procesos complejos mediante grafos, cada nodo es una función y las aristas definen la lógica de salto.

Ejemplo

from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from typing import TypedDict, Annotated
import operator

# ─── Definir la estructura de estado (datos transmitidos entre nodos) ────────────────────────
class ResearchState(TypedDict):
    topic: str                             # Tema de investigación
    research_notes: str                    # Notas de investigación
    draft: str                             # Borrador
    review_feedback: str                   # Comentarios de revisión
    final_report: str                      # Informe final
    revision_count: Annotated[int, operator.add]   # Número de revisiones (acumulativo)

llm = ChatOpenAI(model="gpt-4o")

# ─── Definir funciones de nodo ─────────────────────────────────────────────
def research_node(state: ResearchState) -> dict:
    """Nodo 1: fase de investigación"""
    response = llm.invoke(
        f"Investiga brevemente el siguiente tema y enumera 5 puntos clave: {state['topic']}"
    )
    return {"research_notes": response.content}

def write_node(state: ResearchState) -> dict:
    """Nodo 2: redactar el borrador"""
    prompt = f"""
Tema: {state['topic']}
Notas de investigación: {state['research_notes']}
{'Comentarios de la revisión anterior: ' + state.get('review_feedback', '') if state.get('review_feedback') else ''}

Redacta un borrador de informe de análisis de 300 palabras según el contenido anterior.
    """

    response = llm.invoke(prompt)
    return {"draft": response.content, "revision_count": 1}

def review_node(state: ResearchState) -> dict:
    """Nodo 3: revisar el borrador"""
    response = llm.invoke(
        f"Revisa el siguiente informe. Si la calidad es suficiente, responde 'APPROVED'; de lo contrario, da sugerencias específicas de modificación:\n\n{state['draft']}"
    )
    return {"review_feedback": response.content}

def finalize_node(state: ResearchState) -> dict:
    """Nodo 4: versión final"""
    return {"final_report": state["draft"]}

# ─── Función de enrutamiento: decide qué camino seguir después de la revisión ─────────────────────────────
def should_revise(state: ResearchState) -> str:
    if "APPROVED" in state["review_feedback"]:
        return "finalize"           # → Versión final
    elif state["revision_count"] >= 3:
        return "finalize"           # → Si se exceden 3 revisiones, forzar la finalización
    else:
        return "revise"             # → Volver al nodo de redacción para modificar

# ─── Construir el grafo del flujo de trabajo ─────────────────────────────────────────────
workflow = StateGraph(ResearchState)

# Añadir nodos
workflow.add_node("research",  research_node)
workflow.add_node("write",     write_node)
workflow.add_node("review",    review_node)
workflow.add_node("finalize",  finalize_node)

# Establecer el punto de entrada
workflow.set_entry_point("research")

# Añadir aristas (definir la lógica de transición)
workflow.add_edge("research", "write")       # Investigación → Redacción
workflow.add_edge("write",    "review")      # Redacción → Revisión

# Arista condicional: tras la revisión, elegir la ruta según el resultado
workflow.add_conditional_edges(
    "review",
    should_revise,
    {
        "revise":   "write",    # Necesita modificación → Volver a redacción
        "finalize": "finalize"  # Aprobado → Versión final
    }
)

workflow.add_edge("finalize", END)

# Compilar y ejecutar
app = workflow.compile()

result = app.invoke({"topic": "El impacto de la IA generativa en la industria del desarrollo de software", "revision_count": 0})
print(result["final_report"])

Colaboración multiagente con CrewAI

CrewAI define roles y tareas para que múltiples agentes colaboren como un equipo.

Ejemplo

from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")

# ─── Definir agentes (roles) ────────────────────────────────────────
researcher = Agent(
    role=Investigador de mercado,
    goal=Recopilar y organizar información de mercado completa y precisa sobre el tema objetivo,
    backstory=Eres un analista de mercado experimentado, experto en extraer conocimientos clave de grandes volúmenes de información,
    llm=llm,
    verbose=True
)

analyst = Agent(
    role=Analista de datos,
    goal=Basándote en la información proporcionada por el investigador, realiza un análisis profundo y llega a conclusiones valiosas,
    backstory=Eres experto en hablar con datos y puedes descubrir tendencias y oportunidades ocultas detrás de la información,
    llm=llm,
    verbose=True
)

writer = Agent(
    role=Experto en redacción de informes,
    goal=Redacta las conclusiones del análisis en un informe claro, profesional y convincente,
    backstory=Tienes amplia experiencia en redacción empresarial y puedes hacer que análisis complejos sean fáciles de entender,
    llm=llm,
    verbose=True
)

# ─── Definir Task (Tarea) ────────────────────────────────────────
research_task = Task(
    description=Investigar el estado actual del mercado de vehículos de nueva energía en China, incluidas las principales marcas, cuota de mercado y tendencias de crecimiento,
    expected_output=Un informe de investigación de mercado que incluya 5 puntos de datos clave, con cifras y hechos concretos,
    agent=researcher
)

analysis_task = Task(
    description=Basándote en el informe de investigación, analiza las oportunidades y riesgos para los próximos 3 años y ofrece recomendaciones de calificación de inversión,
    expected_output=Tabla de análisis SWOT + Calificación de inversión (Recomendación fuerte / Recomendación / Neutral / Prudente) + Razones,
    agent=analyst,
    context=[research_task]    # Depende de la salida de la tarea de investigación
)

writing_task = Task(
    description=Integra la investigación y el análisis en un informe profesional de inversión de 500 palabras, con formato claro,
    expected_output=Un informe que incluya cuatro secciones: resumen ejecutivo, situación actual del mercado, oportunidades y riesgos, y recomendaciones de inversión,
    agent=writer,
    context=[research_task, analysis_task]
)

# ─── Formar el equipo y ejecutar ───────────────────────────────────────────
crew = Crew(
    agents=[researcher, analyst, writer],
    tasks=[research_task, analysis_task, writing_task],
    process=Process.sequential,    # Ejecución secuencial (también se puede cambiar a hierarchical)
    verbose=True
)

result = crew.kickoff()
print(result)

Human-in-the-Loop (nodo de revisión humana)

LangGraph permite pausar en pasos clave, esperar la confirmación humana y luego continuar la ejecución.

Ejemplo

from langgraph.graph import StateGraph, END
from langgraph.checkpoint.memory import MemorySaver
from typing import TypedDict

class EmailState(TypedDict):
    recipient: str
    content: str
    approved: bool

def draft_email(state: EmailState) -> dict:
    """Redactar borrador de correo"""
    content = fEstimado {state['recipient']},\n\nEste es el contenido del correo redactado por IA...\n\nAtentamente,
    return {"content": content}

def send_email(state: EmailState) -> dict:
    """Enviar correo (operación de alto riesgo, requiere revisión humana antes de ejecutarse)"""
    print(fCorreo enviado a {state['recipient']})
    return {}

# Ruta: decidir si enviar según el resultado de la revisión humana
def check_approval(state: EmailState) -> str:
    return "send" if state.get("approved") else END

workflow = StateGraph(EmailState)
workflow.add_node("draft", draft_email)
workflow.add_node("send", send_email)
workflow.set_entry_point("draft")

# Después de completar el borrador, pausar y esperar la revisión humana (interrupt_after)
workflow.add_conditional_edges("draft", check_approval, {"send": "send", END: END})
workflow.add_edge("send", END)

# Usar MemorySaver para soportar interrupción y reanudación
memory = MemorySaver()
app = workflow.compile(
    checkpointer=memory,
    interrupt_after=["draft"]      # Pausar después del nodo draft
)

config = {"configurable": {"thread_id": "email-001"}}

# Primera ejecución: pausa después de llegar a draft
state = app.invoke({"recipient": Cliente A, "approved": False}, config)
print(Borrador generado, en espera de revisión:)
print(state["content"])

# Después de la revisión humana, actualizar el estado y continuar la ejecución
user_input = input("\n¿Aprobar envío? (y/n):)
if user_input.lower() == "y":
    app.update_state(config, {"approved": True})
    app.invoke(None, config)   # Continuar desde el punto de interrupción
    print(Correo enviado)
else:
    print(Envío cancelado)

Ingeniería de prompts: técnicas clave en Workflow

En el AI Workflow, la calidad del prompt afecta directamente la calidad de salida de cada nodo.

Ejemplo

# Definición de rol ambigua
# system_prompt = "Eres un asistente de IA, ayúdame a analizar este documento"

# Definición de rol clara (recomendado)
system_prompt = """
Eres un analista financiero profesional, especializado en identificar señales de riesgo en informes financieros.
Tu tarea: extraer del siguiente informe todos los puntos de datos clave relacionados con pasivos, flujo de caja y rentabilidad.
Formato de salida: JSON, que incluya risk_level (high/medium/low) y key_findings (lista).
Nota: genera solo JSON, no agregues ningún texto explicativo.
"""

Ejemplo

# Transmitir texto no estructurado
# state["previous_output"] = "Resultado del análisis: esta empresa parece buena, tiene algunos riesgos..."

# Transmitir datos estructurados (recomendado)
state["analysis_result"] = {
    "risk_level": "medium",
    "key_findings": [Tasa de endeudamiento 45%, promedio de la industria 38%, Flujo de caja positivo, disminución intertrimestral del 12% en Q3],
    "recommendation": Mantener con prudencia
}

Ejemplo

# Exigir salida JSON en el prompt
prompt = """
Analiza la polaridad de sentimiento del siguiente texto.
Genera la salida estrictamente en el siguiente formato JSON, no agregues ningún otro contenido:
{
  "sentiment": "positive" | "negative" | "neutral",
  "confidence": 0.0-1.0,
"reason": "explicación breve"
}

Texto: {text}
"""

Manejo de errores y reintentos

Ejemplo

from tenacity import retry, stop_after_attempt, wait_exponential
import logging

@retry(
    stop=stop_after_attempt(3),                         # Reintentar como máximo 3 veces
    wait=wait_exponential(multiplier=1, min=2, max=10)  # Espera con retroceso exponencial
)
def call_llm_with_retry(prompt: str) -> str:
    try:
        response = llm.invoke(prompt)
        return response.content
    except Exception as e:
        logging.error(fError en la llamada LLM: {e})
        raise

def safe_parse_json(text: str) -> dict:
    """Analizar de forma segura el JSON de salida del LLM"""
    import json, re
    # Extraer la parte JSON (a veces el LLM agrega texto explicativo adicional)
    json_match = re.search(r'\{.*\}', text, re.DOTALL)
    if json_match:
        try:
            return json.loads(json_match.group())
        except json.JSONDecodeError:
            pass
    return {"error": Error de análisis, "raw": text}

Control de costos

Ejemplo

# ─── Seleccionar modelo según la importancia de la tarea ────────────────────────────────
def get_llm(task_type: str):
    if task_type == "classification":   # Tareas de clasificación, un modelo ligero es suficiente
        return ChatOpenAI(model="gpt-4o-mini")
    elif task_type == "generation":     # Tareas de generación, utilizar un modelo mediano
        return ChatOpenAI(model="gpt-4o-mini")
    elif task_type == "reasoning":      # Razonamiento complejo, utilizar un modelo potente
        return ChatOpenAI(model="gpt-4o")

# ─── Almacenar en caché solicitudes repetidas ──────────────────────────────────────────
from langchain.globals import set_llm_cache
from langchain_community.cache import InMemoryCache
set_llm_cache(InMemoryCache())   # Para la misma entrada, devolver directamente la caché sin facturar nuevamente

# ─── Dividir el texto para evitar que sea demasiado largo ──────────────────────────────────────
from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=2000,       # 2000 caracteres por bloque
    chunk_overlap=200      # Superposición de 200 caracteres para garantizar la coherencia contextual
)
chunks = splitter.split_text(long_document)

Escenarios de aplicación típicos

AI Workflow ya se ha implementado ampliamente en múltiples campos; a continuación se presentan los seis escenarios más representativos.

Escenarios de aplicación típicos de AI Workflow Asistente de programación con IA El usuario describe la necesidad → Comprender la necesidad → Generar código → Ejecutar automáticamente → Detectar errores → Reparar automáticamente → Generar documentación y casos de prueba Representante: GitHub Copilot Workspace Claude Code、Cursor Informe de investigación automatizado Recibir tema de investigación → Descomponer en subproblemas → Recopilar información en paralelo → Extraer información clave → Análisis integral → Generar informe completo con referencias Representante: Perplexity Deep Research OpenAI Deep Research Sistema de atención al cliente inteligente Reconocer la intención del usuario → Consultar el pedido Base de datos → Buscar documentos de políticas → Generar respuesta personalizada → Transferir problemas complejos a atención humana Representante: atención al cliente con IA de las principales plataformas de comercio electrónico Atención al cliente inteligente bancaria Automatización del análisis de datos Subir Excel/CSV → Comprender la estructura de datos → Seleccionar automáticamente el método de análisis → Ejecutar Python → Generar gráficos + interpretación en lenguaje natural Representante: ChatGPT Advanced Data Analysis Pipeline de marketing de contenidos Ingresar tema y audiencia → Investigar tendencias → Generar esquema → Redactar el texto completo → Optimizar SEO → Generar descripción de imágenes → Adaptar a múltiples plataformas Representante: varios tipos de escritura con IA y herramientas de automatización de marketing Diagnóstico asistido por IA en medicina El paciente describe síntomas → Estructurar historial médico → Buscar literatura médica → Analizar informes de imágenes → Generar recomendaciones de referencia → Confirmación del médico Nota: los escenarios de alto riesgo deben conservar Human-in-the-Loop

Mejores prácticas y errores comunes

Errores comunes y soluciones

A continuación se presentan los problemas que los principiantes encuentran con mayor facilidad al usar AI Workflow.

TrampaFenómenoSolución
Cascada de alucinacionesEl error en la salida de la IA del paso anterior se transmite al siguiente paso como un hecho, amplificando el error.Agregar pasos de verificación en nodos clave; obtener información numérica mediante herramientas.
Bucle infinitoEl agente ReAct llama a las herramientas repetidamente sin saber cuándo detenerse.Configurar max_iterations; dar al LLM condiciones de terminación claras.
Explosión de contextoA medida que aumentan los pasos, el texto enviado al LLM se vuelve cada vez más largo y excede la ventana.Transmitir solo los campos necesarios en cada paso; comprimir el historial con resúmenes.
Abuso de herramientasEl agente podría responder directamente, pero llama a herramientas repetidamenteOptimizar las descripciones de las herramientas; indicar claramente al LLM cuándo no se necesitan herramientas
Error al analizar JSONEl formato de salida del LLM es inestable y el programa se bloqueaAñadir safe_parse_json; usar LangChain OutputParser
SobrecostoNo se estimó el consumo de tokens y la factura de fin de mes supera lo esperadoProbar primero con gpt-4o-mini; usar LangSmith para monitorear el uso
Conflictos de concurrenciaVarios agentes escriben en el mismo estado al mismo tiempo y causan corrupción de datosUsar la gestión de estado integrada de LangGraph; evitar estados mutables compartidos

Resumen y ruta de aprendizaje

Repaso de los puntos clave

Puntos de conocimiento clave de AI Workflow Elementos centrales LLM, herramientas Memoria, estado Enrutamiento, intervención humana Seis componentes principales de intervención Forman un sistema completo Seis patrones principales Cadena secuencial Enrutamiento condicional Ejecución en paralelo Bucle ReAct Plan&Execute Multiagente Frameworks principales LangChain LangGraph LlamaIndex CrewAI Dify / n8n Selección según necesidades Código clave Llamadas encadenadas con Chain Definición de herramientas con tool StateGraph (grafo de estados) Agent + Executor Human-in-Loop interrupt_after Trampas clave Cascada de alucinaciones Bucle infinito Explosión de contexto Error al analizar JSON Sobrecosto Prevenir es mejor que curar Escenarios de aplicación Asistente de programación con IA Informes de investigación Atención al cliente inteligente Análisis de datos Producción de contenido Asistencia médica

Ruta de aprendizaje recomendada

Primera fase: comprender los fundamentos (1 semana)

  1. Comprender las llamadas a la API de LLM y poder enviar solicitudes con el SDK de OpenAI
  2. Ejecutar el ejemplo de cadena secuencial de LangChain de este artículo
  3. Comprender los principios básicos de Prompt Engineering

Segunda fase: herramientas y agentes (2 semanas)

  1. Aprender a definir herramientas con el decorador @tool
  2. Ejecutar el ejemplo de agente ReAct y observar los registros verbose para entender la lógica del bucle
  3. Usar Dify o n8n para crear un prototipo visual de Workflow

Tercera fase: Workflows complejos (3 semanas)

  1. Aprender los grafos de estado de LangGraph e implementar flujos de trabajo con ramas condicionales
  2. Usar CrewAI para implementar una tarea de colaboración entre dos agentes
  3. Integrar herramientas reales (búsqueda de Tavily, Python REPL)
  4. Usar LangSmith para observar y depurar tu Workflow

Cuarta fase: listo para producción (continuo)

  1. Implementar reintentos de errores y análisis de salida estructurada
  2. Monitoreo y optimización de costos (uso de modelos por niveles)
  3. Desplegar en producción y configurar alertas de monitoreo

Recursos de referencia

Otras extensiones