Разработка

Потоковые ответы: как работает streaming

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

APICODIK API для потоковых ответов модели

Показывайте ответ по мере генерации

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

Для OpenAI-совместимого Chat Completions поток включается параметром stream. События могут содержать текст, части вызова инструмента и служебные поля — не каждое событие является готовым текстом.

Прочитайте поток через SDK

Пример на Python использует те же переменные окружения, что и обычный запрос. Проверяйте наличие choices и текстового delta перед выводом.

python
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 в начале потока не гарантирует успешного завершения генерации. Обработайте ошибку во время чтения и сохраните уже полученный текст отдельно от полностью завершённого ответа.

Не повторяйте оборванный запрос автоматически без ограничений: часть работы могла быть выполнена и учтена. Предусмотрите отмену запроса пользователем и разумный таймаут.

Все статьи блога