CrewAI — Bases du Flow : orchestrer plusieurs crews dans un workflow maîtrisé

2 min read

Quand votre processus devient « recherche → rédaction → relecture → publication », un seul crew ne suffit plus.
Le Flow joue le rôle de tour de contrôle qui coordonne plusieurs crews.

Quels problèmes le Flow résout-il ?

  • Gérer l'état multi-étapes
  • Gérer la logique de branchement (publier si OK, relancer si échec)
  • Améliorer l'observabilité et la maintenabilité

Exemple minimal 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"

Suggestions de conception du Flow

  1. Gardez chaque méthode @listen focalisée sur un seul job
  2. Concentrez les branchements dans @router, évitez les gros blocs if/else partout
  3. Utilisez un état typé BaseModel, pas un dict brut

Avec ce style, vous pourrez relire le code dans six mois sans vous sentir archéologue.

Quand utiliser le Flow ?

  • Le workflow a plus de 3 étapes
  • Il existe des conditions de branchement claires
  • Plusieurs crews doivent être coordonnés

Si votre workflow se limite à « recherche + rédaction de rapport », un seul crew suffit.

Prochaine étape

Après l'orchestration des workflows, la question suivante est souvent : « Les agents gardent-ils le contexte ? »
L'article suivant traite de la mémoire et des sources de connaissances :
👉 Mémoire et connaissances