Гайд · TNWS AI
Как сделать streaming-ответ YandexGPT и корректно собрать текст
Потоковая генерация YandexGPT: stream:true, чтение событий, накопление текста, status, отмена и обработка разрыва соединения.
Установите stream:true в completionOptions и обрабатывайте поток по протоколу официального endpoint. Каждый полученный фрагмент — часть незавершённого ответа. Успех подтверждается финальным статусом, а не тем, что пользователь увидел первые слова.
Рабочий пример
{
"modelUri":"gpt://<folder_id>/yandexgpt",
"completionOptions":{
"stream":true,
"temperature":0.3,
"maxTokens":"1000"
},
"messages":[{"role":"user","text":"Составь краткую инструкцию из 5 шагов"}]
}
Проверенные факты
- Поток снижает время до первого видимого фрагмента, но не обязательно полное время.
- Клиент должен различать промежуточные и финальные данные и не сохранять каждый chunk как отдельное сообщение.
- При разрыве текст может оказаться оборванным; его маркируют как незавершённый.
- Кнопка отмены должна закрывать запрос и прекращать отображение, но уже полученные данные могут остаться в интерфейсе.
Порядок действий
- Добавьте stream:true и используйте поддерживаемый клиент для чтения потока.
- На каждом событии обновляйте черновой буфер, не выполняя содержащиеся в тексте команды.
- На финальном status сохраните цельный результат и usage.
- На ошибке пометьте ответ как прерванный и предложите явный повтор.
- Ограничьте длину, время и число одновременных потоков.
Как проверить результат
Искусственно разорвите соединение после нескольких chunks. UI должен показать незавершённость. Затем сгенерируйте пять шагов и проверьте итог только после финала. Сравните time-to-first-chunk и total time.
Ограничения
Точный формат событий зависит от endpoint и SDK. Поток усложняет модерацию текста до показа. Для короткого JSON backend-задачи обычный ответ часто проще.
Чего не делать
- Не считать первый chunk готовым ответом.
- Не запускать команды из незавершённого текста.
- Не делать автоматический повтор без защиты от дублей.
Частые вопросы
Streaming делает ответ быстрее?
Он раньше показывает начало; полное время может не уменьшиться.
Что сохранять в БД?
Цельный подтверждённый результат и технические метрики.
Что делать при обрыве?
Пометить ответ незавершённым и предложить контролируемый повтор.
Подходит ли для JSON?
Только если клиент корректно собирает весь объект до парсинга.
Официальный источник
Проверено 12 сентября 2026 года: https://yandex.cloud/ru/docs/foundation-models/concepts/yandexgpt/
Читайте также
Как настроить function calling в YandexGPT через tools и JSON Schema
Вызов функций YandexGPT: поле tools, JSON Schema, ToolCallList, ToolResultList, серверная проверка аргументов и прав.
Как вызвать YandexGPT через REST API: IAM-токен, modelUri и разбор usage
Рабочий REST-запрос к YandexGPT: роль ai.languageModels.user, IAM-токен, modelUri каталога, completionOptions и проверка usage.
Как использовать embeddings Mistral для семантического поиска по документам
Практическое руководство: рабочий пример, структура ответа, ограничения, негативные тесты и проверка результата для запроса «как использовать embeddings Mistral».
Комментарии
Пока тихо. Скажите первое слово