Потоковые ответы ИИ-прокси: когда нужен stream=true

Как работает streaming в OpenAI-совместимом ИИ-прокси: SSE-чанки, первая порция ответа, финальный usage и обработка обрыва.

Article

Обычный запрос возвращает ответ после завершения генерации. Для короткой классификации это нормально, но в чате пользователь смотрит на пустой экран. ИИ-прокси Gitsell поддерживает потоковый режим для совместимых моделей: текст приходит частями.

Как включить streaming

stream = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "Объясни план обновления 1С"}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    delta = chunk.choices[0].delta.content if chunk.choices else None
    if delta:
        print(delta, end="", flush=True)

Пользователь видит начало раньше, хотя полное время генерации может почти не измениться.

Что происходит с учётом токенов

Промежуточные чанки содержат части текста. Итоговый чанк включает usage; ИИ-прокси использует его для списания и возвращает Gitsell Tokens. Клиент не должен завершать соединение сразу после последнего видимого слова — нужно дочитать поток до [DONE].

Если соединение оборвалось, частичный текст может отображаться, но приложение обязано пометить ответ незавершённым. Не сохраняйте его как окончательное решение и не запускайте по нему действие.

Когда поток не нужен

Для извлечения полей обычный ответ проще. Для диалога, объяснения или генерации кода streaming улучшает восприятие.

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

Статьи по теме