package pw.binom.llmproxy import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds /** Предел времени на весь запрос к апстриму, мс: от отправки до приёма всего ответа (включая стриминг). */ const val UPSTREAM_REQUEST_TIMEOUT_MS: Long = 5 * 60_000L /** * Default «watchdog» на первый байт тела стрим-ответа: если апстрим не прислал * ни одного байта за это время, прокси считает это сбоем апстрима и * фейловерит (освобождает слот конкурентности, считает ошибку в backoff и * идёт к следующему апстриму модели). Применяется ТОЛЬКО к stream=true * запросам; для non-stream работает общий [UPSTREAM_REQUEST_TIMEOUT_MS]. * Отключается явным `first_byte_timeout: PT0S` на апстриме или провайдере. */ val DEFAULT_FIRST_BYTE_TIMEOUT: Duration = 30.seconds /** * Default интервал фоновой проверки («пинга») апстрима, который сейчас в * backoff-откате: пока апстрим молчит, HealthProber шлёт ему минимальный * запрос (2+2=?, max_tokens=4) каждые [DEFAULT_PROBE_INTERVAL], и как только * он отвечает — снимает его с отката раньше, чем истечёт интервал бэкоффа. * Отключается явным `probe_interval: PT0S` на апстриме или провайдере. */ val DEFAULT_PROBE_INTERVAL: Duration = 1.seconds