Utilisez le SDK Agent pour créer un agent IA qui lit votre code, trouve les bugs et les corrige, tout sans intervention manuelle.
Ce que vous allez faire :
Installer Claude Code
Le SDK Agent utilise Claude Code comme runtime. Installez-le pour votre plateforme :
Après avoir installé Claude Code sur votre machine, exécutez claude dans votre terminal et suivez les invites pour vous authentifier. Le SDK utilisera cette authentification automatiquement.
Pour plus d'informations sur l'installation de Claude Code, consultez Configuration de Claude Code.
Créer un dossier de projet
Créez un nouveau répertoire pour ce démarrage rapide :
mkdir my-agent && cd my-agentPour vos propres projets, vous pouvez exécuter le SDK à partir de n'importe quel dossier ; il aura accès aux fichiers de ce répertoire et de ses sous-répertoires par défaut.
Installer le SDK
Installez le package SDK Agent pour votre langage :
Définir votre clé API
Si vous avez déjà authentifié Claude Code (en exécutant claude dans votre terminal), le SDK utilise cette authentification automatiquement.
Sinon, vous avez besoin d'une clé API, que vous pouvez obtenir à partir de la Console Anthropic.
Créez un fichier .env dans votre répertoire de projet et stockez-y la clé API :
ANTHROPIC_API_KEY=your-api-keyUtilisez Amazon Bedrock, Google Vertex AI ou Microsoft Azure ? Consultez les guides de configuration pour Bedrock, Vertex AI, ou Azure AI Foundry.
Sauf approbation préalable, nous n'autorisons pas les développeurs tiers à proposer la connexion Claude.ai ou les limites de débit pour leurs produits, y compris les agents construits sur le SDK Agent Claude. Veuillez plutôt utiliser les méthodes d'authentification par clé API décrites dans ce document.
Ce démarrage rapide vous guide dans la création d'un agent capable de trouver et corriger les bugs dans le code. D'abord, vous avez besoin d'un fichier avec quelques bugs intentionnels pour que l'agent les corrige. Créez utils.py dans le répertoire my-agent et collez le code suivant :
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()Ce code a deux bugs :
calculate_average([]) plante avec une division par zéroget_user_name(None) plante avec une TypeErrorCréez agent.py si vous utilisez le SDK Python, ou agent.ts pour TypeScript :
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
# Agentic loop: streams messages as Claude works
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"], # Tools Claude can use
permission_mode="acceptEdits" # Auto-approve file edits
)
):
# Print human-readable output
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text) # Claude's reasoning
elif hasattr(block, "name"):
print(f"Tool: {block.name}") # Tool being called
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}") # Final result
asyncio.run(main())Ce code a trois parties principales :
query : le point d'entrée principal qui crée la boucle agentic. Il retourne un itérateur asynchrone, donc vous utilisez async for pour diffuser les messages au fur et à mesure que Claude travaille. Consultez l'API complète dans la référence du SDK Python ou TypeScript.
prompt : ce que vous voulez que Claude fasse. Claude détermine les outils à utiliser en fonction de la tâche.
options : configuration de l'agent. Cet exemple utilise allowedTools pour restreindre Claude à Read, Edit et Glob, et permissionMode: "acceptEdits" pour approuver automatiquement les modifications de fichiers. Les autres options incluent systemPrompt, mcpServers, et plus. Consultez toutes les options pour Python ou TypeScript.
La boucle async for continue de s'exécuter tandis que Claude réfléchit, appelle des outils, observe les résultats et décide quoi faire ensuite. Chaque itération produit un message : le raisonnement de Claude, un appel d'outil, un résultat d'outil, ou le résultat final. Le SDK gère l'orchestration (exécution des outils, gestion du contexte, tentatives) afin que vous consommiez simplement le flux. La boucle se termine lorsque Claude termine la tâche ou rencontre une erreur.
La gestion des messages à l'intérieur de la boucle filtre pour obtenir une sortie lisible par l'homme. Sans filtrage, vous verriez des objets de message bruts incluant l'initialisation du système et l'état interne, ce qui est utile pour le débogage mais bruyant autrement.
Cet exemple utilise la diffusion en continu pour afficher la progression en temps réel. Si vous n'avez pas besoin de sortie en direct (par exemple, pour les tâches en arrière-plan ou les pipelines CI), vous pouvez collecter tous les messages à la fois. Consultez Mode diffusion en continu vs mode à tour unique pour plus de détails.
Votre agent est prêt. Exécutez-le avec la commande suivante :
python3 agent.pyAprès l'exécution, vérifiez utils.py. Vous verrez du code défensif gérant les listes vides et les utilisateurs nuls. Votre agent a autonomement :
utils.py pour comprendre le codeC'est ce qui rend le SDK Agent différent : Claude exécute les outils directement au lieu de vous demander de les implémenter.
Si vous voyez « Claude Code not found », installez Claude Code et redémarrez votre terminal. Pour « API key not found », définissez votre clé API. Consultez le guide complet de dépannage pour plus d'aide.
Maintenant que votre agent est configuré, essayez quelques invites différentes :
"Add docstrings to all functions in utils.py""Add type hints to all functions in utils.py""Create a README.md documenting the functions in utils.py"Vous pouvez modifier le comportement de votre agent en changeant les options. Voici quelques exemples :
Ajouter la capacité de recherche web :
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "WebSearch"],
permission_mode="acceptEdits"
)Donner à Claude une invite système personnalisée :
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits",
system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines."
)Exécuter des commandes dans le terminal :
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "Bash"],
permission_mode="acceptEdits"
)Avec Bash activé, essayez : "Write unit tests for utils.py, run them, and fix any failures"
Les outils contrôlent ce que votre agent peut faire :
| Outils | Ce que l'agent peut faire |
|---|---|
Read, Glob, Grep | Analyse en lecture seule |
Read, Edit, Glob | Analyser et modifier le code |
Read, Edit, Bash, Glob, Grep | Automatisation complète |
Les modes de permission contrôlent le niveau de surveillance humaine que vous souhaitez :
| Mode | Comportement | Cas d'usage |
|---|---|---|
acceptEdits | Approuve automatiquement les modifications de fichiers, demande d'autres actions | Flux de travail de développement de confiance |
bypassPermissions | S'exécute sans invites | Pipelines CI/CD, automatisation |
default | Nécessite un rappel canUseTool pour gérer l'approbation | Flux d'approbation personnalisés |
L'exemple ci-dessus utilise le mode acceptEdits, qui approuve automatiquement les opérations de fichiers afin que l'agent puisse s'exécuter sans invites interactives. Si vous souhaitez inviter les utilisateurs à approuver, utilisez le mode default et fournissez un rappel canUseTool qui collecte l'entrée de l'utilisateur. Pour plus de contrôle, consultez Permissions.
Maintenant que vous avez créé votre premier agent, apprenez comment étendre ses capacités et l'adapter à votre cas d'usage :