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 | Échanges multiples 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 le chat | ❌ 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 :
- Questions ponctuelles où vous n’avez pas besoin de l’historique de conversation
- Tâches indépendantes qui ne nécessitent pas de contexte des échanges précédents
- Scripts d’automatisation simples
- Quand vous voulez un nouveau départ à 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 - Construire 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 à 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 comme chaîne ou itérable asynchrone pour le mode streaming |
options | ClaudeAgentOptions | None | Objet de configuration optionnel (par défaut ClaudeAgentOptions() si None) |
Retour
Retourne unAsyncIterator[Message]
qui produit des messages de la conversation.
Exemple - Avec options
tool()
Décorateur pour définir des outils MCP avec sécurité de type.
Paramètres
Paramètre | Type | Description |
---|---|---|
name | str | Identifiant unique pour l’outil |
description | str | Description lisible par l’humain 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 de schéma JSON (pour validation complexe) :
Retour
Une fonction décorateur qui encapsule 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 | 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 |
Retour
Retourne un objetMcpSdkServerConfig
qui peut être passé à ClaudeAgentOptions.mcp_servers
.
Exemple
Classes
ClaudeSDKClient
Maintient une session de conversation à travers 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 à travers plusieurs appels
query()
- Même conversation : Claude se souvient des messages précédents dans la session
- Support d’interruption : 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 et hooks personnalisés : 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 requête en mode streaming |
receive_messages() | Recevoir tous les messages de Claude comme un itérateur asynchrone |
receive_response() | Recevoir les messages jusqu’à et y compris un ResultMessage |
interrupt() | Envoyer un signal d’interruption (fonctionne seulement en mode streaming) |
disconnect() | Se déconnecter de Claude |
Support du gestionnaire de contexte
Le client peut être utilisé comme un 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 sortir prématurément 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 dont vous avez besoin.
Exemple - Continuer une conversation
Exemple - Entrée en streaming avec ClaudeSDKClient
Exemple - Utiliser les interruptions
Exemple - Contrôle de permission avancé
Types
SdkMcpTool
Définition pour un outil SDK MCP créé avec le décorateur @tool
.
Propriété | Type | Description |
---|---|---|
name | str | Identifiant unique pour l’outil |
description | str | Description lisible par l’humain |
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
Dataclass de configuration pour les requêtes Claude Code.
Propriété | Type | Défaut | Description |
---|---|---|---|
allowed_tools | list[str] | [] | Liste des noms d’outils autorisés |
max_thinking_tokens | int | 8000 | Tokens maximum pour le processus de réflexion |
system_prompt | str | None | None | Configuration du prompt système. Passez une chaîne pour un prompt personnalisé, ou utilisez le format prédéfini pour le prompt système de Claude Code |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | Configurations de serveur MCP ou chemin vers le fichier de configuration |
permission_mode | PermissionMode | None | None | Mode de permission pour l’utilisation d’outils |
continue_conversation | bool | False | Continuer la conversation la plus récente |
resume | str | None | None | ID de session à reprendre |
fork_session | bool | False | Lors de la reprise avec resume , bifurquer vers un nouvel ID de session au lieu de continuer la session originale |
max_turns | int | None | None | Tours de conversation maximum |
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 d’outil MCP pour les prompts de permission |
cwd | str | Path | None | None | Répertoire de travail actuel |
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 |
extra_args | dict[str, str | None] | {} | Arguments CLI supplémentaires à passer directement au 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 |
agents | dict[str, AgentDefinition] | None | None | Sous-agents définis programmatiquement |
setting_sources | list[SettingSource] | None | None (aucun paramètre) | Contrôler quels paramètres du système de fichiers le SDK charge. Quand omis, aucun paramètre n’est chargé |
SettingSource
Contrôle quelles sources de configuration basées sur le système de fichiers le SDK charge les paramètres.
Valeur | Description | Emplacement |
---|---|---|
"user" | Paramètres utilisateur globaux | ~/.claude/settings.json |
"project" | Paramètres de projet partagés (contrôlés par 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 aucun paramètre du système de fichiers. Cela fournit une 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 programmatiquement.
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 de modèle pour cet agent. Si omis, utilise le modèle principal |
PermissionMode
Modes de permission pour contrôler l’exécution d’outils.
McpSdkServerConfig
Configuration pour les serveurs SDK MCP créés avec create_sdk_mcp_server()
.
McpServerConfig
Type union pour les configurations de serveur MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
Types de messages
Message
Type union de tous les messages possibles.
UserMessage
Message d’entrée utilisateur.
AssistantMessage
Message de réponse assistant avec 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 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’erreurs
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 hooks
HookEvent
Types d’événements de hook supportés. Notez qu’en raison de 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 de hook avec 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 passées aux rappels de hook.
HookMatcher
Configuration pour faire correspondre les hooks à des événements ou outils spécifiques.
Exemple d’utilisation de hook
Types d’entrée/sortie d’outils
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 ceux-ci comme types, ils représentent la structure des entrées et sorties d’outils dans les messages.Task
Nom d’outil :Task
Entrée :
Bash
Nom d’outil :Bash
Entrée :
Edit
Nom d’outil :Edit
Entrée :
MultiEdit
Nom d’outil :MultiEdit
Entrée :
Read
Nom d’outil :Read
Entrée :
Write
Nom d’outil :Write
Entrée :
Glob
Nom d’outil :Glob
Entrée :
Grep
Nom d’outil :Grep
Entrée :
NotebookEdit
Nom d’outil :NotebookEdit
Entrée :
WebFetch
Nom d’outil :WebFetch
Entrée :
WebSearch
Nom d’outil :WebSearch
Entrée :
TodoWrite
Nom d’outil :TodoWrite
Entrée :
BashOutput
Nom d’outil :BashOutput
Entrée :
KillBash
Nom d’outil :KillBash
Entrée :
ExitPlanMode
Nom d’outil :ExitPlanMode
Entrée :
ListMcpResources
Nom d’outil :ListMcpResources
Entrée :
ReadMcpResource
Nom d’outil :ReadMcpResource
Entrée :
Fonctionnalités avancées avec ClaudeSDKClient
Construire une interface de conversation continue
Utiliser les hooks pour la modification de comportement
Surveillance de progression en temps réel
Exemple d’utilisation
Opérations de fichiers de base (utilisant query)
Gestion d’erreurs
Mode streaming avec client
Utiliser des 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 en ligne de commande
- Flux de travail courants - Guides étape par étape