Les agents représentent un changement par rapport aux workflows structurés que nous avons explorés précédemment. Alors que les workflows excellent lorsque vous connaissez les étapes exactes nécessaires pour accomplir une tâche, les agents brillent lorsque le chemin à suivre n'est pas clair. Plutôt que de définir une séquence rigide, vous donnez à Claude un objectif et un ensemble d'outils, puis vous le laissez déterminer comment combiner ces outils pour atteindre l'objectif.

Cette flexibilité rend les agents attrayants pour les développeurs. Vous pouvez construire un agent une seule fois, vous assurer qu'il fonctionne raisonnablement bien, puis le déployer pour gérer une grande variété de tâches. Cependant, cette approche comporte des inconvénients importants en termes de fiabilité et de coût que nous explorerons plus tard.
Comment les outils façonnent l'agent
La véritable puissance des agents réside dans leur capacité à combiner des outils simples de manière inattendue. Considérez un ensemble basique d'outils de date et d'heure que nous avons abordé précédemment dans le cours :

get_current_datetime- Renvoie la date et l'heure actuellesadd_duration_to_datetime- Ajoute du temps à une date donnéeset_reminder- Crée un rappel pour une heure spécifique
Chaque outil est simple en soi, mais Claude peut les combiner pour traiter des demandes diverses :

Pour « Quelle heure est-il ? », Claude appelle simplement get_current_datetime. Pour « Quel jour de la semaine sera-t-il dans 11 jours ? », il enchaîne get_current_datetime suivi de add_duration_to_datetime. Des demandes plus complexes comme « Mets un rappel pour aller à la salle de sport mercredi prochain » nécessitent les trois outils en séquence.
Claude peut même reconnaître quand il a besoin d'informations supplémentaires. Lorsqu'on lui demande « Quand ma garantie de 90 jours expire-t-elle ? », il demande d'abord à l'utilisateur quand il a obtenu la garantie, puis utilise cette information avec add_duration_to_datetime pour calculer la date d'expiration.
Les outils doivent être abstraits
L'idée clé pour construire des agents efficaces est de fournir des outils raisonnablement abstraits plutôt que des outils hyper-spécialisés. Claude Code illustre parfaitement ce principe.

Claude Code a accès à des outils génériques et flexibles :
bash- Exécuter des commandesglob- Trouver des fichiersgrep- Rechercher dans le contenu des fichiersread- Lire un fichierwrite- Créer un fichieredit- Modifier un fichierwebfetch- Récupérer une URL
Remarquez ce que Claude Code n'a pas - des outils spécialisés comme « Refactoriser » ou « Exécuter les tests » ou « Installer les dépendances ». Au lieu de cela, il détermine comment accomplir ces tâches en combinant les outils de base disponibles. Pour installer des dépendances, il lit les fichiers du projet pour comprendre la configuration, puis utilise bash pour exécuter les commandes d'installation appropriées.
Bonne pratique : fournir des outils raisonnablement abstraits
Lorsque vous construisez des agents, concentrez-vous sur des outils que Claude peut combiner de manière créative plutôt que sur des outils qui résolvent un problème spécifique unique. Considérez un agent de création de vidéos pour les réseaux sociaux :

Les outils efficaces pour cet agent pourraient inclure :
bash- Fournit un accès à FFMPEG pour le traitement vidéogenerate_image- Crée des images à partir d'invites textuellestext_to_speech- Convertit du texte en audiopost_media- Publie du contenu sur les réseaux sociaux
Cet ensemble d'outils permet des interactions à la fois simples et complexes. Un utilisateur pourrait demander « Crée et publie une vidéo sur la programmation Python », et l'agent gère tout automatiquement. Alternativement, l'interaction pourrait être plus collaborative :

L'utilisateur pourrait dire « Je veux que tu fasses une vidéo sur Python, mais je veux d'abord choisir une image initiale pour la vidéo ». L'agent peut générer un exemple d'image, le montrer à l'utilisateur pour approbation, puis procéder à la création de la vidéo une fois confirmé.
Cette flexibilité émerge naturellement du fait de fournir le bon niveau d'abstraction dans vos outils. Chaque outil doit être suffisamment général pour être utile dans plusieurs contextes, mais suffisamment spécifique pour accomplir un travail significatif lorsqu'il est combiné avec d'autres.