Skip to content

Agent SDK : intégrer les fonctionnalités de Claude Code dans votre propre programme

📚 Navigation de la série : L'article précédent 44 GitHub Actions vous a appris à intégrer Claude dans l'IC, lui permettant de travailler automatiquement dans les PR et les pipelines. Cette étape va plus loin — au lieu de simplement l'intégrer aux pipelines, utilisez l'ensemble des capacités de Claude Code comme une bibliothèque à intégrer dans vos propres programmes et services. L'Agent SDK is le canal officiel qui vous permet de « démarrer un agent Claude par programmation ».

Les amis, parlons aujourd'hui de quelque chose qui vous fera passer du statut d'« utilisateur d'outils » à celui de « créateur d'outils ».

Dans les plus de quarante articles précédents, vous avez toujours été un utilisateur de Claude Code — en tapant claude dans le terminal, en dialoguant avec lui et en le regardant modifier du code. C'est sa « face visible ». Mais il y a aussi une « face cachée » que vous n'avez très probablement jamais touchée : son noyau — cet ensemble de boucles d'agent qui lit des fichiers, exécute des commandes et réfléchit avant d'agir — peut être directement appelé par votre code.

C'est l'Agent SDK (Agent Software Development Kit, un ensemble de bibliothèques pour appeler le noyau de Claude Code par programmation en Python / TypeScript). Pour faire simple, il transforme « ce qu'est Claude Code » d'un outil en ligne de commande en une fonction dans votre programme. En écrivant quelques lignes de code, vous pouvez exécuter dans votre propre application un agent d'IA autonome capable de lire du code, de modifier des fichiers et de parcourir le réseau.

Vous mesurerez pleinement l'importance de cet outil lorsque vous voudrez créer un « petit robot de revue automatique de PR ». Au début, en appelant honnêtement l'API brute, le simple fait de « faire lire un fichier au modèle » nécessitait d'écrire beaucoup de code — insérer le contenu du fichier dans la requête, intercepter la demande du modèle disant « je veux lire X », effectuer la lecture réelle, puis renvoyer le résultat... de nombreux allers-retours fastidieux. En passant à l'Agent SDK, toutes ces corvées disparaissent, et en trois lignes de code, Claude lit le fichier lui-même et corrige le bug. Aujourd'hui, nous allons vous baliser ce chemin.

Après avoir lu cet article, vous obtiendrez :

  • Une explication simple de ce qu'est l'Agent SDK et de la partie de Claude Code qu'il « extrait pour votre usage »
  • La différence réelle entre le SDK et le CLI que vous tapez tous les jours — le même noyau, deux « entrées » différentes
  • La différence fondamentale avec l'« API brute » (si vous ne comprenez pas cela, vous penserez réinventer la roue)
  • Comment choisir entre les deux versions TypeScript et Python, quel paquet installer et quels sont les prérequis
  • Un agent minimal avec sa sortie attendue que vous pouvez reproduire pas à pas : lui faire trouver et corriger un bug par lui-même
  • Une réflexion claire sur « à qui s'adresse cet outil et si vous devriez l'apprendre »

01 Comprendre d'abord : ce que l'Agent SDK « extrait » de Claude Code

Pour faire simple : l'Agent SDK consiste à transformer le noyau de Claude Code en une bibliothèque, vous permettant d'appeler par programmation (en Python ou TypeScript) un agent Claude identique à celui du CLI.

Rappelez-vous de la « boucle d'agent » présentée à l'article 03 — le travail de Claude consiste essentiellement à tourner en boucle autour de « réfléchir → agir → observer » : concevoir clairement l'étape suivante, appeler un outil pour la réaliser (lire un fichier, exécuter une commande), observer le résultat pour décider de l'étape suivante. Lorsque vous utilisez claude dans le terminal, vous bénéficiez de cette boucle et d'un ensemble d'outils intégrés (Read, Edit, Bash, etc., voir article 03).

Prise de conscience clé : cette boucle et ces outils ne sont pas exclusifs au CLI, ils peuvent être directement appelés par votre code. L'explication officielle est très directe :

L'Agent SDK vous fournit les mêmes outils, boucle d'agent et gestion de contexte que Claude Code, programmables en Python et TypeScript.

Analogie : ramener la machine à café automatique d'un café dans votre propre cuisine. Vous allez tous les jours au café du coin commander un café (c'est l'utilisation du CLI), et cela vous convient très bien. Mais un jour, vous décidez de proposer ce même café dans votre propre établissement de petit-déjeuner — vous ne pouvez pas demander à vos clients d'aller dans ce café. Vous installez donc la même machine dans votre propre boutique : c'est toujours le même noyau de mouture, d'extraction et d'émulsion de lait, sauf qu'il est désormais intégré à votre propre processus, et vous décidez par programmation quand servir une tasse, à qui et avec quelle formule de petit-déjeuner. L'Agent SDK est cette « machine transportable » — le même noyau, exécuté au sein de votre propre programme.

