Module 2 — Agents, rôles et objectifs
Dans CrewAI, un agent n'est pas défini par une ligne de code magique : il est défini par trois chaînes de caractères qui vont conditionner tout son comportement. Comprendre ce que fait chacune de ces trois chaînes est ce qui sépare une équipe qui converge d'une équipe qui parle dans le vide.
Les trois champs qui définissent un agent
Un agent CrewAI se déclare avec un role, un goal et un backstory. Ces trois champs sont injectés dans la consigne système à chaque appel du modèle. Ce ne sont donc pas des étiquettes : ce sont le prompt système de l'agent, formulé sous une forme structurée.
from crewai import Agent
from langchain_openai import ChatOpenAI
analyste = Agent(
role="Analyste de spécifications produit",
goal=(
"Extraire des spécifications techniques la liste ordonnée des "
"fonctionnalités utilisateur, avec pour chacune : un intitulé, "
"un critère d'acceptation et un niveau de priorité."
),
backstory=(
"Vous avez dix ans d'expérience en analyse fonctionnelle. Vous "
"êtes réputée pour repérer les ambiguïtés qui coûtent cher plus "
"tard, et pour formuler des critères d'acceptation testables."
),
llm=ChatOpenAI(model="gpt-4o-mini", temperature=0.2),
verbose=True,
allow_delegation=False,
)
Le rôle répond à la question « qui parle ? » — un mot, deux mots, jamais une phrase. Le but répond à « pour quel livrable ? » et doit être mesurable : « écrire une bonne documentation » est inutile, « produire une liste de fonctionnalités avec critère d'acceptation testable » est actionnable. La biographie injecte un ton, une posture et un point de vue ; c'est elle qui distingue un rédacteur exigeant d'un rédacteur complaisant.
Ce qu'un objectif flou coûte
Le défaut le plus fréquent des équipes CrewAI mal réglées est un objectif rédigé comme une intention marketing. « Produire un contenu de qualité qui plaira aux utilisateurs » ne dit rien de mesurable : l'agent l'interprète différemment à chaque exécution, la sortie varie de façon imprévisible, et le relecteur ne sait pas quoi vérifier.
Un objectif utile est falsifiable : quelqu'un doit pouvoir dire, en lisant la sortie, « ceci répond à l'objectif » ou « ceci n'y répond pas ». Comparez :
| Objectif flou | Objectif actionnable |
|---|---|
| « Rédiger une bonne introduction » | « Rédiger une introduction de 120 à 180 mots qui répond aux questions : à qui sert le produit, quel problème il résout, quelle est sa contrepartie » |
| « Vérifier la qualité du texte » | « Repérer les affirmations non sourcées, les répétitions et les incohérences avec le glossaire, et renvoyer la liste des passages concernés » |
Cette précision migre l'ambiguïté du modèle vers vous — c'est exactement ce qu'on veut.
Choisir un modèle par agent
CrewAI accepte un llm distinct par agent. Ce n'est pas un détail : les agents n'ont pas le même besoin de raisonnement.
- L'analyste, qui doit être précis sur une longue spécification, gagne à recevoir un modèle capable de raisonnement structuré —
gpt-4oouclaude-sonnet-4par exemple. - Le rédacteur, qui produit du texte fluide, se contente souvent d'un modèle plus léger et moins coûteux —
gpt-4o-minifait très bien l'affaire. - Le relecteur, dont la tâche est proche d'une classification (« ambigu ? incohérent ? sourcé ? »), peut lui aussi tourner sur un modèle petit avec une température basse.
- Le responsable, en cas de processus hiérarchique, mérite un modèle plus fort — c'est lui qui arbitre.
Un même modèle partout est un choix par défaut acceptable pour démarrer. Mais dès que la facture devient sensible, la ventilation par agent permet de garder les grosses cylindrées là où elles apportent, et rien qu'ailleurs.
Verbosité et délégation
Deux paramètres méritent une décision consciente. verbose=True fait imprimer sur la sortie standard chaque étape de raisonnement de l'agent. C'est indispensable en développement pour comprendre les échecs (voir module 9), et à couper en production, où il ne fait qu'alourdir les journaux.
allow_delegation=True autorise un agent à demander à un autre de faire une sous-tâche. C'est puissant, mais c'est aussi la source des boucles de délégation étudiées au module 6. Par défaut, False : n'autorisez la délégation que là où vous l'avez prévue.
Les quatre agents du fil rouge
Notre équipe de rédaction comporte l'analyste défini plus haut, un rédacteur qui produit chaque section, un relecteur qui contrôle la cohérence et un responsable qui arbitre. Le module 3 les met en mouvement avec des tâches.
Écrire un backstory de dix lignes qui répète le goal sous une autre forme. Résultat : la consigne système fait 2 000 jetons, l'agent est saturé, il oublie ce qui compte. La biographie est un ton, pas une redite. Trois phrases suffisent.
En résumé
- Un agent CrewAI se définit par rôle, objectif et biographie — c'est son prompt système structuré.
- L'objectif doit être falsifiable : un but qui ne peut pas être coché « fait » ou « non fait » pilote une exécution qui n'a pas de condition d'arrêt.
- Chaque agent peut recevoir son propre modèle ; la ventilation
gros modèlepour l'arbitrage etpetit modèlepour la rédaction stabilise le coût. verbose=Truesert au développement,allow_delegationreste àFalsepar défaut jusqu'à ce que vous ayez décidé où la délégation est utile.
Module suivant : les tâches, leurs dépendances et les sorties attendues qui rendent une chaîne exécutable.