Используйте Agent SDK для создания AI-агента, который читает ваш код, находит ошибки и исправляет их, всё без ручного вмешательства.
Что вы будете делать:
Установить Claude Code
Agent SDK использует Claude Code в качестве своей среды выполнения. Установите его для вашей платформы:
После установки Claude Code на вашу машину запустите claude в терминале и следуйте подсказкам для аутентификации. SDK будет использовать эту аутентификацию автоматически.
Для получения дополнительной информации об установке Claude Code см. Настройка Claude Code.
Создать папку проекта
Создайте новый каталог для этого быстрого старта:
mkdir my-agent && cd my-agentДля ваших собственных проектов вы можете запустить SDK из любой папки; по умолчанию он будет иметь доступ к файлам в этом каталоге и его подкаталогах.
Установить SDK
Установите пакет Agent SDK для вашего языка программирования:
Установить ваш API ключ
Если вы уже аутентифицировали Claude Code (запустив claude в терминале), SDK будет использовать эту аутентификацию автоматически.
В противном случае вам нужен API ключ, который вы можете получить из Anthropic Console.
Создайте файл .env в каталоге вашего проекта и сохраните там API ключ:
ANTHROPIC_API_KEY=your-api-keyИспользуете Amazon Bedrock, Google Vertex AI или Microsoft Azure? Смотрите руководства по настройке для Bedrock, Vertex AI или Azure AI Foundry.
Если не было предварительного одобрения, мы не разрешаем сторонним разработчикам предлагать вход Claude.ai или ограничения скорости для своих продуктов, включая агентов, созданных на основе Claude Agent SDK. Вместо этого используйте методы аутентификации через API ключ, описанные в этом документе.
Этот быстрый старт проведёт вас через создание агента, который может находить и исправлять ошибки в коде. Сначала вам нужен файл с некоторыми намеренными ошибками для исправления агентом. Создайте utils.py в каталоге my-agent и вставьте следующий код:
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
return total / len(numbers)
def get_user_name(user):
return user["name"].upper()Этот код содержит две ошибки:
calculate_average([]) падает с ошибкой деления на нольget_user_name(None) падает с TypeErrorСоздайте agent.py, если вы используете Python SDK, или agent.ts для TypeScript:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ResultMessage
async def main():
# Agentic loop: streams messages as Claude works
async for message in query(
prompt="Review utils.py for bugs that would cause crashes. Fix any issues you find.",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"], # Tools Claude can use
permission_mode="acceptEdits" # Auto-approve file edits
)
):
# Print human-readable output
if isinstance(message, AssistantMessage):
for block in message.content:
if hasattr(block, "text"):
print(block.text) # Claude's reasoning
elif hasattr(block, "name"):
print(f"Tool: {block.name}") # Tool being called
elif isinstance(message, ResultMessage):
print(f"Done: {message.subtype}") # Final result
asyncio.run(main())Этот код состоит из трёх основных частей:
query: основная точка входа, которая создаёт цикл агента. Она возвращает асинхронный итератор, поэтому вы используете async for для потоковой передачи сообщений по мере работы Claude. Полный API см. в справочнике Python или TypeScript SDK.
prompt: то, что вы хотите, чтобы Claude сделал. Claude определяет, какие инструменты использовать на основе задачи.
options: конфигурация для агента. В этом примере используется allowedTools для ограничения Claude инструментами Read, Edit и Glob, а также permissionMode: "acceptEdits" для автоматического одобрения изменений файлов. Другие опции включают systemPrompt, mcpServers и другие. Смотрите все опции для Python или TypeScript.
Цикл async for продолжает работать, пока Claude думает, вызывает инструменты, наблюдает результаты и решает, что делать дальше. Каждая итерация выдаёт сообщение: рассуждение Claude, вызов инструмента, результат инструмента или окончательный результат. SDK обрабатывает оркестровку (выполнение инструментов, управление контекстом, повторные попытки), поэтому вы просто потребляете поток. Цикл заканчивается, когда Claude завершает задачу или возникает ошибка.
Обработка сообщений внутри цикла фильтрует вывод, удобный для чтения человеком. Без фильтрации вы увидите необработанные объекты сообщений, включая инициализацию системы и внутреннее состояние, что полезно для отладки, но в остальном шумно.
В этом примере используется потоковая передача для отображения прогресса в реальном времени. Если вам не нужен живой вывод (например, для фоновых заданий или конвейеров CI), вы можете собрать все сообщения сразу. Подробнее см. Потоковая передача в сравнении с однооборотным режимом.
Ваш агент готов. Запустите его с помощью следующей команды:
python3 agent.pyПосле запуска проверьте utils.py. Вы увидите защитный код, обрабатывающий пустые списки и нулевых пользователей. Ваш агент автономно:
utils.py для понимания кодаЭто то, что отличает Agent SDK: Claude выполняет инструменты напрямую вместо того, чтобы просить вас их реализовать.
Если вы видите "Claude Code not found", установите Claude Code и перезагрузите терминал. Для "API key not found" установите ваш API ключ. Дополнительную помощь см. в полном руководстве по устранению неполадок.
Теперь, когда ваш агент настроен, попробуйте некоторые другие подсказки:
"Add docstrings to all functions in utils.py""Add type hints to all functions in utils.py""Create a README.md documenting the functions in utils.py"Вы можете изменить поведение вашего агента, изменив опции. Вот несколько примеров:
Добавить возможность веб-поиска:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "WebSearch"],
permission_mode="acceptEdits"
)Дать Claude пользовательскую системную подсказку:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits",
system_prompt="You are a senior Python developer. Always follow PEP 8 style guidelines."
)Запустить команды в терминале:
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob", "Bash"],
permission_mode="acceptEdits"
)С включённым Bash попробуйте: "Write unit tests for utils.py, run them, and fix any failures"
Инструменты контролируют, что может делать ваш агент:
| Инструменты | Что может делать агент |
|---|---|
Read, Glob, Grep | Анализ только для чтения |
Read, Edit, Glob | Анализ и изменение кода |
Read, Edit, Bash, Glob, Grep | Полная автоматизация |
Режимы разрешений контролируют, сколько человеческого надзора вы хотите:
| Режим | Поведение | Вариант использования |
|---|---|---|
acceptEdits | Автоматически одобряет редактирование файлов, запрашивает другие действия | Надёжные рабочие процессы разработки |
bypassPermissions | Работает без подсказок | Конвейеры CI/CD, автоматизация |
default | Требует обратного вызова canUseTool для обработки одобрения | Пользовательские потоки одобрения |
Приведённый выше пример использует режим acceptEdits, который автоматически одобряет файловые операции, чтобы агент мог работать без интерактивных подсказок. Если вы хотите запрашивать у пользователей одобрение, используйте режим default и предоставьте обратный вызов canUseTool, который собирает пользовательский ввод. Для большего контроля см. Разрешения.
Теперь, когда вы создали своего первого агента, узнайте, как расширить его возможности и адаптировать его к вашему варианту использования: