Route proof in responses
Для не-streaming запросов к chat/completions (и при использовании маршрутизатора) API добавляет в ответ заголовки и поле в теле с фактическими данными о выбранной модели и провайдере.
Заголовки ответа
| Заголовок | Описание |
|---|---|
| x-alltokens-request-id | ID генерации (тот же, что в теле ответа) |
| x-alltokens-route-mode | Режим: model, provider или fixed |
| x-alltokens-chosen-model | Фактическая модель (например mistralai/mistral-nemo) |
| x-alltokens-chosen-provider | Провайдер, обработавший запрос (например DeepInfra) |
| x-alltokens-failover-count | Количество переключений при сбоях (пока 0) |
| x-alltokens-total-latency-ms | Общая латентность запроса (мс) |
| x-alltokens-ttft-ms | Оценка time-to-first-token (мс), если доступно |
Данные берутся из метаданных выполнения запроса.
Поле в теле: alltokens_route
В корень JSON ответа completions добавляется объект:
json
"alltokens_route": {
"trace_id": "<request-id>",
"candidates": { "count": 0 },
"decision_reason": "router_selected"
}| Поле | Описание |
|---|---|
| trace_id | Внутренний ID запроса |
| candidates.count | Зарезервировано |
| decision_reason | Краткая причина выбора (идентификатор режима/роутера) |
Типичные значения decision_reason: идентификатор роутера (например router_auto), cheapest_under_budget, fastest_available, balanced_best_match, fixed_model, provider_fallback.
Когда заголовки и alltokens_route есть
- Запрос к chat/completions (или completions) с stream: false.
- В ответе есть поле id (generation id), и метаданные генерации успешно получены (при небольшой задержке записи метаданных они подставляются после повторных попыток).
При stream: true заголовки и alltokens_route в поток не добавляются. Чтобы получить те же данные после стрима, используйте Generation или Route explain по полю id из chunk'ов.