Обзор
Claude Agent SDK поддерживает два различных режима ввода для взаимодействия с агентами:- Режим Streaming Input: постоянная интерактивная сессия
- Single Message Input: одноразовые запросы, которые используют состояние сессии и возобновление
Режим Streaming Input (Рекомендуется)
Режим streaming input - это предпочтительный способ использования Claude Agent SDK. Он обеспечивает полный доступ к возможностям агента и позволяет создавать богатые интерактивные впечатления. Он позволяет агенту работать как долгоживущий процесс, который принимает пользовательский ввод, обрабатывает прерывания, выводит запросы разрешений и управляет сессией.Преимущества
В режиме streaming input вы работаете в постоянной сессии со следующими возможностями:- Загрузка изображений: прикрепляйте изображения непосредственно к сообщениям для визуального анализа и понимания
- Очередь сообщений: отправляйте несколько сообщений, которые обрабатываются последовательно, с возможностью прерывания
- Интеграция инструментов: полный доступ ко всем инструментам и пользовательским MCP серверам во время сессии
- Обратная связь в реальном времени: смотрите ответы по мере их создания, а не только финальные результаты
- Сохранение контекста: сохраняйте контекст разговора между несколькими ходами естественным образом
Пример реализации
Эти примеры читают изображение с именемdiagram.png из рабочей директории. Создайте его там в первую очередь или измените имя файла, чтобы указать на ваше собственное изображение.
receive_response() версии Python заканчивается на первом сообщении результата, поэтому он выводит анализ безопасности; чтобы прочитать оба ответа, используйте одну пару query() и receive_response() на сообщение, как показано в примере продолжения разговора в справочнике Python.
Если у блока изображения поле source отсутствует или не является объектом, SDK не сообщает об ошибке. Claude Code отправляет Claude текстовое примечание вместо изображения, например [Image could not be processed: image block has no source object], и сессия продолжается.
В TypeScript SDK, если ваш генератор сообщений выбросит исключение, например, когда файл, который он читает, отсутствует, поток завершится с ошибкой, которая гласит
Claude Code process aborted by user вместо исходной ошибки, поэтому сначала проверьте код внутри вашего генератора, когда вы видите это сообщение. Ошибке также может предшествовать длинная минифицированная строка объединённого исходного кода SDK, поэтому прочитайте до конца вывода, чтобы найти текст ошибки.В Python SDK исключение генератора регистрируется на уровне отладки, и сессия зависает без выброса исключения, поэтому если сессия streaming зависает без вывода, включите логирование отладки и проверьте ваш генератор.Ввод одного сообщения
Ввод одного сообщения проще, но более ограничен.Когда использовать ввод одного сообщения
Используйте ввод одного сообщения когда:- Вам нужен одноразовый ответ
- Вам не нужны вложения изображений или методы управления в середине сеанса
- Вам нужно работать в безгосударственной среде, такой как lambda функция
Ограничения
Если запрос заканчивается результатом ошибки, напримерerror_max_turns, один вызов query() вызывает ошибку, которая включает текст сбоя после выдачи финального сообщения результата, поэтому оберните цикл в блок try, если вашему коду нужно продолжить работу. См. Обработка результата для подтипов результатов.