
Claude Agent SDK для Python: эффективное взаимодействие с Claude Code
Введение
Claude Agent SDK для Python предоставляет мощные инструменты для интеграции с Claude Code, упрощая процесс построения приложений с использованием возможностей AI. Этот SDK позволяет разработчикам эффективно взаимодействовать с Claude Code, используя стиль асинхронного программирования.
Основные особенности
Простой и интуитивно понятный интерфейс
SDK позволяет легко отправлять запросы и получать ответы от Claude Code. Основные функции SDK включают:
- Простые и гибкие команды для взаимодействия с Claude.
- Поддержка пользовательских инструментов и хуков, что позволяет настраивать поведение приложения.
- Возможность работы в одном процессе, что упрощает управление ресурсами и улучшает производительность.
Поддержка асинхронных операций
SDK использует библиотеку anyio
для работы с асинхронными запросами. Это позволяет разработчикам выполнять несколько операций одновременно, улучшая отзывчивость приложений.
Работа с инструментами
SDK позволяет определять пользовательские инструменты с помощью декоратора @tool
. Эти инструменты могут вызываться по мере необходимости, прямо из вашего приложения, без необходимости в отдельных процессах.
Задачи проекта
Основные задачи Claude Agent SDK заключаются в следующем:
- Упрощение взаимодействия с Claude Code: SDK создан для того, чтобы сделать процесс общения с Claude проще и доступнее для разработчиков.
- Повышение производительности: Объединение инструментов в одном процессе и уменьшение накладных расходов на взаимодействие между процессами позволяет значительно улучшить скорость выполнения программ.
- Гибкость и настройка: Разработчики могут добавлять свои инструменты и хуки, что позволяет адаптировать SDK под конкретные задачи и сценарии использования.
Примеры применения
Основной пример использования
Для начала работы с SDK достаточно установить пакет claude-agent-sdk
и импортировать необходимые модули. Вот как может выглядеть простой пример:
import anyio
from claude_agent_sdk import query
async def main():
async for message in query(prompt="Что такое 2 + 2?"):
print(message)
anyio.run(main)
Использование пользовательских инструментов
Создание пользовательского инструмента также довольно просто. Например, мы можем создать инструмент для приветствия пользователя:
from claude_agent_sdk import tool, create_sdk_mcp_server
@tool("greet", "Поздоровайся с пользователем", {"name": str})
async def greet_user(args):
return {
"content": [{"type": "text", "text": f"Здравствуйте, {args['name']}!"}]
}
server = create_sdk_mcp_server(name="my-tools", version="1.0.0", tools=[greet_user])
После этого инструмент можно использовать в запросах к Claude, что демонстрирует гибкость SDK.
Хуки для управления процессом
SDK также поддерживает хуки, которые можно использовать для автоматизации определенных процессов при работе с Claude. Например, вы можете проверить команды перед их выполнением:
async def check_bash_command(input_data, tool_use_id, context):
command = input_data["tool_input"].get("command", "")
if "foo.sh" in command:
return {
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "Команда содержит недопустимый шаблон: foo.sh",
}
}
return {}
Заключение
Claude Agent SDK для Python представляет собой мощный инструмент для разработчиков, позволяя легко интегрировать возможности Claude Code в свои приложения. С помощью этого SDK вы можете не только выполнять запросы, но и настраивать поведение приложений под свои нужды. Наличие пользовательских инструментов и хуков делает SDK особенно ценным для создания эффективных и отзывчивых программ.