Hermes Agent f45ed0d11c
Build LLM Proxy / Build and push (release) Successful in 22s
feat: тайминг-лог запросов ([llm-proxy] chat model=... status=... в Nms)
2026-08-20 17:39:18 +03:00

llm-proxy

Прозрачная прослойка OpenAI API перед RouterAI (routerai.ru). Принимает /v1/chat/completions и /v1/models, модифицирует запрос и проксирует дальше.

Что добавляет в запрос

  1. provider.ignore — исключение дорогих провайдеров (список из env EXCLUDED_PROVIDERS, напр. deepseek) + allow_fallbacks: false (иначе ignore не жёсткий — RouterAI может уйти на исключённого резервной попыткой).
  2. reasoning: {"enabled": false} — для моделей с суффиксом -no-think (отключение думанья; проверено на deepseek/deepseek-v4-flash-0731: работает reasoning.enabled=false, не работает include_reasoning=false). Суффикс снимается перед отправкой — RouterAI видит оригинальное имя.

Каталог /v1/models

Модели, чей id содержит любую из подстрок THINKING_MODELS, дублируются в каталоге с суффиксом -no-think (напр. deepseek/deepseek-v4-flash-0731-no-think).

Конфиг (env)

Переменная Default Описание
PORT 8100 Порт сервера
UPSTREAM_URL https://routerai.ru/api/v1 Куда проксировать
ROUTER_API_KEY — (обязателен) Bearer-ключ RouterAI
EXCLUDED_PROVIDERS пусто slug'и провайдеров через запятую
THINKING_MODELS deepseek/deepseek-v4-flash-0731,deepseek/deepseek-v4-flash подстроки id «думающих» моделей

Сборка и деплой

  • CI (Gitea Actions, на release): ./gradlew shadowJar → образ images.binom.pw/llm-proxy:<tag> (zot).
  • Запуск на 76.179 (llm-router): podman-compose up -d из podman-compose.yaml (образ тянется из images.binom.pw, сеть bifrost_default — туда же Bifrost ходит по имени llm-proxy).
  • Bifrost: в config_providers провайдера Routerai network_config_json.base_url = http://llm-proxy:8100 (после смены — рестарт bifrost_gateway).
S
Description
OpenAI-прослойка перед RouterAI (provider.ignore + no-think)
Readme 625 KiB
14 Latest
2026-09-14 22:06:15 +00:00
Languages
Kotlin 99.9%