Содержание

Пользователи и ключи

Политика живёт на человеке, ключи её наследуют. Это главное, что стоит понять про эту страницу.

Учётная запись

Поле Смысл
Адрес и имя вход и подпись в интерфейсе
Роль admin видит панель; user — только свои ключи и расход
Множитель стоимости наценка на все его ключи
Ключей не больше потолок; пусто — общий лимит, ноль — ни одного
Метки визуальные ярлыки, гейт их не читает

Источник учётной записи — локальный пароль (Argon2id) или каталог (см. Вход через каталог).

Последнего администратора нельзя ни разжаловать, ни удалить: иначе панель осталась бы без входа, а путь восстановления — ручной INSERT.

Множитель стоимости

Наценка поверх цены модели. Её применяет гейт при расчёте запроса, поэтому она попадает и в журнал, и в накопленный расход, и в бюджет, который с ним сравнивается — все три говорят в одних единицах.

Одна на человека, а не на ключ. Иначе у одного человека с ключом на ноутбуке и ключом в CI были бы две разные цены, и счёт зависел бы от того, каким credential сделан запрос. Ключ переспорить наценку не может.

Служебный ключ без владельца тарифицируется по себестоимости: наследовать не от кого.

Ноль запрещён. Ключ, который никогда не накапливает расход, выглядит точно как отсутствующая тарифная карта, а «бесплатно» в этой панели уже выражается ценой ноль.

Владельцу наценка не показывается. Он видит уже умноженную цену — и в валюте отображения, если она задана.

Ключи

Один человек — сколько угодно ключей, до потолка. Ключ на машину или на задачу: потерянный отзывается сам по себе, не трогая остальные.

Поле Смысл
Название видно в журнале
Владелец откуда берётся наценка; пусто — служебный ключ
Запросов в минуту (rpm) пусто — без ограничения, ноль — запретить всё
Токенов в минуту (tpm) то же
Бюджет в долларах; при исчерпании 402
Сброс бюджета ежедневно / еженедельно / ежемесячно
Действует до срок действия
Разрешённые провайдеры пусто — все
Разрешённые модели пусто — все

Пусто и ноль — намеренно разные значения: пусто снимает потолок, ноль ставит его в «ничего нельзя».

Сырое значение ключа показывается один раз, при создании. В базе только SHA-256: утёкшая база не воспроизводится против гейта. Потерянный ключ не восстанавливается — только перевыпускается, и старое значение перестаёт работать в тот же момент.

Почему SHA-256, а не медленный хеш: это 256 бит машинной энтропии, а не человеческий пароль — низкоэнтропийного пространства перебора, от которого защищал бы KDF, здесь нет. А проверять приходится на каждом запросе.

Ограничения доступа

Проверяются по уже разрешённой цели, поэтому работают и с префиксом, и без. Правило можно написать любым из двух способов — gpt-4o или openai/gpt-4o — и обойти его, написав запрос иначе, не получится.

Регистр не важен, см. Адресация моделей.

Лимит rpm и tpm

rpm проверяется до запроса. tpm — по уже потраченному за минуту, поэтому один запрос может его превысить: стоимость запроса неизвестна до его завершения, а отказывать начинать работу, цена которой ещё не знаема, — хуже.

Окно фиксированное, минутное: две целых числа на ключ, что имеет значение, когда лимитер стоит перед каждым запросом. Пограничный эффект — до двойной скорости на стыке окон — приемлем для квоты, которая существует чтобы остановить разогнавшегося клиента, а не чтобы точно формировать трафик.

Самообслуживание

Если включено в настройках, человек без прав администратора выпускает ключи сам, на странице «Мои ключи».

Ключ выпускается с потолками из политики самообслуживания: rpm, tpm, бюджет и период сброса. Лимиты берутся из политики, а не из формы — ключ, который человек выдаёт себе, не должен быть ключом, размер которого он же и выбирает.

Владелец может опустить лимиты своего ключа ниже выданных, но не поднять. Попытка поднять отклоняется, а не подрезается молча: тихо записать другое число, чем набрано, — так человек и приходит к уверенности в лимите, которого у него нет. Пустое поле означает «сколько разрешено», а не «без ограничения».

Владелец может и удалить свой ключ: держать несколько имеет смысл только если один можно отдать. История запросов при этом остаётся — она денормализована.

Потолок числа ключей один и тот же, выпускаете ли вы ключ себе или его выдаёт администратор: обойти его через чужие руки нельзя. Администратору, которому нужен ещё один, следует поднять потолок человеку — так остаётся один ответ на вопрос «сколько ему можно».

Что видит не-администратор

Страница «Мои ключи»: свои ключи и их лимиты, расход за 30 дней, разбивка по моделям и по дням, последние запросы со временем и скоростью, цены доступных моделей — уже с наценкой и в валюте отображения.

Ни наценки, ни чужих ключей, ни провайдеров, ни журнала целиком. Каждый запрос этой страницы ограничен ключами, которыми владеет вошедший.