Об этом проекте

Jano — минималистичный HTTP-роутер, совместимый с OpenAI, предназначенный для пользователей, запускающих несколько локальных больших языковых моделей на одной видеокарте. Он снижает накладные расходы за счёт реализации жадной пакетной обработки: вместо переключения моделей при каждом изменении запроса он сначала обрабатывает все ожидающие запросы для загруженной модели и переключается только при необходимости. Это может уменьшить количество переключений моделей с нескольких до одного за всплеск, экономя значительное время (от 30 секунд до 3 минут) на локальном оборудовании. Jano поддерживает как локальные бэкенды (например, llama-server или vLLM), так и удалённые API (например, DeepSeek), с автоматическим переименовыванием названий моделей для удалённых провайдеров. В него встроена телеметрия через эндпоинты /health, /status и метрики Prometheus, отслеживающие глубину очереди, длительность переключения, пропускную способность токенов и состояние бэкенда. Конфигурация выполняется с помощью переменных окружения и файла models.json, где пользователи определяют имена моделей, URL, псевдонимы и необязательные скрипты переключения. Контракт скрипта переключения прост: получив имя модели, он должен активировать этот бэкенд и корректно завершиться; необязательная отчётность о статусе помогает обнаружить начальное состояние. Jano сериализует все запросы для каждого бэкенда, чтобы упростить логику, что делает его идеальным для персональных или небольших установок, а не для мультиарендных сервисов. Он не управляет температурой GPU или системными ресурсами — это выходит за рамки его возможностей. Разработанный как тонкий слой поверх существующих инструментов, Jano предоставляет явный контроль над переключением моделей, совместим с любым OpenAI-совместимым бэкендом и прозрачно передаёт потоковую обработку и вызовы инструментов. Не требуется, если вы используете Ollama или одну модель; лучше всего подходит для пользователей, у которых уже есть пользовательские бэкенды и которым нужен детальный контроль над маршрутизацией и переключением.