SDK Claude Code
Apprenez à intégrer programmatiquement Claude Code dans vos applications avec le SDK Claude Code.
Le SDK Claude Code permet d’exécuter Claude Code en tant que sous-processus, fournissant un moyen de construire des assistants de codage et des outils alimentés par l’IA qui exploitent les capacités de Claude.
Le SDK est disponible pour l’utilisation en ligne de commande, TypeScript et Python.
Authentification
Pour utiliser le SDK Claude Code, nous recommandons de créer une clé API dédiée :
- Créez une clé API Anthropic dans la Console Anthropic
- Ensuite, définissez la variable d’environnement
ANTHROPIC_API_KEY
. Nous recommandons de stocker cette clé de manière sécurisée (par exemple, en utilisant un secret Github)
Utilisation de base du SDK
Le SDK Claude Code vous permet d’utiliser Claude Code en mode non-interactif depuis vos applications.
Ligne de commande
Voici quelques exemples de base pour le SDK en ligne de commande :
TypeScript
Le SDK TypeScript est inclus dans le package principal @anthropic-ai/claude-code
sur NPM :
Le SDK TypeScript accepte tous les arguments pris en charge par le SDK en ligne de commande, ainsi que :
Argument | Description | Par défaut |
---|---|---|
abortController | Contrôleur d’abandon | new AbortController() |
cwd | Répertoire de travail actuel | process.cwd() |
executable | Quel runtime JavaScript utiliser | node lors de l’exécution avec Node.js, bun lors de l’exécution avec Bun |
executableArgs | Arguments à passer à l’exécutable | [] |
pathToClaudeCodeExecutable | Chemin vers l’exécutable Claude Code | Exécutable livré avec @anthropic-ai/claude-code |
Python
Le SDK Python est disponible sous claude-code-sdk
sur PyPI :
Prérequis :
- Python 3.10+
- Node.js
- CLI Claude Code :
npm install -g @anthropic-ai/claude-code
Utilisation de base :
Le SDK Python accepte tous les arguments pris en charge par le SDK en ligne de commande via la classe ClaudeCodeOptions
:
Utilisation avancée
La documentation ci-dessous utilise le SDK en ligne de commande comme exemple, mais peut également être utilisée avec les SDK TypeScript et Python.
Conversations multi-tours
Pour les conversations multi-tours, vous pouvez reprendre des conversations ou continuer à partir de la session la plus récente :
Invites système personnalisées
Vous pouvez fournir des invites système personnalisées pour guider le comportement de Claude :
Vous pouvez également ajouter des instructions à l’invite système par défaut :
Configuration MCP
Le Model Context Protocol (MCP) vous permet d’étendre Claude Code avec des outils et des ressources supplémentaires provenant de serveurs externes. En utilisant le flag --mcp-config
, vous pouvez charger des serveurs MCP qui fournissent des capacités spécialisées comme l’accès aux bases de données, les intégrations d’API ou les outils personnalisés.
Créez un fichier de configuration JSON avec vos serveurs MCP :
Ensuite, utilisez-le avec Claude Code :
Lors de l’utilisation d’outils MCP, vous devez les autoriser explicitement en utilisant le flag --allowedTools
. Les noms d’outils MCP suivent le modèle mcp__<serverName>__<toolName>
où :
serverName
est la clé de votre fichier de configuration MCPtoolName
est l’outil spécifique fourni par ce serveur
Cette mesure de sécurité garantit que les outils MCP ne sont utilisés que lorsqu’ils sont explicitement autorisés.
Si vous spécifiez seulement le nom du serveur (c’est-à-dire mcp__<serverName>
), tous les outils de ce serveur seront autorisés.
Les modèles glob (par exemple, mcp__go*
) ne sont pas pris en charge.
Outil d’invite de permission personnalisé
Optionnellement, utilisez --permission-prompt-tool
pour passer un outil MCP que nous utiliserons pour vérifier si l’utilisateur accorde ou non au modèle les permissions d’invoquer un outil donné. Lorsque le modèle invoque un outil, voici ce qui se passe :
- Nous vérifions d’abord les paramètres de permission : tous les fichiers settings.json, ainsi que
--allowedTools
et--disallowedTools
passés dans le SDK ; si l’un de ceux-ci autorise ou refuse l’appel d’outil, nous procédons à l’appel d’outil - Sinon, nous invoquons l’outil MCP que vous avez fourni dans
--permission-prompt-tool
L’outil MCP --permission-prompt-tool
reçoit le nom de l’outil et l’entrée, et doit retourner une charge utile JSON-stringifiée avec le résultat. La charge utile doit être l’une des suivantes :
Par exemple, une implémentation d’outil d’invite de permission MCP TypeScript pourrait ressembler à ceci :
Pour utiliser cet outil, ajoutez votre serveur MCP (par exemple avec --mcp-config
), puis invoquez le SDK comme ceci :
Notes d’utilisation :
- Utilisez
updatedInput
pour dire au modèle que l’invite de permission a muté son entrée ; sinon, définissezupdatedInput
sur l’entrée originale, comme dans l’exemple ci-dessus. Par exemple, si l’outil montre un diff d’édition de fichier à l’utilisateur et lui permet d’éditer le diff manuellement, l’outil d’invite de permission devrait retourner cette édition mise à jour. - La charge utile doit être JSON-stringifiée
Options CLI disponibles
Le SDK exploite toutes les options CLI disponibles dans Claude Code. Voici les principales pour l’utilisation du SDK :
Flag | Description | Exemple |
---|---|---|
--print , -p | Exécuter en mode non-interactif | claude -p "requête" |
--output-format | Spécifier le format de sortie (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Reprendre une conversation par ID de session | claude --resume abc123 |
--continue , -c | Continuer la conversation la plus récente | claude --continue |
--verbose | Activer la journalisation détaillée | claude --verbose |
--max-turns | Limiter les tours agentiques en mode non-interactif | claude --max-turns 3 |
--system-prompt | Remplacer l’invite système (uniquement avec --print ) | claude --system-prompt "Instruction personnalisée" |
--append-system-prompt | Ajouter à l’invite système (uniquement avec --print ) | claude --append-system-prompt "Instruction personnalisée" |
--allowedTools | Liste séparée par des espaces d’outils autorisés, ou chaîne de liste séparée par des virgules d’outils autorisés | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Liste séparée par des espaces d’outils refusés, ou chaîne de liste séparée par des virgules d’outils refusés | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | Charger les serveurs MCP à partir d’un fichier JSON | claude --mcp-config servers.json |
--permission-prompt-tool | Outil MCP pour gérer les invites de permission (uniquement avec --print ) | claude --permission-prompt-tool mcp__auth__prompt |
Pour une liste complète des options CLI et des fonctionnalités, consultez la documentation de référence CLI.
Formats de sortie
Le SDK prend en charge plusieurs formats de sortie :
Sortie texte (par défaut)
Retourne seulement le texte de réponse :
Sortie JSON
Retourne des données structurées incluant les métadonnées :
Format de réponse :
Sortie JSON en streaming
Diffuse chaque message au fur et à mesure qu’il est reçu :
Chaque conversation commence par un message système init
initial, suivi d’une liste de messages utilisateur et assistant, suivi d’un message système result
final avec les statistiques. Chaque message est émis comme un objet JSON séparé.
Schéma de message
Les messages retournés par l’API JSON sont strictement typés selon le schéma suivant :
Nous publierons bientôt ces types dans un format compatible JSONSchema. Nous utilisons la versioning sémantique pour le package principal Claude Code pour communiquer les changements cassants à ce format.
Les types Message
et MessageParam
sont disponibles dans les SDK Anthropic. Par exemple, consultez les SDK Anthropic TypeScript et Python.
Formats d’entrée
Le SDK prend en charge plusieurs formats d’entrée :
Entrée texte (par défaut)
Le texte d’entrée peut être fourni comme argument :
Ou le texte d’entrée peut être transmis via stdin :
Entrée JSON en streaming
Un flux de messages fourni via stdin
où chaque message représente un tour utilisateur. Cela permet plusieurs tours d’une conversation sans relancer le binaire claude
et permet de fournir des conseils au modèle pendant qu’il traite une demande.
Chaque message est un objet JSON ‘Message utilisateur’, suivant le même format que le schéma de message de sortie. Les messages sont formatés en utilisant le format jsonl où chaque ligne d’entrée est un objet JSON complet. L’entrée JSON en streaming nécessite -p
et --output-format stream-json
.
Actuellement, ceci est limité aux messages utilisateur texte uniquement.
Exemples
Intégration de script simple
Traitement de fichiers avec Claude
Gestion de session
Meilleures pratiques
-
Utilisez le format de sortie JSON pour l’analyse programmatique des réponses :
-
Gérez les erreurs avec élégance - vérifiez les codes de sortie et stderr :
-
Utilisez la gestion de session pour maintenir le contexte dans les conversations multi-tours
-
Considérez les timeouts pour les opérations de longue durée :
-
Respectez les limites de taux lors de multiples requêtes en ajoutant des délais entre les appels
Applications du monde réel
Le SDK Claude Code permet des intégrations puissantes avec votre flux de travail de développement. Un exemple notable est les Actions GitHub Claude Code, qui utilise le SDK pour fournir des capacités de revue de code automatisée, de création de PR et de triage de problèmes directement dans votre flux de travail GitHub.
Ressources connexes
- Utilisation et contrôles CLI - Documentation CLI complète
- Intégration GitHub Actions - Automatisez votre flux de travail GitHub avec Claude
- Flux de travail courants - Guides étape par étape pour les cas d’usage courants