Безопасность и правоHabr AI→ оригинал

Библиотека FAIRouter для C# вышла на NuGet и выбирает модель из 54 готовых вариантов

Библиотека FAIRouter для C# вышла на NuGet, в каталог пакетов .NET, в версии 0.1.0, поэтому собирать её из исходников больше не нужно. Маршрутизатор сам выбирает языковую модель под задачу: из вашего списка или из 54 популярных моделей, которые входят в комплект пакета. Отдельная модель-судья проверяет ответ и ставит оценку от 0 до 1, а отзывы человека дообучают веса. Установка занимает одну команду, dotnet add package FAI.Router, нужен .NET 10. • Профили Quality, Balance и Price переключаются на каждом запросе • Планка достаточности bar работает после трёх отзывов человека • Подключение: OpenRouter, FractalRouter или OpenAI-совместимый сервер

AI-обработка оригинала Habr AI; редакция Hamidun News
Библиотека FAIRouter для C# вышла на NuGet и выбирает модель из 54 готовых вариантов
Источник: Habr AI. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHabr AI ↗
Главный редактор
Ключевой факт #1Профили Quality, Balance и Price переключаются на каждом запросе
Ключевой факт #2Планка достаточности bar работает после трёх отзывов человека
ПодключениеOpenRouter, FractalRouter или OpenAI-совместимый сервер

Библиотека FAIRouter для маршрутизации запросов между языковыми моделями теперь доступна на NuGet, в каталоге пакетов для платформы .NET. Пакет называется FAI.Router, текущая версия — 0.1.0, и собирать его из исходников больше не нужно. У моделей разные цены, скорость и сильные стороны, поэтому FAIRouter сам выбирает исполнителя под конкретное задание: либо из списка, который задаёт разработчик, либо из 54 популярных моделей, входящих в комплект пакета. Готовый ответ проверяет модель-судья, а затем маршрутизатор учится на отзывах человека. Схема состоит из двух частей: маршрутизатор выбирает модель, судья принимает или критикует результат, и обучаются оба.

Установка и первый запрос

Для работы нужен .NET 10 и ключ поставщика моделей. В примерах автор использует OpenRouter и кладёт ключ в переменную среды OPENROUTER_API_KEY. Консольный проект создаётся стандартно, затем подключается пакет командой dotnet add package FAI.Router.

Дальше достаточно вызвать FaiRouter.FromOpenRouterAsync и передать ключ, список идентификаторов моделей и путь к файлу базы. В примере кандидатами служат google/gemini-2.5-flash, openai/gpt-4.1-mini и anthropic/claude-haiku-4.5. В файле fai-router.db хранятся веса и журнал ходов; если файла нет, он создаётся. Если список моделей не указывать, выбор идёт среди 54 моделей из комплекта.

Метод AskAsync возвращает объект RouterAnswer с четырьмя полями: Winner (выбранная модель), Text (ответ), Score (оценка судьи от 0 до 1) и Critic (расхождения между заказом и ответом по пунктам). Если в задании просили четыре раздела и таблицу, а пришёл один раздел без таблицы, это будет видно в Critic. По умолчанию судьёй работает openai/gpt-4o-mini через того же поставщика.

Обучение, профили и планка достаточности

Самое интересное начинается с отзывов. Человек ставит оценку от 0 до 1, где 1 означает отличный ответ, а 0,2 — слабый. Для этого вызывается router.Feedback, затем Train с заданным числом эпох и Save. Веса сохраняются в базе, и на похожих задачах маршрутизатор учитывает накопленный опыт. Отзывы можно копить и обучать маршрутизатор реже, например раз в сутки. В журнале хранятся тексты запросов, об этом стоит помнить.

Баланс цены и качества задают три готовых профиля: Quality, Balance и Price. По умолчанию используется Balance, а менять профиль можно на каждом запросе через параметр weights.

Есть и другое правило: найти модели, которые справятся с задачей, и выбрать среди них самую дешёвую и быструю. Для этого служит планка достаточности bar — минимальная вероятность того, что ответ понравится человеку. Поле Reached показывает, дотянул ли кто-нибудь до планки. Она начинает работать, когда накопится хотя бы три отзыва человека.

