Пустая строка или SSE-комментарий keep-alive во время запроса DeepSeek ещё не означает пустой ответ модели. Сначала проверьте, идёт ли ожидание обработки, чтение потока или уже пришла ошибка.
Сначала отличите ожидание от готового пустого ответа
У DeepSeek документирован механизм поддержания соединения. Пока запрос ждёт начала обработки, без streaming сервер может присылать пустые строки, а в streaming-режиме комментарии SSE вида «: keep-alive». Это служебные данные, а не текст модели. При самостоятельном разборе HTTP их нужно корректно пропускать, не объявляя весь ответ пустым.
Если обработка так и не началась за 10 минут, сервер закрывает соединение. Именно такое условие указано в актуальной документации; это не обещание завершить любой ответ за десять минут. Rate Limit & Isolation.
Что даёт streaming
При stream=true ответ поступает частями, по мере появления данных. В Chat Completions нормальное окончание потока обозначается «data: [DONE]». Поэтому интерфейс может показывать получаемый результат раньше, а журнал приложения позволяет отличить приход служебных комментариев от настоящих фрагментов ответа.
Сам переключатель streaming не гарантирует более быстрое начало генерации. Описание Chat Completions.
Проверка без бесконечного Retry
- Сначала статус сервиса. Откройте официальную status-страницу и смотрите компонент нужного API, а не только веб-чат.
- Затем HTTP-код и тело ошибки. 400 и 422 требуют проверить формат и параметры, 401 связан с ключом, 402 с балансом. Повторять неизменённый запрос в этих случаях бесполезно. Для 429 нужно снизить темп или число одновременных запросов. При 500 и 503 документация рекомендует повтор после паузы. Официальные коды ошибок.
- Проверьте чтение потока. Запишите время отправки, первого содержательного фрагмента, последующих фрагментов и завершения. Не считайте keep-alive новым текстом модели. Успешный HTTP-статус сам по себе ещё не означает, что ваш клиент получил полноценный законченный ответ.
- Ограничьте ожидание и повторы. Практический вариант для приложения: отдельный срок ожидания содержательного ответа, общий срок запроса и небольшой заранее заданный предел повторов с увеличивающимися паузами. Это рекомендация по устройству клиента, а не официальный универсальный тайм-аут DeepSeek.
Не запускайте новый запрос на каждый keep-alive. Учитывайте уже выполняющийся запрос: по документации он занимает одно параллельное соединение до завершения, а лимиты считаются на уровне аккаунта, независимо от ключа. Правила параллельных запросов.
Есть и отдельный случай: если запрос уже завершился, а content содержит только пробелы при JSON Output, проверьте response_format и требование вывести JSON в самом промпте. Документация описывает замену нераспознанного JSON пробелами. Это другая проблема, её не следует путать с пустыми строками во время ожидания. Параметр response_format.
Проверено 9 ноября 2026 года.
Последнее редактирование: