Que fait design-task ?
Conception et configuration de tâches CrewAI. Utilisez-le pour créer, configurer ou déboguer des tâches CrewAI — rédaction de descriptions et expected_output, mise en place de dépendances avec context, configuration des formats de sortie (output_pydantic, output_json, output_file), utilisation de garde-fous pour la validation, activation de human_input, exécution asynchrone, formatage Markdown, ou débogage de problèmes d'exécution de tâches.
Création d'une tâche
Pour définir une tâche CrewAI, instanciez la classe Task avec les paramètres requis :
from crewai import Task
ma_tache = Task(
description="Rédiger un résumé de 300 mots du rapport technique.",
expected_output="Un texte clair et concis de 300 mots en français."
)
Paramètres principaux
description(str) : Instruction détaillée pour l'agent. Soyez précis sur le résultat attendu.expected_output(str) : Description du résultat final. C'est ce que l'agent doit produire.agent(Agent, optionnel) : Agent assigné à cette tâche.context(list[Task], optionnel) : Liste de tâches dont les sorties servent de contexte.
Formats de sortie
from pydantic import BaseModel
from typing import List
class Rapport(BaseModel):
titre: str
contenu: str
mots_cles: List[str]
tache_rapport = Task(
description="Générer un rapport structuré.",
expected_output="Un objet Rapport valide.",
output_pydantic=Rapport,
output_file="rapport.json"
)
output_pydantic: Valide la sortie par rapport à un modèle Pydantic.output_json: Retourne la sortie au format JSON brut (dictionnaire).output_file: Sauvegarde la sortie dans un fichier après exécution.
Dépendances de tâches
Utilisez context pour chaîner des tâches :
tache_recherche = Task(
description="Rechercher les dernières tendances en IA.",
expected_output="Liste de 5 tendances."
)
tache_synthese = Task(
description="Rédiger un article de blog sur les tendances.",
expected_output="Article complet en Markdown.",
context=[tache_recherche]
)
Validation et garde-fous
Les garde-fous permettent de valider ou modifier la sortie avant qu'elle ne soit finale :
def verifier_longueur(resultat: str) -> bool:
return len(resultat.split()) >= 100
tache_validee = Task(
description="Rédiger une introduction de 100 mots minimum.",
expected_output="Introduction concise.",
guardrails=[verifier_longueur]
)
Interaction humaine
Activez human_input pour qu'un humain approuve ou modifie la sortie :
tache_humain = Task(
description="Choisir la meilleure option parmi trois propositions.",
expected_output="Option sélectionnée avec justification.",
human_input=True
)
Exécution asynchrone
import asyncio
tache_async = Task(
description="Analyser de grandes masses de données.",
expected_output="Rapport d'analyse.",
async_execution=True
)
async def main():
resultat = await tache_async.execute()
print(resultat)
Formatage Markdown
Indiquez dans la description que la sortie doit être en Markdown, ou utilisez un modèle Pydantic avec validation :
tache_markdown = Task(
description="Rédiger un guide au format Markdown avec titres, listes et code.",
expected_output="Document Markdown valide."
)
Débogage des tâches
Problèmes courants et solutions :
| Problème | Cause probable | Solution |
|---|---|---|
| La tâche ne renvoie rien | expected_output manquant ou trop vague | Ajoutez une description précise du résultat attendu |
| Sortie non sérialisable | Erreur dans le modèle Pydantic | Vérifiez le type et les validateurs du modèle |
| Dépendance non résolue | Ordre des tâches incorrect | Assurez-vous que toutes les tâches du context sont listées avant |
| Garde-fou rejette la sortie | Règle de validation trop stricte | Ajustez la logique ou les seuils du garde-fou |
Journalisation
Activez le mode débogage de CrewAI :
import os
os.environ["CREWAI_DEBUG"] = "true"
Cela affiche des logs détaillés sur l'exécution des tâches, les appels aux LLM et les validations.
Meilleures pratiques
- Rédigez des
descriptionclaires et sans ambiguïté. - Utilisez
output_pydanticpour les sorties structurées. - Nommez vos tâches de manière explicite pour faciliter la journalisation.
- Évitez les dépendances circulaires.
- Testez chaque tâche individuellement avant de l'intégrer dans un flux complet.