Выбор провайдера
Одну и ту же модель часто обслуживают несколько провайдеров: у них разные цены, скорость, задержка, лимиты и политика хранения данных. По умолчанию AITUNNEL сам распределяет запросы между ними. Объект provider в теле запроса позволяет управлять этим выбором: закрепить провайдера, исключить ненужных, выбрать самого дешёвого или быстрого, потребовать приватность.
Провайдеры на странице модели
На странице каждой модели в каталоге в разделе «Цены» есть блок «Провайдеры». Там для каждого провайдера указаны:
- точная цена ввода, вывода и кеша в ₽ за 1M токенов — ровно столько спишется, если запрос обработает этот провайдер;
- задержка до первого токена и скорость генерации (перцентили p50–p99 за последние 30 минут), аптайм за 5 минут, 30 минут и сутки;
- контекст, максимальная длина ответа, квантизация, поддержка
tool_choiceи встроенного веб-поиска; - страна, дата-центры, хранит ли провайдер запросы и обучает ли на них модели;
- slug — идентификатор для полей
order,onlyиignore. Нажмите на строку провайдера и кнопку «Копировать».
Если у провайдеров цены отличаются, карточки цен показывают «от» — минимальную цену среди провайдеров, а скидка на кеш — диапазон «от — до».
Как выбирается провайдер по умолчанию
Без provider запросы распределяются между провайдерами модели: предпочтение получают более дешёвые провайдеры без недавних сбоев. Если провайдер вернул ошибку или не ответил, запрос автоматически повторяется у следующего — вы получаете ответ, а не ошибку.
Как задать
Объект provider в теле запроса. Пример: сначала DeepInfra, потом GMICloud, и больше никого.
curl https://api.aitunnel.ru/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-d '{
"model": "deepseek-v3.2",
"provider": {
"order": ["deepinfra", "gmicloud"],
"allow_fallbacks": false
},
"messages": [
{ "role": "user", "content": "Скажи интересный факт" }
]
}'Поля объекта provider
| Поле | Тип | По умолчанию | Что делает |
|---|---|---|---|
order | string[] | — | Провайдеры, которых пробовать первыми, в указанном порядке. Если все они недоступны — запрос уходит к остальным (если не выключено allow_fallbacks). |
allow_fallbacks | boolean | true | false — использовать только провайдеров из order (или only). Если ни один не ответил, запрос завершится ошибкой, а не уйдёт к другому провайдеру. |
only | string[] | — | Разрешить только этих провайдеров. Остальные не используются вообще. |
ignore | string[] | — | Никогда не отправлять запрос этим провайдерам. |
sort | "price" | "throughput" | "latency" | — | Выключить балансировку и пробовать провайдеров по одному критерию: самый дешёвый, самый быстрый (токенов в секунду) или с минимальной задержкой до первого токена. |
require_parameters | boolean | false | Только провайдеры, которые поддерживают все параметры запроса (tools, response_format, reasoning…). По умолчанию неподдерживаемый параметр молча игнорируется. |
data_collection | "allow" | "deny" | "allow" | "deny" — исключить провайдеров, которые хранят запросы или могут обучать на них модели. |
zdr | boolean | false | Только провайдеры с нулевым хранением данных (Zero Data Retention): запрос и ответ не сохраняются у провайдера. |
quantizations | string[] | — | Только перечисленные квантизации: int4, int8, fp4, fp6, fp8, fp16, bf16, fp32, unknown. Квантизация видна в таблице провайдеров на странице модели. |
preferred_min_throughput | number | { p50, p75, p90, p99 } | — | Желаемая скорость, токенов в секунду. Более медленные провайдеры уходят в конец очереди, но не исключаются. |
preferred_max_latency | number | { p50, p75, p90, p99 } | — | Желаемая задержка до первого токена, секунды. Более медленные провайдеры уходят в конец очереди, но не исключаются. |
Поля можно сочетать: например, order + ignore + data_collection. Фильтры (only, ignore, quantizations, data_collection, zdr, require_parameters) сужают список, а order, sort и preferred_* задают порядок внутри оставшихся.
Slug провайдера
deepinfra— все варианты провайдера для этой модели;deepinfra/fp4,google-vertex/global— один конкретный вариант (квантизация или регион).
Slug берите со страницы модели: у разных моделей набор провайдеров разный.
Готовые рецепты
Всегда самый дешёвый
"provider": { "sort": "price" }Только один провайдер, без замены
"provider": {
"only": ["deepinfra"],
"allow_fallbacks": false
}Исключить провайдеров
"provider": { "ignore": ["venice", "baidu"] }Не хранить и не обучать на данных
"provider": {
"data_collection": "deny",
"zdr": true
}Без сильной квантизации
"provider": { "quantizations": ["fp8", "fp16", "bf16"] }Быстрые провайдеры в приоритете, но с запасом
"provider": {
"preferred_min_throughput": 50,
"preferred_max_latency": { "p90": 3 }
}Только те, кто поддерживает все параметры
"provider": { "require_parameters": true }Значения sort
| Значение | Что выбираем |
|---|---|
price | Самый дешёвый провайдер |
throughput | Самая высокая скорость генерации (токенов в секунду) |
latency | Самая низкая задержка до первого токена |
С sort балансировка выключается: провайдеры пробуются строго по выбранному критерию, при ошибке — следующий по списку. Если важна скорость, но не хочется терять запасных провайдеров, используйте preferred_min_throughput и preferred_max_latency — они только понижают медленных в очереди.
Режимы обслуживания (service_tier)
Некоторые провайдеры предлагают отдельные режимы — Flex (дешевле и медленнее), Priority (быстрее под нагрузкой). На странице модели они показаны отдельной таблицей «Режимы обслуживания». Такие варианты используются, только если в запросе указан service_tier. См. Режимы обслуживания.
Если подходящего провайдера нет
Если после всех фильтров не осталось ни одного провайдера, запрос завершается ошибкой 404 и не списывается. В тексте ошибки перечислены провайдеры, которые обслуживают модель, — сверьте slug:
{
"error": {
"code": 404,
"type": "provider_error",
"message": "No allowed providers are available for the selected model. Providers serving …: gmicloud, siliconflow, deepinfra, …",
"request_id": "chat-0J9fQk2vXc8LrT1mNbZa4e"
}
}С allow_fallbacks: false ошибку вернёт и недоступность всех разрешённых провайдеров — это плата за жёсткое закрепление.
Где работает
/chat/completions,/responses,/messagesи/embeddings— все поля.- Batch API — только
provider.only(один провайдер на пакет). - Пресеты и песочница — все поля. В пресете при выключенном «Значения пресета важнее» поля из запроса важнее полей пресета. В Студии — тоже все поля, в параметрах чата.
- Модели с прямым подключением (например, GigaChat) работают через одного провайдера:
providerдля них не применяется, цена фиксированная. На странице модели это отмечено как «прямое подключение». - Генерация изображений, видео, речи и распознавание аудио: выбор провайдера не поддерживается, провайдер выбирается автоматически. Параметры конкретного провайдера для изображений и видео передаются через
provider.options— см. Изображения и Видео.
Вместе с запасными моделями
provider выбирает провайдера внутри одной модели. Массив models переключает на другую модель, если текущая не ответила. Это разные уровни: их можно сочетать. См. Запасные модели.