Qu'a-t-il donc « extrait » ? La liste officielle est très claire, et tout ce qui fait la force de Claude dans le CLI s'y retrouve au complet :

  • Outils intégrés : Read, Write, Edit, Bash, Glob, Grep, WebSearch sont prêts à l'emploi, vous n'avez pas à implémenter vous-même l'exécution des outils
  • Boucle d'agent : le SDK gère pour vous l'enchaînement réfléchir → agir → observer
  • Gestion de contexte : il garde en mémoire les fichiers lus et l'historique de la conversation
  • Au-delà de cela, les hooks, les sous-agents, MCP, le contrôle des permissions et la reprise de session — tous les points d'extension du CLI peuvent être appelés par programmation

Dans des scénarios réels, quand penserez-vous à l'utiliser ? Voici trois idées courantes :

  • « Je veux créer un robot Slack qui, lorsqu'un journal d'erreurs est envoyé, va localiser l'erreur dans le dépôt de code et proposer une suggestion de correction » — cela nécessite d'intégrer l'agent dans votre service Slack
  • « Je veux exécuter une tâche planifiée qui parcourt automatiquement chaque nuit le dépôt de code à la recherche des TODO et génère un rapport » — cela nécessite d'appeler l'agent par programmation et de pouvoir récupérer sa sortie
  • « Je veux ajouter une fonctionnalité d'“assistant IA” à mon produit, où Claude manipule directement les fichiers de projet de l'utilisateur en arrière-plan » — c'est encore plus indispensable de passer par le SDK

Ces trois tâches seraient fastidieuses à réaliser avec le CLI — le CLI est conçu pour « un humain assis devant son terminal » ; alors que les cas ci-dessus sont des cas de « déclenchement automatique par programme et récupération automatique des résultats ». C'est précisément le terrain de jeu du SDK.

💡 Résumé en une phrase : L'Agent SDK transforme le noyau de Claude Code (outils + boucle d'agent + gestion de contexte) en une bibliothèque, vous permettant d'appeler par programmation un agent Claude identique à celui du CLI, afin de l'intégrer dans vos propres programmes et services.


02 La différence réelle entre le SDK et le CLI : un même noyau, deux entrées

C'est le point sur lequel il est le plus facile de s'embrouiller, alors clarifions-le une fois pour toutes : l'Agent SDK et le CLI que vous utilisez quotidiennement partagent exactement la même base sous-jacente, la seule différence réside dans l'« entrée » — l'une pour la saisie manuelle humaine, l'autre pour l'appel par programme.

La formule officielle résume parfaitement cela :

Même fonctionnalité, interface différente.

Analogie : la même machine à café, commande directe en boutique vs intégration dans un distributeur automatique pour un service en continu. C'est toujours la même machine à café (le même noyau). Posée sur le comptoir, le serveur prépare le café à la demande du client et peut lui demander à tout moment « avec ou sans sucre ? » — c'est le CLI, adapté quand l'humain est présent et ajuste en temps réel. Placez cette même machine dans un distributeur automatique sans personnel, insérez des pièces, appuyez sur le bouton, le café coule automatiquement sans surveillance — c'est le SDK, adapté au « déclenchement automatique par programme, à l'exécution par lots et sans intervention humaine ». La machine reste identique, ce qui change, c'est l'entité qui appuie sur le bouton.

Pour savoir lequel utiliser et quand, voici le tableau comparatif officiel :

Cas d'usageMeilleur choix
Développement interactif (vous êtes devant le terminal pour coder et ajuster)CLI
Tâche ponctuelle (lui demander temporairement de faire quelque chose)CLI
CI/CD pipeline (exécution automatique dans un pipeline)SDK
Applications personnalisées (intégration dans votre propre produit)SDK
Automatisation en production (sans surveillance, exécution à long terme)SDK

L'astuce pour utiliser ce tableau : demandez-vous si vous allez rester assis devant pour surveiller, ou si c'est un programme qui s'exécute automatiquement. Humain présent pour interagir à tout moment — CLI ; programme qui démarre et récupère les résultats automatiquement — SDK.

De plus, l'explication officielle lève un doute fréquent sur l'intérêt d'apprendre les deux :

De nombreuses équipes utilisent les deux : le CLI pour le développement quotidien et le SDK pour la production. Les flux de travail se transposent directement entre les deux.

C'est tout à fait vrai. C'est ainsi que font beaucoup de développeurs : la journée pour coder, ils utilisent claude dans le terminal au gré des besoins (CLI) ; et lorsqu'un processus a été répété manuellement pour la cinquième fois et devient fastidieux, ils écrivent un script avec le SDK pour l'automatiser en arrière-plan. Les principes de rédaction des prompts, de choix des outils et de configuration des permissions sont strictement identiques — toute l'expérience accumulée sur le CLI est directement réutilisable avec le SDK.

Ne les opposez donc pas. Disons-le ainsi : le CLI est votre entrée pour une « utilisation directe », le SDK est votre entrée pour « déléguer l'exécution à un programme », tous deux reposant sur le même Claude Code. Voici un schéma pour illustrer cette relation :

Entrées CLI et SDK : l'humain utilise le CLI en temps réel ; le programme utilise le SDK pour l'automatisation intégrée ; partage de la boucle d'agent et des outils

Ce schéma montre que le haut présente deux « entrées » distinctes — la saisie humaine via le CLI et l'appel par programme via le SDK ; mais les deux chemins mènent au même noyau de Claude Code, pour finalement réaliser le même ensemble de tâches. C'est pourquoi on parle de « même noyau, deux entrées ».

💡 Résumé en une phrase : Le CLI et le SDK partagent le même noyau mais offrent deux entrées — le CLI pour une utilisation interactive en direct par l'utilisateur, et le SDK pour l'exécution automatique par lots par un programme ; ils s'utilisent souvent ensemble, et l'expérience acquise sur le CLI est totalement transposable au SDK.


03 Ne pas confondre : l'Agent SDK n'est pas l'« API brute », la différence réside dans « qui exécute la boucle d'outils »

C'est la distinction la plus importante de cet article. Si vous ne la comprenez pas, vous risquez de penser utiliser le SDK alors que vous réinventez une roue que Claude a déjà construite pour vous.

Vous avez peut-être entendu parler de l'« API d'Anthropic » ou du « Client SDK » (les bibliothèques clientes permettant de communiquer directement avec l'API du modèle). Bien que leurs noms soient proches et qu'ils permettent tous deux d'appeler Claude, les tâches qu'ils accomplissent n'ont rien à voir. Voici comment les distinguer en une phrase :

Le Client SDK vous fournit un « modèle sachant parler », et vous devez écrire vous-même la boucle d'outils ; l'Agent SDK vous fournit un « agent sachant travailler », et il exécute la boucle d'outils pour vous.

L'explication officielle est très claire :

L'Anthropic Client SDK vous fournit un accès direct à l'API : vous envoyez des invites et implémentez vous-même l'exécution des outils. L'Agent SDK vous fournit Claude avec l'exécution intégrée des outils.

Analogie : acheter des grains de café verts à torréfier et infuser soi-même vs acheter une machine à café automatique. Le Client SDK est comme si le marchand vous vendait uniquement des grains de café verts — les grains sont excellents (le modèle est très puissant), mais pour en faire une tasse, la torréfaction, la mouture, la chauffe de l'eau, l'extraction et l'émulsion du lait doivent être réalisées par vos soins. L'Agent SDK vous fournit directement une machine automatique — vous appuyez sur « Americano », elle moud, extrait et vous sert directement votre tasse. Le modèle sous-jacent est le même, la différence réside dans « qui prend en charge toutes les étapes intermédiaires ».

En regardant le code, la différence saute aux yeux. Voici le comparatif officiel (en Python), observez la différence de volume de code :

python
# Client SDK : vous devez implémenter vous-même la boucle d'outils
response = client.messages.create(...)
while response.stop_reason == "tool_use":
    result = your_tool_executor(response.tool_use)   # Vous devez exécuter vous-même l'outil
    response = client.messages.create(tool_result=result, **params)  # Puis renvoyer le résultat au modèle

# Agent SDK : Claude exécute lui-même les outils
async for message in query(prompt="Fix the bug in auth.py"):
    print(message)

Voyez-vous la différence ? Cette boucle while du Client SDK — « le modèle demande à utiliser un outil → vous l'exécutez → vous lui renvoyez le résultat → le modèle poursuit sa réflexion » — correspond précisément aux tâches laborieuses mentionnées au début. Le modèle se contente de « dire » qu'il veut lire auth.py, mais l'action réelle de lecture doit être écrite par vos soins, puis vous devez réinjecter manuellement le contenu. Vous devez concevoir cette « boucle d'outils » de bout en bout.

L'Agent SDK encapsule toute cette boucle while à l'intérieur de l'appel query(). Vous formulez simplement votre demande « corrige le bug dans auth.py », et l'agent décide lui-même du fichier à lire, le lit, le modifie et le vérifie, pendant que vous recevez simplement le flux de messages.

C'est précisément l'origine du problème évoqué plus haut. Lors de la création d'un robot de revue de PR, on se heurte souvent les premiers jours à la complexité de cette boucle while — intercepter le tool_use du modèle, coder la lecture de fichier ou le git diff, renvoyer les résultats, gérer les cas limites complexes. Dès que l'on découvre que l'Agent SDK prend en charge toute cette couche, ces centaines de lignes de code de transition peuvent être réduites instantanément à un simple appel à query(). Retenez bien ce comparatif :

Critère de comparaisonClient SDK (API brute)Agent SDK
Ce qui vous est fourniUn modèle sachant parlerUn agent sachant travailler
Qui exécute les outilsVotre code doit les exécuterClaude les exécute automatiquement
La boucle d'outils whileÀ implémenter de bout en boutPrise en charge par le SDK
Outils intégrés (lecture/écriture de fichiers, commandes)Aucun, tout est à coderPrêts à l'emploi
Idéal pourPersonnalisation extrême, pas d'opérations sur le système de fichiersUn agent capable de travailler directement sur vos fichiers

Règle de décision : si vous avez besoin d'« un agent capable de lire directement vos fichiers, d'exécuter vos commandes et de modifier votre code », choisissez l'Agent SDK et évitez d'avoir à gérer cette boucle while. Ne considérez le Client SDK que si vous n'avez pas besoin d'opérations sur le système de fichiers, si vous souhaitez une simple conversation textuelle et si vous devez contrôler précisément chaque étape.

💡 Résumé en une phrase : Agent SDK ≠ API brute — l'API brute (Client SDK) vous donne le modèle et vous laisse coder la boucle d'outils ; l'Agent SDK vous donne l'agent et gère la boucle d'outils à votre place. Pour avoir un « Claude capable d'agir », optez pour l'Agent SDK et économisez tout ce code de transition.


04 Deux langages : TypeScript et Python, lequel installer et prérequis

L'Agent SDK officiel est proposé dans deux versions selon vos préférences : TypeScript et Python. Leurs fonctionnalités sont identiques, et la documentation officielle fournit chaque exemple dans les deux langages. Ne vous demandez donc pas « laquelle est la plus complète » — choisissez simplement le langage que votre équipe et vos projets utilisent déjà.

Le choix est simple : utilisez le SDK correspondant au langage de votre application. Backend Node.js ou écosystème frontend — TypeScript ; science des données, scripts ou ingénierie d'IA — Python. Suivez simplement votre projet.

Quel paquet installer et prérequis

Les commandes d'installation et les prérequis diffèrent selon le langage (conformément à la documentation officielle) :

TypeScriptPython
Commande d'installationnpm install @anthropic-ai/claude-agent-sdkpip install claude-agent-sdk
Version requiseNode.js 18+Python 3.10+
Faut-il installer Claude Code séparément ?Non (le SDK intègre le binaire requis)Voir l'explication ci-dessous

La version TypeScript offre un détail pratique souligné par la documentation officielle :

Le SDK TypeScript intègre un binaire Claude Code local pour votre plateforme en tant que dépendance facultative, vous n'avez donc pas besoin d'installer Claude Code séparément.

En d'autres termes, le SDK TS fonctionne dès son installation, sans nécessiter d'installer Claude Code au préalable.

Côté Python, attention à un piège de version également signalé officiellement — le paquet requiert Python 3.10 ou supérieur. Si pip renvoie une erreur No matching distribution found for claude-agent-sdk, c'est très probablement parce que votre version de Python est trop ancienne. Vérifiez votre version :

bash
python3 --version        # macOS / Linux
py --version             # Windows

Mettez à jour si elle est inférieure à 3.10. Sur un ancien Mac, il est facile de se faire piéger : la commande python système par défaut est souvent en version 3.9 et renvoie cette erreur No matching distribution, tandis que passer à la version 3.11 permet de l'installer instantanément.

Clé d'API requise

Dans les deux cas, vous devez disposer d'une clé d'API Anthropic (le jeton d'authentification pour appeler les modèles) avant l'exécution. Il est conseillé de créer un fichier .env à la racine de votre projet :

bash
ANTHROPIC_API_KEY=votre-cle-d-api

Obtenez votre clé depuis la console Claude (platform.claude.com) ; c'est un identifiant d'accès confidentiel, ne le soumettez jamais dans git — veillez à l'ajouter à votre .gitignore. Le detail de la configuration de cette API a été présenté à l'article 04.

Voici un rappel important concernant la facturation, mis en évidence au début de la documentation officielle (votre budget est en jeu, lisez attentivement) :

À compter du 15 juin 2026, l'utilisation de l'Agent SDK et de claude -p dans le cadre des plans d'abonnement sera déduite d'un nouveau crédit mensuel pour l'Agent SDK, distinct de votre limite d'utilisation interactive.

En clair : le budget d'utilisation interactive de votre abonnement (pour discuter dans le terminal) et le budget pour l'Agent SDK seront gérés sur deux comptes séparés à partir de cette date. Ne supposez donc pas que « comme j'ai un abonnement, je peux utiliser le SDK de manière illimitée » — le SDK fait l'objet d'une facturation distincte. Référez-vous aux règles détaillées de la documentation officielle.

💡 Résumé en une phrase : Les deux SDK partagent les mêmes fonctionnalités, choisissez selon votre langage — TS via npm install @anthropic-ai/claude-agent-sdk (Node 18+, binaire inclus sans installation requise du CLI), Python via pip install claude-agent-sdk (Python 3.10+ requis) ; tous deux nécessitent ANTHROPIC_API_KEY et la facturation du SDK est distincte de celle du CLI interactif.


05 Analyser le code : query() est le point d'entrée

Rien ne vaut un exemple de code concret pour bien comprendre. Le point d'entrée principal de l'Agent SDK est unique : query(). Maîtrisez-le pour ouvrir toutes les portes du SDK.

Décortiquons l'exemple minimal officiel. Commençons par la version Python :

python
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions


async def main():
    # Boucle d'agent : Claude génère le flux de messages au fil de ses actions
    async for message in query(
        prompt="Find and fix the bug in auth.py",
        options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"]),
    ):
        print(message)  # Claude lit le fichier, trouve le bug et le corrige


asyncio.run(main())

La version TypeScript suit exactement la même logique :

typescript
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Find and fix the bug in auth.ts",
  options: { allowedTools: ["Read", "Edit", "Bash"] }
})) {
  console.log(message); // Claude lit le fichier, trouve le bug et le corrige
}

