Содержание
- 1. Что такое ИИ-агент?
- 2. Обзор Claude Agent SDK
- 3. Как работает агентный цикл
- 4. Начало работы: установка и базовый код
- 5. Встроенные инструменты
- 6. Создание кастомных инструментов
- 7. Параллельная обработка с субагентами
- 8. Agent SDK vs Client SDK vs Claude Code
- 9. Практические сценарии использования
- 10. Лучшие практики
- Часто задаваемые вопросы
«Дать ИИ задание — и он сам разберётся, что и как делать…» Именно эту мечту воплощают ИИ-агенты. Claude Agent SDK от Anthropic — это фреймворк для создания ИИ-агентов на Python или TypeScript, в основе которых лежит Claude. Эта же технология используется внутри Claude Code — официального CLI от Anthropic.
В этой статье мы подробно рассмотрим Claude Agent SDK: от основных концепций до практической реализации и сценариев применения.
Что такое ИИ-агент?
ИИ-агент принципиально отличается от обычного режима «вопрос — ответ». Его главная особенность — автономное разбиение задач на подзадачи, использование инструментов, анализ результатов и принятие решений о следующих шагах.
Например, если вы попросите агента «исправить баг в auth.py», он выполнит следующую последовательность действий:
- Прочитает файл и разберётся в коде
- Найдёт связанные файлы для понимания общей картины
- Определит причину ошибки
- Исправит код
- Запустит тесты для проверки
- Отчитается о результатах
Всё это выполняется без участия человека — агент сам принимает решения на каждом этапе. В этом и заключается его сила.
Обзор Claude Agent SDK
Claude Agent SDK — официальный фреймворк для разработки агентов от Anthropic. Он предоставляет программный доступ к тому же движку, на котором работает Claude Code.
Основные характеристики:
| Характеристика | Описание |
|---|---|
| Автоматическое управление циклом | SDK автоматически обрабатывает цикл: вызов инструмента → обработка результата → принятие решения |
| Встроенные инструменты | Готовые инструменты для работы с файлами, выполнения команд, веб-поиска и др. |
| Кастомные инструменты | Легко добавлять собственные инструменты (вызовы API, работа с БД и т.д.) |
| Интеграция с MCP | Подключение внешних серверов инструментов (MCP) для расширения функционала |
| Контроль затрат | Возможность установки лимитов бюджета и количества итераций |
| Субагенты | Разделение задач и параллельное выполнение |
| Языки | Python / TypeScript |
Из трёх режимов Claude — Чат, Cowork и Код именно Agent SDK является технологией, лежащей в основе режима Код (Claude Code).
Как работает агентный цикл
Ядро Agent SDK — это агентный цикл. Это механизм автоматического повторения последовательности: «Claude размышляет, использует инструмент, анализирует результат и снова размышляет».
Процесс выглядит следующим образом:
- Получение запроса: пользовательская инструкция передаётся Claude
- Анализ Claude: анализ инструкции и определение необходимых действий
- Выполнение инструмента: вызов инструментов — Bash, Edit, Read и других
- Обработка результата: результат выполнения возвращается Claude
- Продолжение или завершение: если работа не закончена — возврат к шагу 2; если всё готово — возврат текстового ответа
Ключевой момент: цикл завершается, когда больше не нужны вызовы инструментов. Как только Claude решает, что инструменты больше не нужны, возвращается финальный текстовый ответ.
Начало работы: установка и базовый код
Установка
SDK доступен для Python и TypeScript.
# Python
pip install claude-agent-sdk
# TypeScript
npm install @anthropic-ai/claude-agent-sdk
Минимальный агент (Python)
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
async def main():
async for message in query(
prompt="Найди и исправь баг в src/auth.py",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Bash", "Grep"],
max_turns=30,
),
):
if isinstance(message, ResultMessage):
if message.subtype == "success":
print(message.result)
print(f"Стоимость: ${message.total_cost_usd:.4f}")
asyncio.run(main())
Минимальный агент (TypeScript)
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Найди и исправь баг в src/auth.py",
options: {
allowedTools: ["Read", "Edit", "Bash", "Grep"],
maxTurns: 30,
}
})) {
if (message.type === "result" && message.subtype === "success") {
console.log(message.result);
}
}
Вот и всё — этого достаточно, чтобы запустить агента, который читает файлы, ищет баги, исправляет их и отчитывается о результатах.
Встроенные инструменты
Agent SDK поставляется с набором готовых инструментов, которые можно использовать без написания дополнительного кода.
| Инструмент | Функция | Пример использования |
|---|---|---|
| Bash | Выполнение shell-команд | Запуск тестов, сборка, операции с git |
| Read | Чтение файлов | Просмотр исходного кода и конфигурации |
| Edit | Частичное редактирование файлов | Исправление багов, рефакторинг |
| Write | Создание новых файлов | Создание новых модулей |
| Glob | Поиск файлов по шаблону | **/*.ts для списка TypeScript-файлов |
| Grep | Поиск по содержимому файлов | Поиск определений функций или сообщений об ошибках |
| WebSearch | Веб-поиск | Поиск актуальной документации и спецификаций API |
| WebFetch | Загрузка веб-страниц | Получение информации по URL |
| Agent | Запуск субагента | Разделение задач для параллельной обработки |
Чтобы использовать эти инструменты, достаточно указать их в allowed_tools. Писать код обработки самостоятельно не нужно.
Создание кастомных инструментов
Если встроенных инструментов недостаточно, можно создать собственные. Рассмотрим пример интеграции с API погоды.
Версия на Python
from claude_agent_sdk import tool, create_sdk_mcp_server
@tool(
"get_weather",
"Получить текущую погоду для указанного города",
{"city": str}
)
async def get_weather(args: dict) -> dict:
city = args["city"]
# В реальности здесь вызов API
weather_data = await fetch_weather_api(city)
return {
"content": [
{"type": "text", "text": f"Погода в {city}: {weather_data}"}
]
}
weather_server = create_sdk_mcp_server(
name="weather",
version="1.0.0",
tools=[get_weather]
)
Версия на TypeScript
import { tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
import { z } from "zod";
const getWeather = tool(
"get_weather",
"Получить текущую погоду для указанного города",
{ city: z.string().describe("Название города") },
async (args) => {
const data = await fetchWeatherApi(args.city);
return {
content: [{ type: "text", text: `Погода в ${args.city}: ${data}` }]
};
}
);
Кастомные инструменты создаются как MCP-серверы и подключаются к агенту. Важный момент: при ошибке не выбрасывайте исключение, а возвращайте isError: true. Это позволит агентному циклу продолжить работу, а Claude — попробовать другой подход.
Параллельная обработка с субагентами
Крупные задачи эффективнее разбивать на части и выполнять параллельно через субагентов. Это позволяет не засорять контекст (память) основного агента, делегируя специализированные задачи отдельным агентам.
Когда субагенты полезны
- Массовое тестирование: даже если логи тестов огромны, они не влияют на контекст основного агента
- Параллельное исследование: одновременный анализ нескольких модулей с получением только результатов
- Разделение обязанностей: «ревью кода» и «запуск тестов» выполняются разными агентами
Кастомные субагенты в Claude Code
В Claude Code (CLI) достаточно создать Markdown-файл в каталоге .claude/agents/, чтобы определить кастомного субагента.
# .claude/agents/reviewer.md
---
name: code-reviewer
description: Агент, специализирующийся на ревью кода
tools: Read, Glob, Grep
model: sonnet
---
Вы — опытный ревьюер кода.
Проводите ревью с точки зрения качества кода,
безопасности и лучших практик.
Ограничение доступных инструментов (в примере выше — только чтение) предотвращает случайное изменение кода ревьюером.
Agent SDK vs Client SDK vs Claude Code
Claude предлагает три интерфейса для разработчиков, каждый со своими сильными сторонами. Выбирайте в зависимости от задачи.
| Аспект | Agent SDK | Client SDK (API) | Claude Code CLI |
|---|---|---|---|
| Управление циклом | Автоматическое | Ручная реализация | Автоматическое |
| Инструменты | Встроенные + кастомные | Полностью самостоятельно | Встроенные |
| Назначение | Автоматизация и продакшен | Полный контроль | Интерактивная разработка |
| Сложность | Средняя | Высокая | Начальная |
| Требуется код | Да | Да | Нет |
Как выбрать:
- Повседневная разработка → Claude Code CLI
- Построение системы автоматизации → Agent SDK
- Создание собственного ИИ-приложения → Client SDK
Практические сценарии использования
Автоматизация разработки
Самый распространённый сценарий. Достаточно сказать «реализуй эту функцию», и агент изучит структуру файлов, напишет код и запустит тесты.
# Автоматическое исправление багов
async for msg in query(
prompt="Тесты модуля аутентификации падают. Найди причину и исправь",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Bash", "Grep"],
max_turns=20,
max_budget_usd=2.00, # Лимит $2
),
):
pass
Интеграция в CI/CD-пайплайн
Можно настроить связку с GitHub Actions для автоматического ревью кода при создании PR или автоматического исправления при падении тестов.
Анализ данных и исследование
Агенту можно поручить многоэтапные задачи вроде «проанализируй логи за последний месяц и найди паттерны ошибок». В сочетании с WebSearch можно подключить и актуальную информацию из интернета.
Лучшие практики
1. Не забывайте о контроле затрат
Агент работает в цикле, поэтому расход токенов может оказаться больше ожидаемого. Обязательно устанавливайте max_budget_usd и max_turns.
options=ClaudeAgentOptions(
max_budget_usd=5.00, # Остановка при $5
max_turns=30, # Остановка после 30 итераций
effort="medium", # Глубина рассуждений (low/medium/high/max)
)
2. Минимизируйте набор инструментов
Разрешение ненужных инструментов впустую расходует контекстное окно. Указывайте в allowed_tools только те инструменты, которые действительно необходимы.
3. Обрабатывайте ошибки через isError
Если кастомный инструмент выбрасывает исключение, весь агентный цикл останавливается. Вместо этого возвращайте isError: true — тогда Claude сможет попробовать восстановиться.
4. Выносите тяжёлые задачи в субагентов
Запуск тестов, анализ логов и другие операции с большим объёмом вывода лучше делегировать субагентам, чтобы не перегружать контекст основного агента.
5. Формулируйте промпты конкретно
Вместо «улучши код» пишите «добавь ограничение частоты запросов в функцию логина auth.py и напиши тесты». Конкретные инструкции повышают эффективность агента.
Заключение
Claude Agent SDK — это фреймворк, который значительно упрощает разработку ИИ-агентов. Используя тот же движок, что и Claude Code, вы можете создавать автономных агентов на Python и TypeScript.
Рекомендуемый подход: сначала попробуйте Claude Code для интерактивного знакомства с возможностями агентов, а когда возникнет потребность в автоматизации — переходите на Agent SDK.
О базовых возможностях Claude читайте также в статье Три режима Claude: Чат, Cowork и Код — подробное сравнение.
Часто задаваемые вопросы
Claude Agent SDK бесплатный?
Сам SDK бесплатен, но за использование API Claude взимается плата. С помощью параметра max_budget_usd можно установить лимит расходов. Для разработки и тестирования рекомендуется выставлять effort в значение "low", чтобы снизить затраты.
В чём разница между Agent SDK и Claude Code?
Claude Code — это инструмент для интерактивной работы в терминале или IDE. Agent SDK — это фреймворк для встраивания в программы и автоматизации. Внутри они используют один и тот же движок, но предназначены для разных задач. Для повседневной разработки подходит Claude Code, для CI/CD и продакшен-автоматизации — Agent SDK.
Какие языки программирования поддерживаются?
SDK поддерживает Python и TypeScript. При этом нет ограничений на язык проектов, с которыми работает агент (редактирование файлов, выполнение команд) — можно использовать Go, Rust, PHP и любые другие языки.
Что такое MCP?
MCP (Model Context Protocol) — это стандартный протокол для подключения ИИ-моделей к внешним инструментам. Базы данных, управление браузером, API — всё это можно реализовать как MCP-сервер и подключить к агенту. Agent SDK поддерживает MCP, включая сторонние серверы.