ГлавнаяБлог → Стриминг, таймауты и обрывы в LLM API

Стриминг, таймауты и обрывы в LLM API

Работа с LLM отличается от обычного HTTP тем, что ответ может идти минуту. Стандартные настройки клиента к этому не готовы.

Почему рвётся

Стриминг спасает

При stream: true ответ идёт кусками. Соединение не молчит, а значит прокси его не убьёт. Плюс пользователь видит текст сразу, а не ждёт минуту в тишине.

stream = client.chat.completions.create(
    model="Claude Sonnet 5",
    messages=[{"role": "user", "content": "..."}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Таймауты

Практическое правило: таймаут на первый токен — 60–90 секунд, общий таймаут запроса — несколько минут. Если ставить один короткий таймаут на весь запрос, вы будете рвать легальные длинные ответы.

Ретраи

Повторять можно только если клиенту ещё не ушло ни байта. Иначе вы склеите два ответа и получите мусор. Обрывы сокета до начала стрима — безопасны для повтора, обрывы в середине — нет.

Что делает шлюз

Правильно устроенный LLM-шлюз берёт это на себя: держит длинные соединения, не буферизует стрим, повторяет запрос при обрыве и переключается на резервный апстрим. Вам остаётся только читать поток.

Попробуйте ClaudePoint

Claude, GPT, Gemini и Qwen через один ключ. Без VPN, оплата в рублях.

Получить API-ключ