Installation
Choisir entre query() et ClaudeSDKClient
Le SDK Python fournit deux façons d’interagir avec Claude Code :
Comparaison rapide
| Fonctionnalité | query() | ClaudeSDKClient |
|---|---|---|
| Session | Crée une nouvelle session à chaque fois | Réutilise la même session |
| Conversation | Échange unique | Plusieurs échanges dans le même contexte |
| Connexion | Gérée automatiquement | Contrôle manuel |
| Entrée en streaming | ✅ Supportée | ✅ Supportée |
| Interruptions | ❌ Non supportées | ✅ Supportées |
| Hooks | ❌ Non supportés | ✅ Supportés |
| Outils personnalisés | ❌ Non supportés | ✅ Supportés |
| Continuer la conversation | ❌ Nouvelle session à chaque fois | ✅ Maintient la conversation |
| Cas d’usage | Tâches ponctuelles | Conversations continues |
Quand utiliser query() (Nouvelle session à chaque fois)
Idéal pour :
- Les questions ponctuelles où vous n’avez pas besoin d’historique de conversation
- Les tâches indépendantes qui ne nécessitent pas de contexte des échanges précédents
- Les scripts d’automatisation simples
- Quand vous voulez un départ frais à chaque fois
Quand utiliser ClaudeSDKClient (Conversation continue)
Idéal pour :
- Continuer les conversations - Quand vous avez besoin que Claude se souvienne du contexte
- Questions de suivi - S’appuyer sur les réponses précédentes
- Applications interactives - Interfaces de chat, REPLs
- Logique basée sur les réponses - Quand l’action suivante dépend de la réponse de Claude
- Contrôle de session - Gérer explicitement le cycle de vie de la conversation
Fonctions
query()
Crée une nouvelle session pour chaque interaction avec Claude Code. Retourne un itérateur asynchrone qui produit des messages au fur et à mesure qu’ils arrivent. Chaque appel à query() commence de zéro sans mémoire des interactions précédentes.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
prompt | str | AsyncIterable[dict] | Le prompt d’entrée sous forme de chaîne ou d’itérable asynchrone pour le mode streaming |
options | ClaudeAgentOptions | None | Objet de configuration optionnel (par défaut ClaudeAgentOptions() si None) |
Retours
Retourne unAsyncIterator[Message] qui produit des messages de la conversation.
Exemple - Avec options
tool()
Décorateur pour définir les outils MCP avec la sécurité des types.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
name | str | Identifiant unique pour l’outil |
description | str | Description lisible de ce que fait l’outil |
input_schema | type | dict[str, Any] | Schéma définissant les paramètres d’entrée de l’outil (voir ci-dessous) |
Options de schéma d’entrée
-
Mappage de type simple (recommandé) :
-
Format JSON Schema (pour la validation complexe) :
Retours
Une fonction décorateur qui enveloppe l’implémentation de l’outil et retourne une instanceSdkMcpTool.
Exemple
create_sdk_mcp_server()
Créer un serveur MCP en processus qui s’exécute dans votre application Python.
Paramètres
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
name | str | - | Identifiant unique pour le serveur |
version | str | "1.0.0" | Chaîne de version du serveur |
tools | list[SdkMcpTool[Any]] | None | None | Liste des fonctions d’outils créées avec le décorateur @tool |
Retours
Retourne un objetMcpSdkServerConfig qui peut être passé à ClaudeAgentOptions.mcp_servers.
Exemple
Classes
ClaudeSDKClient
Maintient une session de conversation sur plusieurs échanges. C’est l’équivalent Python de la façon dont la fonction query() du SDK TypeScript fonctionne en interne - elle crée un objet client qui peut continuer les conversations.
Fonctionnalités clés
- Continuité de session : Maintient le contexte de conversation sur plusieurs appels
query() - Même conversation : Claude se souvient des messages précédents dans la session
- Support des interruptions : Peut arrêter Claude en cours d’exécution
- Cycle de vie explicite : Vous contrôlez quand la session commence et se termine
- Flux basé sur les réponses : Peut réagir aux réponses et envoyer des suivis
- Outils personnalisés et hooks : Supporte les outils personnalisés (créés avec le décorateur
@tool) et les hooks
Méthodes
| Méthode | Description |
|---|---|
__init__(options) | Initialiser le client avec une configuration optionnelle |
connect(prompt) | Se connecter à Claude avec un prompt initial optionnel ou un flux de messages |
query(prompt, session_id) | Envoyer une nouvelle demande en mode streaming |
receive_messages() | Recevoir tous les messages de Claude sous forme d’itérateur asynchrone |
receive_response() | Recevoir les messages jusqu’à et y compris un ResultMessage |
interrupt() | Envoyer un signal d’interruption (fonctionne uniquement en mode streaming) |
disconnect() | Se déconnecter de Claude |
Support du gestionnaire de contexte
Le client peut être utilisé comme gestionnaire de contexte asynchrone pour la gestion automatique de la connexion :
Important : Lors de l’itération sur les messages, évitez d’utiliser break pour quitter tôt car cela peut causer des problèmes de nettoyage asyncio. À la place, laissez l’itération se terminer naturellement ou utilisez des drapeaux pour suivre quand vous avez trouvé ce que vous cherchiez.
Exemple - Continuer une conversation
Exemple - Entrée en streaming avec ClaudeSDKClient
Exemple - Utiliser les interruptions
Exemple - Contrôle des permissions avancé
Types
SdkMcpTool
Définition pour un outil MCP SDK créé avec le décorateur @tool.
| Propriété | Type | Description |
|---|---|---|
name | str | Identifiant unique pour l’outil |
description | str | Description lisible |
input_schema | type[T] | dict[str, Any] | Schéma pour la validation d’entrée |
handler | Callable[[T], Awaitable[dict[str, Any]]] | Fonction asynchrone qui gère l’exécution de l’outil |
ClaudeAgentOptions
Classe de configuration pour les requêtes Claude Code.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
allowed_tools | list[str] | [] | Liste des noms d’outils autorisés |
system_prompt | str | SystemPromptPreset | None | None | Configuration du prompt système. Passez une chaîne pour un prompt personnalisé, ou utilisez {"type": "preset", "preset": "claude_code"} pour le prompt système de Claude Code. Ajoutez "append" pour étendre le preset |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | Configurations du serveur MCP ou chemin vers le fichier de configuration |
permission_mode | PermissionMode | None | None | Mode de permission pour l’utilisation des outils |
continue_conversation | bool | False | Continuer la conversation la plus récente |
resume | str | None | None | ID de session à reprendre |
max_turns | int | None | None | Nombre maximum de tours de conversation |
disallowed_tools | list[str] | [] | Liste des noms d’outils non autorisés |
model | str | None | None | Modèle Claude à utiliser |
permission_prompt_tool_name | str | None | None | Nom de l’outil MCP pour les prompts de permission |
cwd | str | Path | None | None | Répertoire de travail courant |
settings | str | None | None | Chemin vers le fichier de paramètres |
add_dirs | list[str | Path] | [] | Répertoires supplémentaires auxquels Claude peut accéder |
env | dict[str, str] | {} | Variables d’environnement |
extra_args | dict[str, str | None] | {} | Arguments CLI supplémentaires à passer directement à la CLI |
max_buffer_size | int | None | None | Nombre maximum d’octets lors de la mise en mémoire tampon de la sortie CLI stdout |
debug_stderr | Any | sys.stderr | Déprécié - Objet de type fichier pour la sortie de débogage. Utilisez plutôt le rappel stderr |
stderr | Callable[[str], None] | None | None | Fonction de rappel pour la sortie stderr de la CLI |
can_use_tool | CanUseTool | None | None | Fonction de rappel de permission d’outil |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | Configurations de hook pour intercepter les événements |
user | str | None | None | Identifiant utilisateur |
include_partial_messages | bool | False | Inclure les événements de streaming de messages partiels |
fork_session | bool | False | Lors de la reprise avec resume, bifurquer vers un nouvel ID de session au lieu de continuer la session d’origine |
agents | dict[str, AgentDefinition] | None | None | Sous-agents définis par programmation |
plugins | list[SdkPluginConfig] | [] | Charger les plugins personnalisés à partir de chemins locaux. Voir Plugins pour plus de détails |
setting_sources | list[SettingSource] | None | None (pas de paramètres) | Contrôler les paramètres du système de fichiers à charger. Lorsqu’omis, aucun paramètre n’est chargé. Remarque : Doit inclure "project" pour charger les fichiers CLAUDE.md |
SystemPromptPreset
Configuration pour utiliser le prompt système preset de Claude Code avec des ajouts optionnels.
| Champ | Requis | Description |
|---|---|---|
type | Oui | Doit être "preset" pour utiliser un prompt système preset |
preset | Oui | Doit être "claude_code" pour utiliser le prompt système de Claude Code |
append | Non | Instructions supplémentaires à ajouter au prompt système preset |
SettingSource
Contrôle les sources de configuration basées sur le système de fichiers que le SDK charge.
| Valeur | Description | Emplacement |
|---|---|---|
"user" | Paramètres utilisateur globaux | ~/.claude/settings.json |
"project" | Paramètres de projet partagés (contrôle de version) | .claude/settings.json |
"local" | Paramètres de projet locaux (gitignorés) | .claude/settings.local.json |
Comportement par défaut
Quandsetting_sources est omis ou None, le SDK ne charge pas les paramètres du système de fichiers. Cela fournit l’isolation pour les applications SDK.
Pourquoi utiliser setting_sources ?
Charger tous les paramètres du système de fichiers (comportement hérité) :Précédence des paramètres
Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (du plus élevé au plus bas) :- Paramètres locaux (
.claude/settings.local.json) - Paramètres de projet (
.claude/settings.json) - Paramètres utilisateur (
~/.claude/settings.json)
agents, allowed_tools) remplacent toujours les paramètres du système de fichiers.
AgentDefinition
Configuration pour un sous-agent défini par programmation.
| Champ | Requis | Description |
|---|---|---|
description | Oui | Description en langage naturel de quand utiliser cet agent |
tools | Non | Tableau des noms d’outils autorisés. Si omis, hérite de tous les outils |
prompt | Oui | Le prompt système de l’agent |
model | Non | Remplacement du modèle pour cet agent. Si omis, utilise le modèle principal |
PermissionMode
Modes de permission pour contrôler l’exécution des outils.
McpSdkServerConfig
Configuration pour les serveurs MCP SDK créés avec create_sdk_mcp_server().
McpServerConfig
Type d’union pour les configurations du serveur MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
SdkPluginConfig
Configuration pour charger les plugins dans le SDK.
| Champ | Type | Description |
|---|---|---|
type | Literal["local"] | Doit être "local" (seuls les plugins locaux sont actuellement supportés) |
path | str | Chemin absolu ou relatif vers le répertoire du plugin |
Types de messages
Message
Type d’union de tous les messages possibles.
UserMessage
Message d’entrée utilisateur.
AssistantMessage
Message de réponse de l’assistant avec des blocs de contenu.
SystemMessage
Message système avec métadonnées.
ResultMessage
Message de résultat final avec informations de coût et d’utilisation.
Types de blocs de contenu
ContentBlock
Type d’union de tous les blocs de contenu.
TextBlock
Bloc de contenu texte.
ThinkingBlock
Bloc de contenu de réflexion (pour les modèles avec capacité de réflexion).
ToolUseBlock
Bloc de demande d’utilisation d’outil.
ToolResultBlock
Bloc de résultat d’exécution d’outil.
Types d’erreur
ClaudeSDKError
Classe d’exception de base pour toutes les erreurs SDK.
CLINotFoundError
Levée quand Claude Code CLI n’est pas installé ou introuvable.
CLIConnectionError
Levée quand la connexion à Claude Code échoue.
ProcessError
Levée quand le processus Claude Code échoue.
CLIJSONDecodeError
Levée quand l’analyse JSON échoue.
Types de hook
HookEvent
Types d’événements de hook supportés. Notez que en raison des limitations de configuration, le SDK Python ne supporte pas les hooks SessionStart, SessionEnd et Notification.
HookCallback
Définition de type pour les fonctions de rappel de hook.
input_data: Données d’entrée spécifiques au hook (voir documentation des hooks)tool_use_id: Identifiant d’utilisation d’outil optionnel (pour les hooks liés aux outils)context: Contexte du hook avec des informations supplémentaires
decision:"block"pour bloquer l’actionsystemMessage: Message système à ajouter à la transcriptionhookSpecificOutput: Données de sortie spécifiques au hook
HookContext
Informations de contexte transmises aux rappels de hook.
HookMatcher
Configuration pour faire correspondre les hooks à des événements ou des outils spécifiques.
Exemple d’utilisation de hook
Types d’entrée/sortie d’outil
Documentation des schémas d’entrée/sortie pour tous les outils Claude Code intégrés. Bien que le SDK Python n’exporte pas ces types, ils représentent la structure des entrées et sorties d’outils dans les messages.Task
Nom de l’outil :Task
Entrée :
Bash
Nom de l’outil :Bash
Entrée :
Edit
Nom de l’outil :Edit
Entrée :
Read
Nom de l’outil :Read
Entrée :
Write
Nom de l’outil :Write
Entrée :
Glob
Nom de l’outil :Glob
Entrée :
Grep
Nom de l’outil :Grep
Entrée :
NotebookEdit
Nom de l’outil :NotebookEdit
Entrée :
WebFetch
Nom de l’outil :WebFetch
Entrée :
WebSearch
Nom de l’outil :WebSearch
Entrée :
TodoWrite
Nom de l’outil :TodoWrite
Entrée :
BashOutput
Nom de l’outil :BashOutput
Entrée :
KillBash
Nom de l’outil :KillBash
Entrée :
ExitPlanMode
Nom de l’outil :ExitPlanMode
Entrée :
ListMcpResources
Nom de l’outil :ListMcpResources
Entrée :
ReadMcpResource
Nom de l’outil :ReadMcpResource
Entrée :
Fonctionnalités avancées avec ClaudeSDKClient
Construire une interface de conversation continue
Utiliser les hooks pour la modification du comportement
Surveillance de la progression en temps réel
Exemple d’utilisation
Opérations de fichiers de base (utilisant query)
Gestion des erreurs
Mode streaming avec client
Utiliser les outils personnalisés avec ClaudeSDKClient
Voir aussi
- Guide du SDK Python - Tutoriel et exemples
- Aperçu du SDK - Concepts généraux du SDK
- Référence du SDK TypeScript - Documentation du SDK TypeScript
- Référence CLI - Interface de ligne de commande
- Flux de travail courants - Guides étape par étape