Потоковые ответы: как работает streaming
Получаем текст по частям и корректно обрабатываем обрыв потока.

Показывайте ответ по мере генерации
В потоковом режиме приложение получает части ответа, пока модель продолжает работу. Пользователь может начать читать раньше, хотя общая длительность генерации не обязательно сокращается.
Для OpenAI-совместимого Chat Completions поток включается параметром stream. События могут содержать текст, части вызова инструмента и служебные поля — не каждое событие является готовым текстом.
Прочитайте поток через SDK
Пример на Python использует те же переменные окружения, что и обычный запрос. Проверяйте наличие choices и текстового delta перед выводом.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://apicodik.ai/v1",
api_key=os.environ["APICODIK_API_KEY"],
max_retries=0,
)
stream = client.chat.completions.create(
model=os.environ["APICODIK_MODEL"],
messages=[{"role": "user", "content": "Привет!"}],
stream=True,
)
for chunk in stream:
if chunk.choices:
text = chunk.choices[0].delta.content
if text:
print(text, end="", flush=True)
print()Различайте завершение и обрыв
HTTP 200 в начале потока не гарантирует успешного завершения генерации. Обработайте ошибку во время чтения и сохраните уже полученный текст отдельно от полностью завершённого ответа.
Не повторяйте оборванный запрос автоматически без ограничений: часть работы могла быть выполнена и учтена. Предусмотрите отмену запроса пользователем и разумный таймаут.
