Claude Agent SDK для Python: эффективное взаимодействие с Claude Code
2025-10-01

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 заключаются в следующем:

  1. Упрощение взаимодействия с Claude Code: SDK создан для того, чтобы сделать процесс общения с Claude проще и доступнее для разработчиков.
  2. Повышение производительности: Объединение инструментов в одном процессе и уменьшение накладных расходов на взаимодействие между процессами позволяет значительно улучшить скорость выполнения программ.
  3. Гибкость и настройка: Разработчики могут добавлять свои инструменты и хуки, что позволяет адаптировать 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 особенно ценным для создания эффективных и отзывчивых программ.