C'est tout. Décomposons les trois éléments clés (synthèse de la documentation officielle) :

query() — le point d'entrée principal de la boucle d'agent. Il renvoie un « itérateur asynchrone » (async iterator, un objet capable de produire des messages un par un). Vous utilisez donc async for (ou for await en TS) pour intercepter en continu chaque message émis par Claude pendant qu'il travaille : ses réflexions, les outils qu'il appelle, les retours des outils et le résultat final.

prompt — ce que vous voulez qu'il fasse. Identique à la phrase que vous taperiez dans le CLI. Ici, « trouve et corrige le bug dans auth.py ». Claude détermine lui-même les outils nécessaires.

options — la configuration de cet agent. L'option la plus courante est allowed_tools (TS : allowedTools), qui permet d'approuver au préalable les outils qu'il est autorisé à utiliser. L'exemple ci-dessus fournit Read, Edit et Bash, ce qui signifie « tu as l'autorisation de lire les fichiers, de les modifier et d'exécuter des commandes ».

Notez que cette boucle async for / for await tourne jusqu'à ce que Claude termine sa tâche ou rencontre une erreur. À chaque itération, elle émet un message. Le SDK gère en arrière-plan l'exécution des outils, la gestion du contexte et les tentatives en cas d'erreur. Vous n'avez qu'à consommer le flux. La documentation officielle l'explique ainsi :

Le SDK gère l'orchestration (exécution des outils, gestion du contexte, tentatives de reconnexion), vous n'avez donc qu'à consommer le flux.

C'est là le principal avantage par rapport à l'API brute — vous constaterez que ce code ne contient aucune boucle d'outils while, cette dernière étant entièrement encapsulée dans query().

