Логи запросов (Request Logs)
Раздел «Логи» в личном кабинете показывает историю обращений к API моделей: таблица запросов, график активности и панель детализации. Базовые метаданные (модель
Кому подходит
- Участникам — свои запросы: отладка интеграций, ошибки и повторные попытки.
- Владельцу и администратору — запросы всей организации.
- Наблюдателю раздел не показывается.
Раздел «Логи» в кабинете
Пункт навигации «Логи» (в личном аккаунте — «Мои логи») находится в группе account. Участник видит запросы только своих ключей. Владелец и администратор видят запросы организации.
Что доступно без дополнительных настроек:
| Элемент | Описание |
|---|---|
| Таблица generations | Список запросов за выбранный период с фильтрами |
| Bar chart | Активность по часам или дням |
| Детализация | Панель с метриками, повторными попытками и обзором запроса |
| CSV-выгрузка | Экспорт отфильтрованного списка |
| Infinite scroll | Подгрузка следующих страниц при прокрутке вниз |
Данные появляются после каждого успешного или частично успешного запроса к API моделей.
Базовый список vs RAW I/O
| Уровень | Что записывается | Срок хранения RAW | Как включить |
|---|---|---|---|
| Базовый | Модель, провайдер, токены, цены, время ответа, причина завершения, число повторных попыток | — | Всегда |
| RAW I/O | Полный JSON запроса и ответа (после маскирования), хронология повторных попыток | 30 дней | Модуль logging в Policy Rules |
Без включённого I/O-логирования в детализации запроса отображается подсказка и ссылка на раздел Политики. Полный JSON не выгружается архивом — только просмотр по одному запросу через API.
Расширенное I/O-логирование (политики)
Модуль logging в policy rule:
{ "logging": { "enabled": true } }Включение в кабинете — шаг «Логирование I/O» в мастере Policy Rules:
- переключатель «Расширенное логирование (RAW запросы и ответы)»;
- выбор области действия — как у бюджета и контента (
organization,api_key,member,system,virtual_group); - подсказка: «+1% к комиссии на каждый запрос с включённым логированием. Данные хранятся 30 дней в защищённом хранилище.»
Объединение правил (приоритет более узкого scope)
В отличие от rateLimit (наиболее строгий) и access (пересечение), модуль logging работает по принципу «узкое правило важнее широкого» — как наследование с переопределением:
- Собираются подходящие правила по уровням назначения:
api_key→system→member→virtual_group→organization→ глобальные. - От специфичного к общему: первое правило с модулем
loggingопределяет итоговое значение. - Если ни одно правило не содержит
logging— RAW не пишется.
Примеры:
| Правила | Результат для ключа key_debug |
|---|---|
org: enabled=true | RAW для всех ключей |
org: enabled=true, key_debug: enabled=false | RAW выключен для debug-ключа |
org: enabled=false, key_prod: enabled=true | RAW только для prod-ключа |
Комиссия +1%
На запросы, где на момент обработки было включено I/O-логирование (logging_applied=true), к тарифу клиента добавляется +1% (loggingBps = 100). Надбавка начисляется при расчёте стоимости независимо от того, сохранился ли RAW-файл: если запись не удалась, метаданные остаются, RAW может отсутствовать (has_raw_payload=false).
Хранение RAW
- Срок хранения — 30 дней, после чего данные удаляются автоматически.
- Просмотр — только через API платформы (
GET .../payload), по одному запросу.
В RAW JSON фиксируется тело запроса после применения маскирования; отдельный блок redaction описывает применённые фильтры.
Видимость: personal / member / admin
Один и тот же API применяет разный scope в зависимости от роли в организации:
| Сценарий | Список и детали | RAW payload | Колонка «Участник» |
|---|---|---|---|
| Личный аккаунт | Свои запросы | Свои, если логирование включено | скрыта |
| Участник организации (не admin) | Только свои (member_id) | Только свои | скрыта |
| Администратор / владелец | Вся организация | Все с сохранённым RAW | видна (email) |
Фильтр memberId в query доступен только администратору. Участник не может просмотреть запросы коллег даже зная request_id.
Таблица: цены и токены
Состав цены
Цены подтягиваются из расчёта стоимости запроса:
| Поле API / колонка | Смысл |
|---|---|
priceWithoutVatRub / иконка цены | Цена без НДС — чистая цена провайдера |
commissionRub / иконка процента | Комиссия (и доплата за логирование, если включена) |
vatRub / значок НДС | НДС 22% |
clientRub / «Итого» | Итоговая сумма с комиссией и НДС — списание с баланса |
Пока расчёт стоимости в статусе pending, в UI отображается —.
Токены
| Поле | Описание |
|---|---|
inputTokens | Токены ввода |
outputTokens | Токены вывода |
cacheReadTokens | Токены чтения кэша; — в таблице, если 0 |
На узких экранах три значения объединяются в ячейку «Токены» (19 ввод · 185 вывод · 4 096 кэш); на широких — отдельные колонки «Ввод», «Вывод», «Кэш».
Дополнительно в таблице: модель, провайдер, система, скорость (токен/с), причина завершения, ключ, индикатор полной записи.
Infinite scroll и CSV
Пагинация: первая загрузка limit=50, offset=0. При прокрутке к низу таблицы подгружается следующая страница, пока items.length < total. Смена периода или фильтров сбрасывает offset и прокручивает список наверх. Навигация prev/next в панели детализации работает по уже загруженным строкам; при необходимости догружается следующая страница.
CSV: кнопка «Скачать CSV» вызывает export с теми же фильтрами, что и таблица (from, to, model, apiKeyId, memberId, hasRaw). Лимит выгрузки — 50 000 строк; при превышении API возвращает 413 с подсказкой сузить период. Имя файла: generations-{orgSlug}-{from}-{to}.csv.
Колонки CSV зеркалируют таблицу UI, включая cache_read_tokens, price_without_vat_rub, commission_rub, vat_rub, client_cost_rub. Для admin включена member_email; для member/personal — опускается.
API (кратко)
Базовый путь: /api/organization/generations. Требуется членство в организации.
| Метод и путь | Назначение |
|---|---|
GET .../generations | Список + chartBuckets. Query: from, to (default 7 дней), limit/offset, model, apiKeyId, memberId (admin), hasRaw, chartBucket (hour / day) |
GET .../generations/export | CSV за период и фильтры (без limit/offset, max 50k строк) |
GET .../generations/{requestId} | Метаданные одного запроса и сводка по повторным попыткам |
GET .../generations/{requestId}/payload | RAW JSON запроса и ответа. 404 если I/O не включён; 410 Gone если истёк срок хранения (30 дней) |
Ответ списка содержит items[] с полями usageEventId, requestId, finishedAt, modelId, providerId, токены, priceWithoutVatRub, commissionRub, vatRub, clientRub, settlementStatus, throughputTps, finishReason, apiKeyAlias, memberEmail (admin), streaming, latencyMs, fallbackCount, hasRawPayload, loggingApplied.
Что дальше
- Policy Rules (Guardrails) — включение модуля
logging - Расходы и лимиты — биллинг и расчёт стоимости
- Лимиты и квоты — другие модули политик
- Выгрузить расходы — агрегированные отчёты usage