SDK
Программно интегрируйте Claude Code в свои приложения с помощью SDK.
SDK Claude Code позволяет разработчикам программно интегрировать Claude Code в свои приложения. Он позволяет запускать Claude Code как подпроцесс, предоставляя способ создания помощников по программированию и инструментов на базе ИИ, использующих возможности Claude.
SDK доступен для использования в командной строке, TypeScript и Python.
Аутентификация
Для использования SDK Claude Code мы рекомендуем создать выделенный API-ключ:
- Создайте API-ключ Anthropic в Консоли Anthropic
- Затем установите переменную окружения
ANTHROPIC_API_KEY
. Мы рекомендуем хранить этот ключ безопасно (например, используя секрет Github)
Базовое использование SDK
SDK Claude Code позволяет использовать Claude Code в неинтерактивном режиме из ваших приложений.
Командная строка
Вот несколько базовых примеров для SDK командной строки:
TypeScript
SDK для TypeScript включен в основной пакет @anthropic-ai/claude-code
на NPM:
SDK для TypeScript принимает все аргументы, поддерживаемые SDK командной строки, а также:
Аргумент | Описание | По умолчанию |
---|---|---|
abortController | Контроллер прерывания | new AbortController() |
cwd | Текущий рабочий каталог | process.cwd() |
executable | Какую среду выполнения JavaScript использовать | node при запуске с Node.js, bun при запуске с Bun |
executableArgs | Аргументы для передачи исполняемому файлу | [] |
pathToClaudeCodeExecutable | Путь к исполняемому файлу Claude Code | Исполняемый файл, поставляемый с @anthropic-ai/claude-code |
Python
SDK для Python доступен как claude-code-sdk
на PyPI:
Предварительные требования:
- Python 3.10+
- Node.js
- Claude Code CLI:
npm install -g @anthropic-ai/claude-code
Базовое использование:
SDK для Python принимает все аргументы, поддерживаемые SDK командной строки, через класс ClaudeCodeOptions
:
Расширенное использование
Документация ниже использует SDK командной строки в качестве примера, но также может использоваться с SDK для TypeScript и Python.
Многоходовые разговоры
Для многоходовых разговоров вы можете возобновить беседы или продолжить с последней сессии:
Пользовательские системные промпты
Вы можете предоставить пользовательские системные промпты для управления поведением Claude:
Вы также можете добавить инструкции к системному промпту по умолчанию:
Конфигурация MCP
Протокол контекста модели (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-строки с результатом. Полезная нагрузка должна быть одной из:
Например, реализация MCP-инструмента запроса разрешений на TypeScript может выглядеть так:
Чтобы использовать этот инструмент, добавьте свой MCP-сервер (например, с помощью --mcp-config
), затем вызовите SDK следующим образом:
Примечания по использованию:
- Используйте
updatedInput
, чтобы сообщить модели, что запрос разрешения изменил входные данные; в противном случае установитеupdatedInput
на исходные входные данные, как в примере выше. Например, если инструмент показывает пользователю diff изменений файла и позволяет им вручную редактировать diff, инструмент запроса разрешений должен вернуть это обновленное изменение. - Полезная нагрузка должна быть в формате JSON-строки
Доступные опции CLI
SDK использует все опции CLI, доступные в Claude Code. Вот ключевые опции для использования SDK:
Флаг | Описание | Пример |
---|---|---|
--print , -p | Запуск в неинтерактивном режиме | claude -p "query" |
--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 "Custom instruction" |
--append-system-prompt | Добавить к системному промпту (только с --print ) | claude --append-system-prompt "Custom instruction" |
--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
доступны в SDK Anthropic. Например, см. SDK Anthropic для TypeScript и Python.
Примеры
Простая интеграция скриптов
Обработка файлов с помощью Claude
Управление сессиями
Лучшие практики
-
Используйте формат вывода JSON для программного разбора ответов:
-
Обрабатывайте ошибки корректно - проверяйте коды выхода и stderr:
-
Используйте управление сессиями для поддержания контекста в многоходовых разговорах
-
Рассмотрите тайм-ауты для долго выполняющихся операций:
-
Соблюдайте ограничения скорости при выполнении нескольких запросов, добавляя задержки между вызовами
Реальные приложения
SDK Claude Code позволяет создавать мощные интеграции с вашим рабочим процессом разработки. Один из заметных примеров - GitHub Actions для Claude Code, который использует SDK для предоставления автоматизированного обзора кода, создания PR и сортировки проблем непосредственно в вашем рабочем процессе GitHub.
Связанные ресурсы
- Использование CLI и управление - Полная документация по CLI
- Интеграция с GitHub Actions - Автоматизируйте свой рабочий процесс GitHub с помощью Claude
- Руководства - Пошаговые руководства для распространенных случаев использования