Flow básico en CrewAI: orquesta múltiples crews con control

2 min read

Cuando tu proceso se vuelve "investigar -> redactar -> revisar -> publicar", un solo crew ya no basta.
Flow actúa como torre de control para coordinar múltiples crews.

¿Qué problemas resuelve Flow?

  • Gestión de estado multi-paso
  • Manejo de lógica condicional (publicar si pasa, reintentar si falla)
  • Mejor observabilidad y mantenibilidad

Ejemplo mínimo de Flow

from pydantic import BaseModel
from crewai.flow.flow import Flow, start, listen, router
 
class BlogState(BaseModel):
    topic: str = ""
    draft: str = ""
    word_count: int = 0
 
class BlogFlow(Flow[BlogState]):
    @start()
    def init_topic(self) -> str:
        self.state.topic = "CrewAI for beginners"
        return self.state.topic
 
    @listen(init_topic)
    def write_draft(self, topic: str) -> str:
        result = "draft content..."
        self.state.draft = result
        self.state.word_count = len(result.split())
        return result
 
    @router(write_draft)
    def quality_gate(self) -> str:
        return "ok" if self.state.word_count > 100 else "retry"

Recomendaciones de diseño para Flow

  1. Mantén cada método @listen enfocado en una sola tarea
  2. Mantén la lógica de ramas en @router, evita grandes bloques if/else por todo el código
  3. Usa estado tipado con BaseModel, no diccionarios sin estructura

Con este estilo, podrás volver al código en seis meses sin sentir que haces arqueología.

¿Cuándo usar Flow?

  • El flujo tiene más de 3 pasos
  • Existen condiciones de ramificación claras
  • Necesitas coordinar múltiples crews

Si tu flujo es solo "investigación + redacción de informe", un solo crew basta.

Siguiente paso

Tras la orquestación, surge la siguiente pregunta: "¿los agentes recuerdan contexto?"
El próximo artículo cubre memoria y fuentes de conocimiento:
👉 Memory and Knowledge