CrewAI — Intégration des outils : laisser les agents chercher, lire et vraiment travailler
2 min read
Un agent sans outils, c'est comme un ingénieur avec beaucoup de théorie mais sans clavier.
Il peut beaucoup parler, mais pas livrer.
Outils intégrés courants
Les outils CrewAI souvent utilisés incluent :
SerperDevTool: recherche webFileReadTool: lecture de fichiersFileWriterTool: écriture de fichiersScrapeWebsiteTool: extraction du contenu d'une page web
Attacher des outils à un agent
from crewai import Agent
from crewai_tools import SerperDevTool
search_tool = SerperDevTool()
researcher = Agent(
role="Researcher",
goal="Find trustworthy sources about the topic",
backstory="You validate facts before writing.",
tools=[search_tool],
allow_delegation=False,
verbose=True,
)💡 Vous pouvez réutiliser le même
search_toolpour plusieurs agents. Pas besoin de le recréer à chaque fois (DRY).
Modèle minimal d'outil personnalisé
from crewai.tools import BaseTool
from pydantic import BaseModel, Field
class QueryInput(BaseModel):
keyword: str = Field(description="Search keyword")
class KeywordTool(BaseTool):
name: str = "Keyword Tool"
description: str = "Return a short explanation for a keyword."
args_schema: type[BaseModel] = QueryInput
def _run(self, keyword: str) -> str:
return f"Result for: {keyword}"Quatre règles de conception des outils
- Une seule chose : s'il cherche, ne pas aussi écrire des fichiers
- Être explicite : la
descriptiondoit indiquer clairement le but et les entrées - Valider les paramètres : utiliser un schéma Pydantic
- Retourner un format stable : plus simple pour les tâches suivantes de parser
Erreurs courantes
| Symptôme | Cause | Correction |
|---|---|---|
| L'outil n'est jamais appelé | Le prompt de la tâche n'exige pas explicitement son usage | Ajoutez une instruction explicite « utiliser l'outil d'abord » dans la tâche |
| Mauvaises valeurs de paramètres | Schéma args peu clair | Ajoutez Field(description=...) |
| Sortie difficile à utiliser | Texte libre trop dispersé | Retournez des sections fixes ou une chaîne JSON |
Prochaine étape
Après les outils, le prochain focus est la cohérence des sorties.
L'article suivant montre comment figer le format avec Pydantic :
👉 Sortie structurée avec Pydantic