Функции
query()
Основная асинхронная функция для взаимодействия с Claude Code. Возвращает асинхронный итератор, который выдает сообщения по мере их поступления.
Параметры
Параметр | Тип | Описание |
---|---|---|
prompt | str | AsyncIterable[dict] | Входной запрос как строка или асинхронный итерируемый объект для потокового режима |
options | ClaudeCodeOptions | None | Необязательный объект конфигурации (по умолчанию ClaudeCodeOptions() если None) |
Возвращает
ВозвращаетAsyncIterator[Message]
, который выдает сообщения из разговора.
Пример - Простой запрос
Пример - С опциями
tool()
Декоратор для определения MCP инструментов с типобезопасностью.
Параметры
Параметр | Тип | Описание |
---|---|---|
name | str | Уникальный идентификатор для инструмента |
description | str | Человекочитаемое описание того, что делает инструмент |
input_schema | type | dict[str, Any] | Схема, определяющая входные параметры инструмента (см. ниже) |
Опции схемы ввода
-
Простое сопоставление типов (рекомендуется):
-
Формат JSON Schema (для сложной валидации):
Возвращает
Функцию-декоратор, которая оборачивает реализацию инструмента и возвращает экземплярSdkMcpTool
.
Пример
create_sdk_mcp_server()
Создать внутрипроцессный MCP сервер, который работает внутри вашего Python приложения.
Параметры
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
name | str | - | Уникальный идентификатор для сервера |
version | str | "1.0.0" | Строка версии сервера |
tools | list[SdkMcpTool[Any]] | None | None | Список функций инструментов, созданных с декоратором @tool |
Возвращает
Возвращает объектMcpSdkServerConfig
, который можно передать в ClaudeCodeOptions.mcp_servers
.
Пример
Классы
ClaudeSDKClient
Клиент для двунаправленных интерактивных разговоров с Claude Code. Предоставляет полный контроль над потоком разговора с поддержкой потоковой передачи, прерываний и динамической отправки сообщений.
Методы
Метод | Описание |
---|---|
__init__(options) | Инициализировать клиент с необязательной конфигурацией |
connect(prompt) | Подключиться к Claude с необязательным начальным запросом или потоком сообщений |
query(prompt, session_id) | Отправить новый запрос в потоковом режиме |
receive_messages() | Получить все сообщения от Claude как асинхронный итератор |
receive_response() | Получать сообщения до и включая ResultMessage |
interrupt() | Отправить сигнал прерывания (работает только в потоковом режиме) |
disconnect() | Отключиться от Claude |
Поддержка контекстного менеджера
Клиент может использоваться как асинхронный контекстный менеджер для автоматического управления соединением:
Важно: При итерации по сообщениям избегайте использования break
для раннего выхода, так как это может вызвать проблемы с очисткой asyncio. Вместо этого позвольте итерации завершиться естественно или используйте флаги для отслеживания того, когда вы нашли то, что нужно.
Пример - Интерактивный разговор
Типы
SdkMcpTool
Определение для SDK MCP инструмента, созданного с декоратором @tool
.
Свойство | Тип | Описание |
---|---|---|
name | str | Уникальный идентификатор для инструмента |
description | str | Человекочитаемое описание |
input_schema | type[T] | dict[str, Any] | Схема для валидации ввода |
handler | Callable[[T], Awaitable[dict[str, Any]]] | Асинхронная функция, которая обрабатывает выполнение инструмента |
ClaudeCodeOptions
Класс данных конфигурации для запросов Claude Code.
Свойство | Тип | По умолчанию | Описание |
---|---|---|---|
allowed_tools | list[str] | [] | Список разрешенных имен инструментов |
max_thinking_tokens | int | 8000 | Максимальное количество токенов для процесса размышления |
system_prompt | str | None | None | Полностью заменить системный запрос по умолчанию |
append_system_prompt | str | None | None | Текст для добавления к системному запросу по умолчанию |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | Конфигурации MCP серверов или путь к файлу конфигурации |
permission_mode | PermissionMode | None | None | Режим разрешений для использования инструментов |
continue_conversation | bool | False | Продолжить самый последний разговор |
resume | str | None | None | ID сессии для возобновления |
max_turns | int | None | None | Максимальное количество ходов разговора |
disallowed_tools | list[str] | [] | Список запрещенных имен инструментов |
model | str | None | None | Модель Claude для использования |
permission_prompt_tool_name | str | None | None | Имя MCP инструмента для запросов разрешений |
cwd | str | Path | None | None | Текущий рабочий каталог |
settings | str | None | None | Путь к файлу настроек |
add_dirs | list[str | Path] | [] | Дополнительные каталоги, к которым Claude может получить доступ |
extra_args | dict[str, str | None] | {} | Дополнительные аргументы CLI для передачи напрямую в CLI |
can_use_tool | CanUseTool | None | None | Функция обратного вызова для разрешений инструментов |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | Конфигурации хуков для перехвата событий |
PermissionMode
Режимы разрешений для управления выполнением инструментов.
McpSdkServerConfig
Конфигурация для SDK MCP серверов, созданных с create_sdk_mcp_server()
.
McpServerConfig
Тип объединения для конфигураций MCP серверов.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
Типы сообщений
Message
Тип объединения всех возможных сообщений.
UserMessage
Сообщение пользовательского ввода.
AssistantMessage
Сообщение ответа ассистента с блоками содержимого.
SystemMessage
Системное сообщение с метаданными.
ResultMessage
Финальное сообщение результата с информацией о стоимости и использовании.
Типы блоков содержимого
ContentBlock
Тип объединения всех блоков содержимого.
TextBlock
Блок текстового содержимого.
ThinkingBlock
Блок содержимого размышления (для моделей с возможностью размышления).
ToolUseBlock
Блок запроса использования инструмента.
ToolResultBlock
Блок результата выполнения инструмента.
Типы ошибок
ClaudeSDKError
Базовый класс исключений для всех ошибок SDK.
CLINotFoundError
Возникает, когда Claude Code CLI не установлен или не найден.
CLIConnectionError
Возникает, когда подключение к Claude Code не удается.
ProcessError
Возникает, когда процесс Claude Code завершается с ошибкой.
CLIJSONDecodeError
Возникает, когда парсинг JSON не удается.
Типы хуков
HookEvent
Поддерживаемые типы событий хуков. Обратите внимание, что из-за ограничений настройки Python SDK не поддерживает хуки SessionStart, SessionEnd и Notification.
HookCallback
Определение типа для функций обратного вызова хуков.
input_data
: Входные данные, специфичные для хука (см. документацию по хукам)tool_use_id
: Необязательный идентификатор использования инструмента (для хуков, связанных с инструментами)context
: Контекст хука с дополнительной информацией
decision
:"block"
для блокировки действияsystemMessage
: Системное сообщение для добавления в транскриптhookSpecificOutput
: Выходные данные, специфичные для хука
HookContext
Контекстная информация, передаваемая в обратные выз
HookMatcher
Конфигурация для сопоставления хуков с конкретными событиями или инструментами.
Пример использования хуков
Типы ввода/вывода инструментов
Документация схем ввода/вывода для всех встроенных инструментов Claude Code. Хотя Python SDK не экспортирует их как типы, они представляют структуру входов и выходов инструментов в сообщениях.Task
Имя инструмента:Task
Ввод:
Bash
Имя инструмента:Bash
Ввод:
Edit
Имя инструмента:Edit
Ввод:
MultiEdit
Имя инструмента:MultiEdit
Ввод:
Read
Имя инструмента:Read
Ввод:
Write
Имя инструмента:Write
Ввод:
Glob
Имя инструмента:Glob
Ввод:
Grep
Имя инструмента:Grep
Ввод:
NotebookEdit
Имя инструмента:NotebookEdit
Ввод:
WebFetch
Имя инструмента:WebFetch
Ввод:
WebSearch
Имя инструмента:WebSearch
Ввод:
TodoWrite
Имя инструмента:TodoWrite
Ввод:
BashOutput
Имя инструмента:BashOutput
Ввод:
KillBash
Имя инструмента:KillBash
Ввод:
ExitPlanMode
Имя инструмента:ExitPlanMode
Ввод:
ListMcpResources
Имя инструмента:ListMcpResources
Ввод:
ReadMcpResource
Имя инструмента:ReadMcpResource
Ввод:
Примеры использования
Основные операции с файлами
Обработка ошибок
Потоковый режим с клиентом
Использование пользовательских инструментов
См. также
- Руководство по Python SDK - Учебник и примеры
- Обзор SDK - Общие концепции SDK
- Справочник по TypeScript SDK - Документация TypeScript SDK
- Справочник по CLI - Интерфейс командной строки
- Общие рабочие процессы - Пошаговые руководства