AnyJev: превращает LLM в типизированные модели принятия решений
AnyJev — библиотека, позволяющая превращать любые LLM в модели принятия решений в стиле Jev, обеспечивая типизированные решения и реальные вероятности без необходимости в дообучении.
Проект направлен на упрощение работы с вероятностными моделями, где тебе не требуется много меток для обучения. AnyJev позволяет получать точные результаты с минимальными затратами, что выгодно отличает его от традиционных подходов. Эта библиотека будет полезна разработчикам, занимающимся машинным обучением, которые хотят интегрировать LLM в свои проекты для принятия информированных решений на основе данных.
AnyJev написан на Python и доступен через PyPI, что облегчает установку с помощью команды pip install anyjev. Тем не менее, он может иметь ограничения в зависимости от качества исходного LLM, поэтому учти это при использовании.
AnyJev — это проект, который позволяет преобразовать любую открытую языковую модель (LLM) в модель принятия решений в стиле Jev. Данный инструмент помогает получать типизированные решения с вероятностями, которые можно использовать для принятия автоматических решений, без необходимости в дообучении моделей. Основная особенность AnyJev заключается в том, что он исправляет неустойчивые ответы моделей, обеспечивая высокую вероятность правильного выбора.
Как это работает
AnyJev предлагает несколько уровней моделей (L0, L1, L2), которые различаются по необходимости меток и способу получения решений:
- raw: не требует меток и использует ограниченный софтмакс для выбора ответов.
- L0: работает без меток, усредняя смещение позиций, но не дает уверенности в качестве.
- L1: требует от 100 до 500 меток для калибровки неопределенности и позволяет изменять ранжирование.
- L2: очень эффективен, требует от 100 до 300 меток и использует закрытую форму для принятия решения.
Решения возвращаются без генерации или парсинга, а вместо этого просто считываются из распределения следующего токена модели. Это позволяет получать более надежные результаты даже при изменении порядка вариантов ответа.
Установка и запуск
Чтобы установить AnyJev, используй команду:
pip install "anyjev[hf]"
Затем, для того чтобы создать решение на основе модели, выполните следующие команды:
python -m anyjev.truncate Qwen/Qwen2.5-7B-Instruct 18 ./qwen-b18
vllm serve ./qwen-b18 --task embed --override-pooler-config '{"pooling_type":"LAST","normalize":false,"softmax":false}'
После этого можно использовать библиотеку чтобы задавать вопросы и получать решения:
from anyjev import Decider, Question
from anyjev.backends.vllm import VLLMBackend
d = Decider(VLLMBackend("http://localhost:8000", "./qwen-b18"), level="L2")
route = Question.choice("Which team should handle this?", ["billing", "technical", "sales", "other"], name="route")
d.fit_head(route, states, labels, layers=[-1])
d.decide(ticket, [route])["route"].distribution
Ограничения
В AnyJev есть несколько ограничений:
- Модели требуют наличия состояния скрытых переменных, что доступно только для некоторых архитектур (например, transformers и vLLM).
- Каждый уровень (в частности L2) требует настроек под конкретный вопрос и модель, поэтому голова модели, обученная для одного вопроса, не будет работать для другого.
- Калибровка не может сделать модель надежной, если она не отвечает корректно изначально.
- Некоторые операции могут негативно сказаться на точности, например, использование только одной метки при наличии доминирующего варианта.
Заключение
AnyJev предоставляет мощный инструмент для интеграции языковых моделей в задачи принятия решений с высокой степенью надежности. Он позволяет значительно повысить качество автоматизации процессов, которые требуют выбора между несколькими вариантами, без необходимости в большом количестве меток для обучения.
Радар проекта: 67 из 100 — крепкий проект
- Импульс 57 ≈ 19 звёзд в день
- Темп разработки 71 56 коммитов за 12 недель
- Зрелость 38 проекту 52 дня, 4 релиза
- Сообщество 46 4 участника, 179 форков
- Свежесть 88 последний коммит — 22 дня назад
- Быстрый старт 55 есть: команда установки, сайт/демо, примеры
- Готовность к продакшену 85 релиз v0.3.0, автосборка, тесты
- Безопасность и доверие 75 лицензия Apache-2.0, организация
- Документация 92 README 12.5 тыс. знаков, 9 разделов, папка docs
- Экосистема 61 13 подписчиков на обновления, 8 тем
Как считаем
Только открытые данные GitHub на 07.11.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: nokia-applied-research/AnyJev →
RepoRadar