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
- Mantén cada método
@listenenfocado en una sola tarea - Mantén la lógica de ramas en
@router, evita grandes bloquesif/elsepor todo el código - 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