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 web
  • FileReadTool : lecture de fichiers
  • FileWriterTool : écriture de fichiers
  • ScrapeWebsiteTool : 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_tool pour 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

  1. Une seule chose : s'il cherche, ne pas aussi écrire des fichiers
  2. Être explicite : la description doit indiquer clairement le but et les entrées
  3. Valider les paramètres : utiliser un schéma Pydantic
  4. 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