Redis очередь usage (RESP)
CLIProxyAPI предоставляет минимальный Redis RESP интерфейс на том же TCP-порту, что и HTTP API (по умолчанию 8317). Он предназначен для получения последних usage-записей по запросам в формате JSON, чтобы внешние сборщики могли забирать статистику без парсинга логов.
Доступность
- RESP интерфейс доступен только когда включён Management (то же условие, что и для
/v0/management). Если Management выключен, RESP соединения закрываются сразу. - Используется тот же listener, что и для HTTP/HTTPS. Если включён TLS для API сервера, RESP работает через тот же TLS listener.
Аутентификация
- Используйте Management key (тот же секрет, что и для
/v0/management). - Поддерживаемые формы:
AUTH <password>AUTH <username> <password>(username игнорируется; только для совместимости)
- Политика IP-ban общая с Management API: 5 подряд неудач приводят к временному бану.
Включение публикации usage
Очередь получает записи только если включена публикация usage:
- В конфиге: установите
usage-statistics-enabled: trueи перезапустите/выполните hot-reload - Или через Management API:
PUT /usage-statistics-enabledс{ "value": true }
Команды
Это не полноценный Redis. Реализованы только:
AUTHLPOP <key> [count]RPOP <key> [count]
Примечания:
- Аргумент
<key>сейчас игнорируется. Используйтеqueueдля читаемости. - Без
countLPOP/RPOPвозвращают один Bulk String (JSON) илиnil, если очередь пуста. - С
countвозвращается массив Bulk String; пустой массив при пустой очереди. - Записи хранятся только в памяти ~1 минуту. Опрашивайте часто, если важна минимизация потерь.
Примеры
С redis-cli:
bash
# получить 1 элемент (печатает JSON)
redis-cli -h 127.0.0.1 -p 8317 -a "<MANAGEMENT_KEY>" --no-auth-warning --raw LPOP queue
# получить до 50 элементов
redis-cli -h 127.0.0.1 -p 8317 -a "<MANAGEMENT_KEY>" --no-auth-warning --raw RPOP queue 50Схема payload
Каждый элемент очереди — JSON объект со следующими полями:
timestamp(строка времени RFC 3339)latency_ms(целое число)source(строка)auth_index(строка)tokens:input_tokens(целое число)output_tokens(целое число)reasoning_tokens(целое число)cached_tokens(целое число)total_tokens(целое число)
failed(boolean)provider(строка)model(строка)endpoint(строка, напримерPOST /v1/chat/completions)auth_type(строка)api_key(строка)request_id(строка)
Пример:
json
{
"timestamp": "2026-04-25T00:00:00Z",
"latency_ms": 1500,
"source": "[email protected]",
"auth_index": "0",
"tokens": {
"input_tokens": 10,
"output_tokens": 20,
"reasoning_tokens": 0,
"cached_tokens": 0,
"total_tokens": 30
},
"failed": false,
"provider": "openai",
"model": "gpt-5.4",
"endpoint": "POST /v1/chat/completions",
"auth_type": "apikey",
"api_key": "test-key",
"request_id": "ctx-request-id"
}