Claude Code SDK
Узнайте о программной интеграции Claude Code в ваши приложения с помощью Claude Code SDK.
Claude Code SDK позволяет запускать Claude Code как подпроцесс, предоставляя способ создания AI-помощников по программированию и инструментов, которые используют возможности Claude.
SDK доступен для использования в командной строке, TypeScript и Python.
Аутентификация
Claude Code SDK поддерживает несколько методов аутентификации:
API-ключ Anthropic
Для использования Claude Code SDK напрямую с API Anthropic мы рекомендуем создать выделенный API-ключ:
- Создайте API-ключ Anthropic в Anthropic Console
- Затем установите переменную окружения
ANTHROPIC_API_KEY
. Мы рекомендуем хранить этот ключ безопасно (например, используя Github secret)
Учетные данные сторонних API
SDK также поддерживает сторонних поставщиков API:
- Amazon Bedrock: Установите переменную окружения
CLAUDE_CODE_USE_BEDROCK=1
и настройте учетные данные AWS - Google Vertex AI: Установите переменную окружения
CLAUDE_CODE_USE_VERTEX=1
и настройте учетные данные Google Cloud
Для подробных инструкций по настройке сторонних поставщиков см. документацию Amazon Bedrock и Google Vertex AI.
Базовое использование SDK
Claude Code SDK позволяет использовать Claude Code в неинтерактивном режиме из ваших приложений.
Командная строка
Вот несколько базовых примеров для SDK командной строки:
TypeScript
TypeScript SDK включен в основной пакет @anthropic-ai/claude-code
на NPM:
TypeScript SDK принимает все аргументы, поддерживаемые SDK командной строки, а также:
Аргумент | Описание | По умолчанию |
---|---|---|
abortController | Контроллер прерывания | new AbortController() |
cwd | Текущий рабочий каталог | process.cwd() |
executable | Какую среду выполнения JavaScript использовать | node при запуске с Node.js, bun при запуске с Bun |
executableArgs | Аргументы для передачи исполняемому файлу | [] |
pathToClaudeCodeExecutable | Путь к исполняемому файлу Claude Code | Исполняемый файл, поставляемый с @anthropic-ai/claude-code |
Python
Python SDK доступен как claude-code-sdk
на PyPI:
Предварительные требования:
- Python 3.10+
- Node.js
- Claude Code CLI:
npm install -g @anthropic-ai/claude-code
Базовое использование:
Python SDK принимает все аргументы, поддерживаемые SDK командной строки, через класс ClaudeCodeOptions
:
Расширенное использование
Документация ниже использует SDK командной строки в качестве примера, но также может использоваться с TypeScript и Python SDK.
Многоходовые разговоры
Для многоходовых разговоров вы можете возобновлять разговоры или продолжать с самой последней сессии:
Пользовательские системные запросы
Вы можете предоставить пользовательские системные запросы для управления поведением Claude:
Вы также можете добавлять инструкции к системному запросу по умолчанию:
Конфигурация MCP
Model Context Protocol (MCP) позволяет расширить Claude Code дополнительными инструментами и ресурсами от внешних серверов. Используя флаг --mcp-config
, вы можете загружать MCP-серверы, которые предоставляют специализированные возможности, такие как доступ к базе данных, интеграции API или пользовательские инструменты.
Создайте JSON-файл конфигурации с вашими MCP-серверами:
Затем используйте его с Claude Code:
При использовании MCP-инструментов вы должны явно разрешить их с помощью флага --allowedTools
. Имена MCP-инструментов следуют шаблону mcp__<serverName>__<toolName>
, где:
serverName
- это ключ из вашего файла конфигурации MCPtoolName
- это конкретный инструмент, предоставляемый этим сервером
Эта мера безопасности гарантирует, что MCP-инструменты используются только при явном разрешении.
Если вы указываете только имя сервера (т.е., mcp__<serverName>
), все инструменты с этого сервера будут разрешены.
Шаблоны glob (например, mcp__go*
) не поддерживаются.
Пользовательский инструмент запроса разрешений
Опционально используйте --permission-prompt-tool
для передачи MCP-инструмента, который мы будем использовать для проверки того, предоставляет ли пользователь модели разрешения на вызов данного инструмента. Когда модель вызывает инструмент, происходит следующее:
- Сначала мы проверяем настройки разрешений: все файлы settings.json, а также
--allowedTools
и--disallowedTools
, переданные в SDK; если одна из этих настроек разрешает или запрещает вызов инструмента, мы продолжаем с вызовом инструмента - В противном случае мы вызываем MCP-инструмент, который вы предоставили в
--permission-prompt-tool
MCP-инструменту --permission-prompt-tool
передается имя инструмента и входные данные, и он должен вернуть JSON-строковый payload с результатом. Payload должен быть одним из:
Например, реализация MCP-инструмента запроса разрешений на TypeScript может выглядеть так:
Чтобы использовать этот инструмент, добавьте ваш MCP-сервер (например, с --mcp-config
), затем вызовите SDK следующим образом:
Примечания по использованию:
- Используйте
updatedInput
, чтобы сообщить модели, что запрос разрешения изменил её входные данные; в противном случае установитеupdatedInput
в оригинальные входные данные, как в примере выше. Например, если инструмент показывает пользователю diff редактирования файла и позволяет ему вручную редактировать diff, инструмент запроса разрешений должен вернуть это обновленное редактирование. - Payload должен быть JSON-строковым
Доступные опции CLI
SDK использует все опции CLI, доступные в Claude Code. Вот ключевые для использования SDK:
Флаг | Описание | Пример |
---|---|---|
--print , -p | Запуск в неинтерактивном режиме | claude -p "запрос" |
--output-format | Указать формат вывода (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Возобновить разговор по ID сессии | claude --resume abc123 |
--continue , -c | Продолжить самый последний разговор | claude --continue |
--verbose | Включить подробное логирование | claude --verbose |
--max-turns | Ограничить агентские ходы в неинтерактивном режиме | claude --max-turns 3 |
--system-prompt | Переопределить системный запрос (только с --print ) | claude --system-prompt "Пользовательская инструкция" |
--append-system-prompt | Добавить к системному запросу (только с --print ) | claude --append-system-prompt "Пользовательская инструкция" |
--allowedTools | Список разрешенных инструментов через пробел, или строка со списком разрешенных инструментов через запятую | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Список запрещенных инструментов через пробел, или строка со списком запрещенных инструментов через запятую | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | Загрузить MCP-серверы из JSON-файла | claude --mcp-config servers.json |
--permission-prompt-tool | MCP-инструмент для обработки запросов разрешений (только с --print ) | claude --permission-prompt-tool mcp__auth__prompt |
Для полного списка опций CLI и функций см. документацию справочника CLI.
Форматы вывода
SDK поддерживает несколько форматов вывода:
Текстовый вывод (по умолчанию)
Возвращает только текст ответа:
JSON-вывод
Возвращает структурированные данные, включая метаданные:
Формат ответа:
Потоковый JSON-вывод
Передает каждое сообщение по мере его получения:
Каждый разговор начинается с начального системного сообщения init
, за которым следует список пользовательских и ассистентских сообщений, за которым следует финальное системное сообщение result
со статистикой. Каждое сообщение выдается как отдельный JSON-объект.
Схема сообщений
Сообщения, возвращаемые из JSON API, строго типизированы согласно следующей схеме:
Мы скоро опубликуем эти типы в JSONSchema-совместимом формате. Мы используем семантическое версионирование для основного пакета Claude Code для сообщения о критических изменениях в этом формате.
Типы Message
и MessageParam
доступны в Anthropic SDK. Например, см. Anthropic TypeScript и Python SDK.
Форматы ввода
SDK поддерживает несколько форматов ввода:
Текстовый ввод (по умолчанию)
Входной текст может быть предоставлен как аргумент:
Или входной текст может быть передан через stdin:
Потоковый JSON-ввод
Поток сообщений, предоставляемый через stdin
, где каждое сообщение представляет пользовательский ход. Это позволяет несколько ходов разговора без перезапуска бинарного файла claude
и позволяет предоставлять руководство модели во время обработки запроса.
Каждое сообщение является JSON-объектом ‘Пользовательское сообщение’, следующим тому же формату, что и схема выходных сообщений. Сообщения форматируются с использованием формата jsonl, где каждая строка ввода является полным JSON-объектом. Потоковый JSON-ввод требует -p
и --output-format stream-json
.
В настоящее время это ограничено только текстовыми пользовательскими сообщениями.
Примеры
Простая интеграция скрипта
Обработка файлов с Claude
Управление сессиями
Лучшие практики
-
Используйте JSON-формат вывода для программного парсинга ответов:
-
Обрабатывайте ошибки корректно - проверяйте коды выхода и stderr:
-
Используйте управление сессиями для поддержания контекста в многоходовых разговорах
-
Учитывайте таймауты для долго выполняющихся операций:
-
Соблюдайте ограничения скорости при выполнении множественных запросов, добавляя задержки между вызовами
Реальные приложения
Claude Code SDK позволяет создавать мощные интеграции с вашим рабочим процессом разработки. Один заметный пример - это Claude Code GitHub Actions, который использует SDK для предоставления автоматизированного код-ревью, создания PR и возможностей сортировки issues прямо в вашем GitHub workflow.
Связанные ресурсы
- Использование CLI и управление - Полная документация CLI
- Интеграция GitHub Actions - Автоматизируйте ваш GitHub workflow с Claude
- Общие рабочие процессы - Пошаговые руководства для общих случаев использования