Ajoutons un point crucial sur la relation entre les outils fournis et les permissions (faisant écho à l'article 20). Les outils déclarés dans allowed_tools déterminent l'étendue des actions autorisées pour l'agent. La documentation officielle propose ce tableau comparatif très clair :

Outils fournisActions autorisées pour l'agent
Read, Glob, GrepAnalyse en lecture seule (lecture possible, aucune modification)
Read, Edit, GlobAnalyse + Modification du code
Read, Edit, Bash, Glob, GrepAutomatisation complète (lecture, modification et exécution de commandes)

Vous souhaitez créer un agent sécurisé « en lecture seule » ? Fournissez-lui uniquement Read, Glob et Grep. C'est encore plus sûr qu'une validation manuelle temporaire dans le CLI : l'agent ne disposant pas de l'outil Edit, il lui est techniquement impossible de modifier quoi que ce soit.

Pour les utilisateurs de Python : en plus de l'appel ponctuel query(), le SDK Python propose également ClaudeSDKClient — une encapsulation de query() permettant à plusieurs appels de partager automatiquement la même session, sans avoir à transmettre manuellement le paramètre resume. C'est idéal pour les interfaces de chat ou les REPL nécessitant plusieurs tours de conversation ; pour les tâches ponctuelles, l'appel à query() suffit largement.

💡 Résumé en une phrase : L'entrée du SDK est query() — passez-lui le prompt (la tâche à accomplir) et les options (configuration, notamment allowed_tools qui définit les outils autorisés), et il renvoie un flux de messages à intercepter avec async for ; la boucle d'outils while de l'API brute est entièrement gérée en interne par query().


06 Pratique : exécuter en 5 minutes un agent capable de « trouver et corriger un bug par lui-même »

La théorie c'est bien, la pratique c'est mieux. Cette section vous guide pour exécuter vous-même l'agent d'initiation classique de la documentation officielle — nous allons introduire volontairement des bugs dans un code pour que l'agent les détecte et les corrige. Ce test est autonome et ne nécessite aucun projet existant complexe. Suivez simplement les étapes ci-dessous avec Python (la logique reste identique pour TS, les commandes équivalentes sont précisées).

Étape 1 : Créer un dossier vide et s'y rendre

bash
mkdir mon-agent
cd mon-agent

Étape 2 : Installer le SDK et configurer la clé

En Python (en utilisant un environnement virtuel venv) :

bash
python3 -m venv .venv
source .venv/bin/activate
pip install claude-agent-sdk

Pour TypeScript, utilisez à la place la commande npm install @anthropic-ai/claude-agent-sdk.

Créez ensuite un fichier .env dans le dossier mon-agent et insérez votre clé :

bash
ANTHROPIC_API_KEY=votre-cle-d-api

Résultat attendu : La commande pip install se termine en affichant Successfully installed claude-agent-sdk-.... L'affichage de Successfully installed confirme que le SDK est installé. Si vous obtenez l'erreur No matching distribution found, c'est que votre version de Python est inférieure à 3.10, veuillez la mettre à jour (voir section 04).

Étape 3 : Créer un fichier contenant des bugs

Dans le dossier mon-agent, créez un fichier utils.py et collez-y le code suivant (il s'agit du code d'exemple officiel, contenant deux bugs provoquant des plantages) :

python
def calculate_average(numbers):
    total = 0
    for num in numbers:
        total += num
    return total / len(numbers)


def get_user_name(user):
    return user["name"].upper()

Les deux bugs sont : l'appel à calculate_average([]) avec une liste vide provoque une division par zéro ; et l'appel à get_user_name(None) génère une erreur de type TypeError.

Étape 4 : Écrire le code de l'agent

Créez un fichier agent.py et collez-y le code suivant (version d'initiation officielle avec commentaires en français) :

python
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage


async def main():
    # Boucle d'agent : Claude génère le flux de messages au fil de ses actions
    async for message in query(
        prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",
        options=ClaudeAgentOptions(
            allowed_tools=["Read", "Edit", "Glob"],  # Approbation préalable de ces outils
            permission_mode="acceptEdits",            # Approbation automatique des modifications de fichiers
        ),
    ):
        # Affichage uniquement des messages lisibles par l'utilisateur
        if isinstance(message, AssistantMessage):
            for block in message.content:
                if hasattr(block, "text"):
                    print(block.text)              # Réflexion de Claude
                elif hasattr(block, "name"):
                    print(f"Tool: {block.name}")   # Outil en cours d'appel
        elif isinstance(message, ResultMessage):
            print(f"Done: {message.subtype}")      # Résultat final


asyncio.run(main())

Nous avons ajouté ici une option non détaillée à la section 05 : permission_mode="acceptEdits"approuver automatiquement les modifications de fichiers, afin que l'agent ne s'arrête pas pour vous demander votre accord lors de la modification des fichiers (idéal pour ce type de script de confiance). La documentation officielle propose plusieurs modes de permission :

ModeComportementCas d'usage
acceptEditsApprouve automatiquement les modifications de fichiers et les commandes courantes du système de fichiers, demande l'accord pour le resteFlux de travail de développement de confiance (utilisé dans cet exemple)
bypassPermissionsN'affiche aucune invite d'autorisation, exécute tous les outils directementCI dans un bac à sable, environnement entièrement sécurisé
defaultNécessite de fournir une fonction de rappel pour gérer les autorisationsPersonnalisation du processus d'approbation
dontAskRefuse directement tout outil non pré-approuvé, sans inviteCI verrouillée, scripts automatisés
planAutorise uniquement les outils en lecture seule, Claude analyse mais ne modifie pas les fichiersPhase de planification avant d'autoriser l'exécution

Étape 5 : Exécuter le script

bash
python agent.py

Pour TypeScript, utilisez la commande npx tsx agent.ts.

Résultat attendu : Le terminal affiche en continu les étapes de travail de l'agent — d'abord ses réflexions (par exemple la nécessité de lire utils.py), puis les appels d'outils comme Tool: Read et Tool: Edit, et enfin la ligne Done: success. L'affichage de Done: success confirme que l'agent a terminé.

Étape 6 : Vérification — consulter les modifications dans utils.py

Ouvrez à nouveau utils.py. Résultat attendu : Vous constaterez que l'agent a ajouté du code de protection — par exemple une vérification dans calculate_average pour renvoyer 0 (ou lever une exception explicite) si la liste est vide, et une vérification dans get_user_name pour gérer le cas où user est None ou si la clé name est absente.

C'est là tout l'intérêt de l'Agent SDK, comme le souligne la documentation officielle :

C'est ce qui rend l'Agent SDK unique : Claude exécute directement les outils plutôt que de vous demander de les implémenter.

Tout au long du processus, l'agent a agi de manière autonome : lecture de utils.py pour comprendre le code → analyse des cas de plantage potentiels → modification du fichier pour ajouter la gestion des erreurs. Vous n'avez écrit aucun code métier, l'agent s'est chargé de tout.

En réalisant ce test, vous avez mis en œuvre l'ensemble du processus : « installation du SDK → configuration de la clé → appel à query() → définition des outils et permissions → réception du flux → vérification du résultat ». La structure reste la même pour tout futur développement d'agent — il suffira de modifier le prompt, d'ajuster allowed_tools et de configurer si nécessaire les permissions et MCP.

À ce sujet, la documentation officielle suggère de tester d'autres prompts pour observer les différents comportements d'un même code : par exemple "Add type hints to all functions in utils.py" (ajouter des indications de type) ou "Write unit tests for utils.py, run them, and fix any failures" (écrire des tests unitaires, les exécuter et corriger les échecs — cela nécessite d'ajouter Bash aux outils autorisés allowed_tools).

💡 Résumé en une phrase : La mise en œuvre d'un agent d'initiation se fait en six étapes — créer le dossier, installer le SDK et configurer la clé, créer un fichier contenant des bugs, écrire le code de l'agent utilisant query(), l'exécuter avec python agent.py, et vérifier que le fichier a été corrigé automatiquement. Rien ne vaut la pratique pour assimiler le fonctionnement.


07 À qui s'adresse cet outil : devez-vous l'adopter dès maintenant ?

Pour être tout à fait franc : l'Agent SDK n'est pas indispensable pour tout le monde immédiatement, mais quiconque souhaite automatiser des tâches avec Claude finira par s'y intéresser. Voici de quoi vous situer afin d'éviter de vous disperser.

Commençons par les cas où il est inutile. Si vous souhaitez uniquement utiliser Claude dans votre terminal pour vous aider à écrire du code, corriger des bugs ou exécuter des commandes — contentez-vous du CLI et n'utilisez pas le SDK. Le SDK sert à appeler Claude par programmation. Sans ce besoin d'intégration logicielle, il ne ferait qu'ajouter de la complexité inutile. Certains utilisateurs se précipitent sur le SDK après avoir découvert le CLI, pour finalement se retrouver bloqués sur des concepts d'asynchronisme ou d'itérateurs asynchrones, sans avancer sur leurs tâches principales — c'est une erreur de ciblage.

Dans quels cas devriez-vous l'utiliser ? Si vous vous reconnaissez dans l'un de ces trois besoins, l'apprentissage du SDK est justifié :

SituationIntérêt du SDK
« Je veux juste demander à Claude d'écrire du code dans le terminal »❌ Le CLI suffit largement, évitez le SDK
« Je répète manuellement le même processus pour la Nième fois et je veux l'automatiser »✅ Recommandé, écrivez un script avec le SDK pour l'exécuter en arrière-plan
« Je veux ajouter une fonctionnalité d'IA active et autonome à mon propre produit ou service »✅ Recommandé, c'est l'usage principal du SDK
« Je veux créer un robot ou une tâche planifiée qui exécute l'agent automatiquement »✅ Recommandé, le CLI est mal adapté à cet usage

La documentation officielle suggère également un parcours d'évolution classique :

Une approche courante consiste à utiliser d'abord l'Agent SDK pour le prototypage local, puis à migrer vers les Managed Agents pour la production.

Ce terme de Managed Agents (agents managés) désigne un ensemble d'API REST hébergées par Anthropic pour exécuter vos agents et bacs à sable. Votre programme se contente d'envoyer des événements et de recevoir les résultats, sans avoir à gérer l'infrastructure d'exécution ni le stockage des sessions. À l'inverse, l'Agent SDK s'exécute directement dans votre propre processus. Voici la comparaison synthétisée à partir de la documentation officielle :

Agent SDKManaged Agents
Lieu d'exécutionVotre propre processus, votre infrastructureInfrastructure gérée par Anthropic
InterfaceBibliothèque Python / TypeScriptAPI REST
Fichiers manipulésFichiers réels de votre machineBac à sable isolé pour chaque session
Idéal pourPrototypage local, agents devant manipuler directement votre système de fichiersProduction, pour s'affranchir de la gestion des bacs à sable et des sessions

Pour la majorité des utilisateurs, la démarche est claire : commencez par valider vos idées localement avec l'Agent SDK (comme à la section 06), puis envisagez de migrer vers les Managed Agents lorsque vous passerez en production avec des volumes importants et que vous souhaiterez vous affranchir de la gestion d'infrastructure. Le SDK est votre point de départ pour l'apprentissage et le prototypage, les agents managés constituent l'étape suivante pour la mise en production — pour l'instant, concentrez-vous sur la maîtrise de l'Agent SDK.

Dernier point : automatiser des processus manuels répétitifs avec des scripts basés sur le SDK — par exemple, analyser chaque semaine les dépendances obsolètes de plusieurs dépôts et générer automatiquement un rapport synthétique. La satisfaction de voir, le lendemain matin, un rapport généré automatiquement par un outil autonome que l'on a soi-même conçu est une expérience que le CLI ne peut pas vous offrir. Si vous faites face à des tâches manuelles répétitives, c'est le moment de vous tourner vers le SDK.

💡 Résumé en une phrase : Utilisation simple de Claude dans le terminal → CLI ; besoin d'automatiser un processus répétitif ou d'intégrer un agent actif dans un produit → SDK. La démarche recommandée est de débuter localement avec l'Agent SDK, puis de migrer vers les Managed Agents pour les besoins de production.


08 Synthèse

Dans cet article, nous avons exploré la « face cachée » de Claude Code — la possibilité d'intégrer son noyau sous forme de bibliothèque dans votre propre code via l'Agent SDK.

Récapitulatif des points clés :

QuestionRéponsePoint clé
Qu'est-ce que l'Agent SDKLe noyau de Claude Code sous forme de bibliothèqueOutils, boucle d'agent et gestion de contexte programmables
Relation avec le CLIMême noyau, deux entréesCLI interactif pour l'humain, SDK pour l'appel par programme ; concepts partagés
Différence avec l'API bruteResponsabilité de la boucle d'outilsL'API brute nécessite d'implémenter la boucle while, le SDK la gère pour vous
Choix du langageSelon le langage de votre projetTS (Node 18+) ou Python (3.10+), fonctionnalités équivalentes
Point d'entréequery()Prend en charge le prompt et les options, renvoie un flux de messages
Intérêt d'apprentissageSelon votre besoin d'automatisation/intégrationInutile pour un usage exclusif du CLI, recommandé pour l'automatisation

Vous êtes désormais capable de : expliquer simplement le rôle de l'Agent SDK, distinguer le SDK du CLI comme deux entrées d'un même noyau, différencier le SDK de l'API brute par la gestion de la boucle d'outils, choisir et installer la version TS ou Python appropriée, comprendre le fonctionnement de l'appel minimal à query() et mettre en œuvre un agent d'initiation capable de corriger un bug de manière autonome. Et surtout, vous savez s'il est opportun pour vous de commencer à l'utiliser.

Votre vision de Claude Code dépasse désormais le cadre du simple outil en ligne de commande pour englober un ensemble de capacités d'agent programmables et intégrables. Ce n'est plus seulement un outil à utiliser, c'est un composant pour vos propres créations.


L'article suivant 46 « Configuration de développement » aborde les aspects pratiques du développement d'agents au-delà du simple appel à query() : gestion sécurisée des clés d'API, distinction des configurations selon les environnements (développement / production), configuration des variables d'environnement pour l'utilisation de fournisseurs de modèles tiers... Toutes ces étapes de préparation indispensables y seront détaillées. Un agent fonctionnel en local mais incapable de contacter le modèle sur un serveur de production est souvent le signe d'un défaut de configuration — cet article vous évitera ces désagréments.


Lectures recommandées