Прокси добавляет к ответу единицы миллисекунд. Всё остальное время делают модель, длина промпта и география площадки — и влиять стоит именно на них.
| Слагаемое | Порядок величины | Кто на это влияет |
|---|---|---|
| Ваш канал до нас | 5–40 мс из России | География и провайдер связи |
| Наша обработка | 3–8 мс | Мы. Разбор, проверка ключа, выбор маршрута |
| Наш канал до площадки | 60–200 мс | Мы. Исходящий канал и близость к площадке |
| Время до первого токена | 0.3–8 с | Модель, длина промпта, размышление, загрузка площадки |
| Генерация | 20–150 токенов/с | Модель и площадка |
Практический вывод: оптимизировать имеет смысл две последние строки. Площадки одной модели отвечают по-разному, и какие из них её раздают — видно на вкладке «Провайдеры» карточки модели. Времени до первого токена мы не публикуем: своих замеров у нас нет, а OpenRouter эту метрику наружу не отдаёт.
provider: {"sort": "latency"} или суффикс :fast.effort — главный рычаг задержки, а не размер модели.| Что | Значение | Комментарий |
|---|---|---|
| Ожидание первого байта | 120 с | Дальше — переключение на резервную площадку |
| Пауза внутри стрима | 60 с | Молчащий поток считается оборванным |
| Общая длительность запроса | 15 мин | Хватает на длинную генерацию с размышлением |
Отдельного лимита на одновременные соединения у нас нет — работает только RPM ключа. Для пакетной обработки это означает, что пропускную способность поднимает не увеличение числа потоков сверх RPM, а нормальный планировщик с ограничением конкурентности и очередью.
sem = asyncio.Semaphore(16) # держим ровно столько, сколько разрешает RPM
async def one(item):
async with sem:
return await client.chat.completions.create(
model="deepseek/deepseek-v3:cheap",
messages=[{"role": "user", "content": item}],
)
results = await asyncio.gather(*(one(i) for i in items), return_exceptions=True)Один повтор по резервному маршруту мы уже делаем сами. Ваш повтор — как минимум третья попытка, и запускать его без паузы вредно: он добавляет нагрузки площадке, которая и так не справляется. Правила и коды, которые имеет смысл повторять, — в разделе «Ошибки».
Средняя задержка почти ничего не говорит: распределение времени ответа модели длиннохвостое, и среднее у него всегда красивее правды. Смотрите на 95-й процентиль и на долю запросов дольше вашего порога. Обе величины есть в логе активности в разрезе модели и площадки.