AskAsync принимает и диалог целиком. Задание определяется по последней реплике пользователя, а модель видит всю историю.

Свои модели, инструменты и агенты

Подключиться можно тремя способами: FromOpenRouterAsync для OpenRouter, FromFractalRouterAsync для FractalRouter и FromOpenAiCompatibleAsync для любого сервера с протоколом OpenAI chat completions. Последний вариант подходит и для собственной модели. Цену такой модели нужно указать самому, например Price(0, 0). Если на вашем сервере нет модели gpt-4o-mini, в параметре judgeModel указывают другую модель-судью.

Выбирать можно не только модели, но и инструменты с агентами. Для этого в конструктор FaiRouter передают список объектов BaseRoutedElement и функцию, которая запускает выбранного кандидата. В примере два варианта поиска: deep-search (цена 5 за миллион входных токенов и 20 за миллион выходных, скорость 30 токенов в секунду) и fast-search (цена 1 и 2, скорость 200 токенов в секунду). Для инструментов эти числа условные, важно только их соотношение. Функцию RunSearchAsync разработчик пишет сам: она запускает нужный поиск и возвращает текст. Такие кандидаты стартуют со случайными весами, поэтому первое время им нужны ваши отзывы.

Лицензия и документация

Пакет распространяется под лицензией Apache-2.0. Исходный код и подробная документация опубликованы на GitHub, замечания и вопросы можно оставить в разделе issues. Все примеры в статье собраны на версии 0.1.0. Чтобы попробовать FAIRouter, достаточно одной команды установки и нескольких строк кода. Математику библиотеки — от вектора задачи и прогноза качества до судьи и обучения на отзывах — авторы разобрали в отдельной статье.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: установка и первый запрос?

Для работы нужен .NET 10 и ключ поставщика моделей. В примерах автор использует OpenRouter и кладёт ключ в переменную среды OPENROUTER_API_KEY. Консольный проект создаётся стандартно, затем подключается пакет командой dotnet add package FAI.Router. Дальше достаточно вызвать FaiRouter.FromOpenRouterAsync и передать ключ, список идентификаторов моделей и путь к файлу базы. В примере кандидатами служат google/gemini-2.5-flash, openai/gpt-4.1-mini и anthropic/claude-haiku-4.5. В файле fai-router.db хранятся веса и журнал ходов; если файла нет, он создаётся. Если список моделей

Что известно по теме: обучение, профили и планка достаточности?

Самое интересное начинается с отзывов. Человек ставит оценку от 0 до 1, где 1 означает отличный ответ, а 0,2 — слабый. Для этого вызывается router.Feedback, затем Train с заданным числом эпох и Save. Веса сохраняются в базе, и на похожих задачах маршрутизатор учитывает накопленный опыт. Отзывы можно копить и обучать маршрутизатор реже, например раз в сутки. В журнале хранятся тексты запросов, об этом стоит помнить. Баланс цены и качества задают три готовых профиля: Quality, Balance и Price. По умолчанию используется Balance, а менять профиль можно на каждом запросе через па

Что известно по теме: свои модели, инструменты и агенты?

Подключиться можно тремя способами: FromOpenRouterAsync для OpenRouter, FromFractalRouterAsync для FractalRouter и FromOpenAiCompatibleAsync для любого сервера с протоколом OpenAI chat completions. Последний вариант подходит и для собственной модели. Цену такой модели нужно указать самому, например Price(0, 0). Если на вашем сервере нет модели gpt-4o-mini, в параметре judgeModel указывают другую модель-судью. Выбирать можно не только модели, но и инструменты с агентами. Для этого в конструктор FaiRouter передают список объектов BaseRoutedElement и функцию, которая запускает

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Единое AI-пространство · Nomad

Протестируйте новые LLM и мультимодальные модели в одном окне

Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.

Открыть Nomad AI →Автономный Nomad Agent
Что вы думаете?
Загружаем комментарии…