Работа с запросами

Потоковый ответ

Как включить потоковый ответ в AllTokens и получить сведения о запросе после стрима.

Потоковый ответ в AllTokens нужен, когда вы хотите показывать ответ пользователю по мере генерации, а не ждать готовый текст целиком.

Как включить

Добавьте "stream": true в POST /api/v1/chat/completions или POST /api/v1/completions.

{
  "model": "alltokens/auto",
  "stream": true,
  "messages": [
    {"role": "user", "content": "Объясни потоковую выдачу в трёх коротких пунктах"}
  ]
}

Что приходит в ответ

AllTokens возвращает text/event-stream в OpenAI-совместимом формате. Вы читаете чанки по мере поступления и обновляете интерфейс постепенно.

data: {"id":"gen-...","choices":[{"delta":{"content":"Потоковая"}}]}
data: {"id":"gen-...","choices":[{"delta":{"content":" — это"}}]}
data: [DONE]

Что важно после стрима

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

Рекомендуемый порядок

1

Начните читать поток

Показывайте delta.content сразу в UI или логах.

2

Сохраните generation id

Обычно он приходит в чанках и нужен для последующей отладки.

3

После завершения вызовите generation или route explain

Так вы узнаете фактическую модель, провайдера, задержку и стоимость.

Частые вопросы

stream нужен там, где пользователь должен видеть ответ по мере генерации: в чатах, ассистентах и интерактивных UI. Для серверных задач, фоновых процессов и простых интеграций можно спокойно начинать без него.

По id проще отдельно получить итоговые сведения о запросе, фактическую модель, провайдера и дополнительные данные, которые неудобно собирать из кусков потока.

Обычно клиент сам собирает текст из delta.content по чанкам. Если вам также нужны сведения о выполнении запроса, после завершения потока используйте /api/generation или /api/route/explain.

Начните без stream и убедитесь, что обычный запрос работает стабильно. Если поток всё же нужен, проверьте, умеет ли ваш HTTP-клиент читать text/event-stream без буферизации всего ответа.

Куда идти дальше