Nokia открыла исходники AnyJev: библиотека, которая превращает любую LLM в калиброванную модель принятия решений без дообучения
AnyJev — это надстройка на Python, устанавливаемая из PyPI, которая берёт любую open-source LLM (Qwen, OLMo, Granite, Phi, Mistral) и заставляет её работать как решатель. Вместо генерации текста модель выдаёт один из K вариантов с вероятностью, которую можно порогово обрезать. Библиотека поддерживает три типа вопросов: выбор одного из K, да/нет и оценка по бинарной шкале.
Проблема прямого чтения логитов — в двух типах смещений: приоритет меток (модель предпочитает «Yes» независимо от контекста) и позиционное смещение (ответ меняется при перестановке вариантов). AnyJev решает это двумя уровними коррекции. L0 (по умолчанию) делает K циклических сдвигов списка, усредняя результаты в лог-пространстве, и применяет пакетную калибровку по среднему распределению на реальных данных. L1 добавляет температурное масштабирование на основе 100–500 примеров, не меняя ранжирования.
На Qwen3-8B и датасете BANKING77 (20 вариантов, 300 тестов) L0 снизил частоту переворота ответов при изменении порядка с 23% до 7,3%, точность выросла с 74,7% до 80,3%, а калибровочная ошибка (ECE) упала с 0,240 до 0,184. С L1 ECE достигает 0,095, а доля автоопределяемых решений при 5% ошибке — 52% против 7,7% у сырых логитов. На наборе типизированных решений Qwen3-32B с L1 показал ECE 0,036, обогнав оригинальный Jev от TypeSafe AI (0,144).
Библиотека уже протестирована на внутренней задаче маршрутизации запросов в Nokia и дала «многообещающие результаты». Код доступен под Apache-2.0, есть бэкенды для transformers и vLLM с общим префиксом. Для работы L0 нужно K префиллов на решение — на H100 при K=20 и батче 32 это около 0,25 секунды.