Перейти к основному содержанию

Обзор

Claude Agent SDK поддерживает два различных режима ввода для взаимодействия с агентами:
  • Режим Streaming Input (По умолчанию и рекомендуется) - Постоянная интерактивная сессия
  • Single Message Input - Одноразовые запросы, которые используют состояние сессии и возобновление
Это руководство объясняет различия, преимущества и варианты использования каждого режима, чтобы помочь вам выбрать правильный подход для вашего приложения. Режим streaming input - это предпочтительный способ использования Claude Agent SDK. Он обеспечивает полный доступ к возможностям агента и позволяет создавать богатые интерактивные впечатления. Он позволяет агенту работать как долгоживущий процесс, который принимает пользовательский ввод, обрабатывает прерывания, выводит запросы разрешений и управляет сессией.

Как это работает

Преимущества

Загрузка изображений

Прикрепляйте изображения непосредственно к сообщениям для визуального анализа и понимания

Очередь сообщений

Отправляйте несколько сообщений, которые обрабатываются последовательно, с возможностью прерывания

Интеграция инструментов

Полный доступ ко всем инструментам и пользовательским MCP серверам во время сессии

Обратная связь в реальном времени

Смотрите ответы по мере их создания, а не только финальные результаты

Сохранение контекста

Сохраняйте контекст разговора между несколькими ходами естественным образом

Пример реализации

В TypeScript SDK, если ваш генератор сообщений выбросит исключение, например, когда файл, который он читает, отсутствует, поток завершится с ошибкой, которая гласит Claude Code process aborted by user вместо исходной ошибки, поэтому сначала проверьте код внутри вашего генератора, когда вы видите это сообщение. Ошибке также может предшествовать длинная минифицированная строка объединённого исходного кода SDK, поэтому прочитайте до конца вывода, чтобы найти текст ошибки.В Python SDK исключение генератора регистрируется на уровне отладки, и сессия зависает без выброса исключения, поэтому если сессия streaming зависает без вывода, включите логирование отладки и проверьте ваш генератор.

Ввод одного сообщения

Ввод одного сообщения проще, но более ограничен.

Когда использовать ввод одного сообщения

Используйте ввод одного сообщения когда:
  • Вам нужен одноразовый ответ
  • Вам не нужны вложения изображений или методы управления в середине сеанса
  • Вам нужно работать в безгосударственной среде, такой как lambda функция

Ограничения

Режим ввода одного сообщения не поддерживает:
  • Прямое вложение изображений в сообщения
  • Динамическую очередь сообщений
  • Прерывание в реальном времени
  • Естественные многоходовые разговоры
Если запрос заканчивается результатом ошибки, например error_max_turns, один вызов query() вызывает ошибку, которая включает текст сбоя после выдачи финального сообщения результата, поэтому оберните цикл в блок try, если вашему коду нужно продолжить работу. См. Обработка результата для подтипов результатов.

Пример реализации