Проверяет понимание концепции потоковой передачи ответов LLM, её назначения и реализации.
Когда вы задаёте вопрос большой языковой модели, она генерирует ответ последовательно, токен за токеном. Без стриминга пользователь ждёт, пока модель завершит весь ответ, и только потом получает его целиком. Стриминг позволяет отправлять каждый сгенерированный токен клиенту сразу после его появления, создавая эффект живого набора текста.
На практике стриминг чаще всего реализуется через Server-Sent Events (SSE) или WebSocket. SSE проще, так как работает поверх обычного HTTP и автоматически переподключается. Пример на Node.js с использованием Express:
app.get('/stream', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
const tokens = ['Привет', ', ', 'мир', '!'];
let i = 0;
const interval = setInterval(() => {
if (i < tokens.length) {
res.write(`data: ${tokens[i]}\n\n`);
i++;
} else {
clearInterval(interval);
res.end();
}
}, 100);
});На клиенте используется EventSource для приёма событий:
const source = new EventSource('/stream');
source.onmessage = (event) => {
console.log(event.data); // каждый токен
};Стриминг — обязательная практика для современных LLM-приложений, особенно чат-ботов и ассистентов. Он улучшает пользовательский опыт и позволяет строить интерактивные интерфейсы. Применяйте его везде, где важна скорость отклика и плавность вывода.