Funktionen
query()
Die primäre asynchrone Funktion für die Interaktion mit Claude Code. Gibt einen asynchronen Iterator zurück, der Nachrichten liefert, sobald sie eintreffen.
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
prompt | str | AsyncIterable[dict] | Der Eingabeprompt als String oder asynchrones Iterable für den Streaming-Modus |
options | ClaudeCodeOptions | None | Optionales Konfigurationsobjekt (standardmäßig ClaudeCodeOptions() wenn None) |
Rückgabe
Gibt einenAsyncIterator[Message]
zurück, der Nachrichten aus der Unterhaltung liefert.
Beispiel - Einfache Abfrage
Beispiel - Mit Optionen
tool()
Dekorator zur Definition von MCP-Tools mit Typsicherheit.
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
name | str | Eindeutige Kennung für das Tool |
description | str | Menschenlesbare Beschreibung dessen, was das Tool tut |
input_schema | type | dict[str, Any] | Schema zur Definition der Eingabeparameter des Tools (siehe unten) |
Eingabeschema-Optionen
-
Einfache Typ-Zuordnung (empfohlen):
-
JSON-Schema-Format (für komplexe Validierung):
Rückgabe
Eine Dekoratorfunktion, die die Tool-Implementierung umhüllt und eineSdkMcpTool
-Instanz zurückgibt.
Beispiel
create_sdk_mcp_server()
Erstellt einen In-Process-MCP-Server, der innerhalb Ihrer Python-Anwendung läuft.
Parameter
Parameter | Typ | Standard | Beschreibung |
---|---|---|---|
name | str | - | Eindeutige Kennung für den Server |
version | str | "1.0.0" | Server-Versionsstring |
tools | list[SdkMcpTool[Any]] | None | None | Liste von Tool-Funktionen, die mit dem @tool -Dekorator erstellt wurden |
Rückgabe
Gibt einMcpSdkServerConfig
-Objekt zurück, das an ClaudeCodeOptions.mcp_servers
übergeben werden kann.
Beispiel
Klassen
ClaudeSDKClient
Client für bidirektionale, interaktive Unterhaltungen mit Claude Code. Bietet vollständige Kontrolle über den Unterhaltungsfluss mit Unterstützung für Streaming, Unterbrechungen und dynamisches Senden von Nachrichten.
Methoden
Methode | Beschreibung |
---|---|
__init__(options) | Initialisiert den Client mit optionaler Konfiguration |
connect(prompt) | Verbindet sich mit Claude mit einem optionalen anfänglichen Prompt oder Nachrichtenstrom |
query(prompt, session_id) | Sendet eine neue Anfrage im Streaming-Modus |
receive_messages() | Empfängt alle Nachrichten von Claude als asynchronen Iterator |
receive_response() | Empfängt Nachrichten bis einschließlich einer ResultMessage |
interrupt() | Sendet Unterbrechungssignal (funktioniert nur im Streaming-Modus) |
disconnect() | Trennt die Verbindung zu Claude |
Unterstützung für Context Manager
Der Client kann als asynchroner Context Manager für automatische Verbindungsverwaltung verwendet werden:
Wichtig: Vermeiden Sie beim Iterieren über Nachrichten die Verwendung von break
für einen vorzeitigen Ausstieg, da dies zu asyncio-Bereinigungsproblemen führen kann. Lassen Sie stattdessen die Iteration natürlich abschließen oder verwenden Sie Flags, um zu verfolgen, wann Sie gefunden haben, was Sie brauchen.
Beispiel - Interaktive Unterhaltung
Typen
SdkMcpTool
Definition für ein SDK-MCP-Tool, das mit dem @tool
-Dekorator erstellt wurde.
Eigenschaft | Typ | Beschreibung |
---|---|---|
name | str | Eindeutige Kennung für das Tool |
description | str | Menschenlesbare Beschreibung |
input_schema | type[T] | dict[str, Any] | Schema für Eingabevalidierung |
handler | Callable[[T], Awaitable[dict[str, Any]]] | Asynchrone Funktion, die die Tool-Ausführung behandelt |
ClaudeCodeOptions
Konfigurationsdatenklasse für Claude Code-Abfragen.
Eigenschaft | Typ | Standard | Beschreibung |
---|---|---|---|
allowed_tools | list[str] | [] | Liste der erlaubten Tool-Namen |
max_thinking_tokens | int | 8000 | Maximale Token für den Denkprozess |
system_prompt | str | None | None | Ersetzt den Standard-System-Prompt vollständig |
append_system_prompt | str | None | None | Text, der an den Standard-System-Prompt angehängt wird |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | MCP-Server-Konfigurationen oder Pfad zur Konfigurationsdatei |
permission_mode | PermissionMode | None | None | Berechtigungsmodus für Tool-Nutzung |
continue_conversation | bool | False | Setzt die neueste Unterhaltung fort |
resume | str | None | None | Session-ID zum Fortsetzen |
max_turns | int | None | None | Maximale Unterhaltungsrunden |
disallowed_tools | list[str] | [] | Liste der nicht erlaubten Tool-Namen |
model | str | None | None | Zu verwendendes Claude-Modell |
permission_prompt_tool_name | str | None | None | MCP-Tool-Name für Berechtigungsprompts |
cwd | str | Path | None | None | Aktuelles Arbeitsverzeichnis |
settings | str | None | None | Pfad zur Einstellungsdatei |
add_dirs | list[str | Path] | [] | Zusätzliche Verzeichnisse, auf die Claude zugreifen kann |
extra_args | dict[str, str | None] | {} | Zusätzliche CLI-Argumente, die direkt an die CLI übergeben werden |
can_use_tool | CanUseTool | None | None | Tool-Berechtigungs-Callback-Funktion |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | Hook-Konfigurationen zum Abfangen von Ereignissen |
PermissionMode
Berechtigungsmodi zur Kontrolle der Tool-Ausführung.
McpSdkServerConfig
Konfiguration für SDK-MCP-Server, die mit create_sdk_mcp_server()
erstellt wurden.
McpServerConfig
Union-Typ für MCP-Server-Konfigurationen.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
Nachrichtentypen
Message
Union-Typ aller möglichen Nachrichten.
UserMessage
Benutzereingabe-Nachricht.
AssistantMessage
Assistenten-Antwortnachricht mit Inhaltsblöcken.
SystemMessage
System-Nachricht mit Metadaten.
ResultMessage
Abschließende Ergebnisnachricht mit Kosten- und Nutzungsinformationen.
Inhaltsblocktypen
ContentBlock
Union-Typ aller Inhaltsblöcke.
TextBlock
Text-Inhaltsblock.
ThinkingBlock
Denk-Inhaltsblock (für Modelle mit Denkfähigkeit).
ToolUseBlock
Tool-Verwendungsanfrage-Block.
ToolResultBlock
Tool-Ausführungsergebnis-Block.
Fehlertypen
ClaudeSDKError
Basis-Exception-Klasse für alle SDK-Fehler.
CLINotFoundError
Wird ausgelöst, wenn Claude Code CLI nicht installiert oder nicht gefunden wird.
CLIConnectionError
Wird ausgelöst, wenn die Verbindung zu Claude Code fehlschlägt.
ProcessError
Wird ausgelöst, wenn der Claude Code-Prozess fehlschlägt.
CLIJSONDecodeError
Wird ausgelöst, wenn das JSON-Parsing fehlschlägt.
Hook-Typen
HookEvent
Unterstützte Hook-Ereignistypen. Beachten Sie, dass das Python SDK aufgrund von Setup-Einschränkungen keine SessionStart-, SessionEnd- und Notification-Hooks unterstützt.
HookCallback
Typdefinition für Hook-Callback-Funktionen.
input_data
: Hook-spezifische Eingabedaten (siehe Hook-Dokumentation)tool_use_id
: Optionale Tool-Verwendungskennung (für tool-bezogene Hooks)context
: Hook-Kontext mit zusätzlichen Informationen
decision
:"block"
um die Aktion zu blockierensystemMessage
: System-Nachricht zum Hinzufügen zum TranskripthookSpecificOutput
: Hook-spezifische Ausgabedaten
HookContext
Kontextinformationen, die an Hook-Callbacks übergeben werden.
HookMatcher
Konfiguration zum Zuordnen von Hooks zu bestimmten Ereignissen oder Tools.
Hook-Verwendungsbeispiel
Tool-Eingabe-/Ausgabetypen
Dokumentation der Eingabe-/Ausgabeschemata für alle eingebauten Claude Code-Tools. Obwohl das Python SDK diese nicht als Typen exportiert, repräsentieren sie die Struktur von Tool-Eingaben und -Ausgaben in Nachrichten.Task
Tool-Name:Task
Eingabe:
Bash
Tool-Name:Bash
Eingabe:
Edit
Tool-Name:Edit
Eingabe:
MultiEdit
Tool-Name:MultiEdit
Eingabe:
Read
Tool-Name:Read
Eingabe:
Write
Tool-Name:Write
Eingabe:
Glob
Tool-Name:Glob
Eingabe:
Grep
Tool-Name:Grep
Eingabe:
NotebookEdit
Tool-Name:NotebookEdit
Eingabe:
WebFetch
Tool-Name:WebFetch
Eingabe:
WebSearch
Tool-Name:WebSearch
Eingabe:
TodoWrite
Tool-Name:TodoWrite
Eingabe:
BashOutput
Tool-Name:BashOutput
Eingabe:
KillBash
Tool-Name:KillBash
Eingabe:
ExitPlanMode
Tool-Name:ExitPlanMode
Eingabe:
ListMcpResources
Tool-Name:ListMcpResources
Eingabe:
ReadMcpResource
Tool-Name:ReadMcpResource
Eingabe:
Verwendungsbeispiele
Grundlegende Dateioperationen
Fehlerbehandlung
Streaming-Modus mit Client
Verwendung benutzerdefinierter Tools
Siehe auch
- Python SDK-Leitfaden - Tutorial und Beispiele
- SDK-Übersicht - Allgemeine SDK-Konzepte
- TypeScript SDK-Referenz - TypeScript SDK-Dokumentation
- CLI-Referenz - Befehlszeilenschnittstelle
- Häufige Arbeitsabläufe - Schritt-für-Schritt-Anleitungen