Пользователи и ключи
Политика живёт на человеке, ключи её наследуют. Это главное, что стоит понять про эту страницу.
Учётная запись¶
| Поле | Смысл |
|---|---|
| Адрес и имя | вход и подпись в интерфейсе |
| Роль | 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 дней, разбивка по моделям и по дням, последние запросы со временем и скоростью, цены доступных моделей — уже с наценкой и в валюте отображения.
Ни наценки, ни чужих ключей, ни провайдеров, ни журнала целиком. Каждый запрос этой страницы ограничен ключами, которыми владеет вошедший.