Communitygithub.com

crewaiinc/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.

Qu'est-ce que design-task ?

Ce skill est dédié à la conception et à la configuration des tâches CrewAI. Il est essentiel pour tout développeur travaillant avec l'agent CrewAI, que ce soit pour créer de nouvelles tâches, les configurer finement ou diagnostiquer des problèmes d'exécution. Il vous guide dans la rédaction de descriptions claires et de résultats attendus (expected_output), la gestion des dépendances entre tâches via l'argument context, le choix du format de sortie (output_pydantic pour des modèles Pydantic, output_json pour du JSON brut, ou output_file pour enregistrer dans un fichier). Il prend également en charge des fonctionnalités avancées comme la validation avec des garde-fous (guardrails), l'intervention humaine (human_input), l'exécution asynchrone (async_execution) et le formatage Markdown. En cas de problème, il fournit des pistes de débogage pour les erreurs courantes liées à la sérialisation, aux dépendances ou aux règles de validation. Le skill est conçu pour être utilisé avec les agents CrewAI sur les plateformes supportant les définitions de tâches structurées (comme les fichiers YAML ou la création programmatique). Il exploite les classes `Task` et `Agent` de la bibliothèque CrewAI ainsi que les modèles Pydantic pour garantir la robustesse et la cohérence des flux de travail.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/crewaiinc/skills/tree/main/skills/design-task

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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èmeCause probableSolution
La tâche ne renvoie rienexpected_output manquant ou trop vagueAjoutez une description précise du résultat attendu
Sortie non sérialisableErreur dans le modèle PydanticVérifiez le type et les validateurs du modèle
Dépendance non résolueOrdre des tâches incorrectAssurez-vous que toutes les tâches du context sont listées avant
Garde-fou rejette la sortieRègle de validation trop stricteAjustez 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

  1. Rédigez des description claires et sans ambiguïté.
  2. Utilisez output_pydantic pour les sorties structurées.
  3. Nommez vos tâches de manière explicite pour faciliter la journalisation.
  4. Évitez les dépendances circulaires.
  5. Testez chaque tâche individuellement avant de l'intégrer dans un flux complet.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Skills associés