Skip to content

fix(llm): не ронять задачу из-за мёртвого BYOK-ключа - #13

Merged
fUS1ONd merged 1 commit into
devfrom
fix/byok-auth-fallback
Jul 27, 2026
Merged

fix(llm): не ронять задачу из-за мёртвого BYOK-ключа#13
fUS1ONd merged 1 commit into
devfrom
fix/byok-auth-fallback

Conversation

@fUS1ONd

@fUS1ONd fUS1ONd commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Проблема

Прод-задача упала с 401 ACCOUNT_STATE_INVALID — «The bound service account is deleted or disabled».

По логу видно всю цепочку внутри одного запроса: OpenRouter перебрал привязанные Google-ключи, получил 429 Quota exceeded ... quotaValue: 20, model: gemini-3.6-flash от рабочих (суточная квота free-tier исчерпана), а на последнем — 401 от ключа с удалённым service account.

Этот 401 обрывал перебор моделей, хотя gemini-3.5-flash и gemini-3.5-flash-lite в тот момент отвечали нормально и стоят следующими в LLM_MODELS_SUBSPLIT. Задача упала целиком вместо мягкой деградации.

Что изменено

Провайдерский отказ BYOK (is_byok: true, provider_name: "Google AI Studio") трактуется как отказ конкретного кандидата: модель уходит в cooldown на 300 с, перебор продолжается со следующей.

Невалидный ключ самого OpenRouter — это ошибка конфигурации, а не отказ кандидата, поэтому пробрасывается сразу, как и раньше.

Проверка

  • 499 passed
  • ruff check / ruff format --check чисты
  • три регрессионных теста: fallback при BYOK-401, тот же случай с развёрнутым SDK телом ответа, и отсутствие fallback при обычной ошибке аутентификации OpenRouter

Публичный API не менялся.

OpenRouter перебирает привязанные Google-ключи внутри одного запроса. Если у
рабочих ключей исчерпана суточная квота модели, очередь доходит до ключа с
удалённым service account, и провайдер отвечает 401 ACCOUNT_STATE_INVALID.

Такой 401 обрывал перебор моделей, хотя следующие модели в списке доступны, и
задача падала целиком. Теперь провайдерский отказ BYOK трактуется как отказ
конкретного кандидата: модель уходит в cooldown, перебор продолжается.
Невалидный ключ самого OpenRouter по-прежнему пробрасывается сразу.
@fUS1ONd
fUS1ONd merged commit 3c587c2 into dev Jul 27, 2026
3 checks passed
@fUS1ONd
fUS1ONd deleted the fix/byok-auth-fallback branch July 27, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant