Biblioteca FAIRouter para C# chega ao NuGet e escolhe o modelo entre 54 opções prontas

A biblioteca FAIRouter para C# chegou ao NuGet, o catálogo de pacotes do .NET, na versão 0.1.0. Com isso, não é mais necessário compilá-la a partir do código-fonte. O roteador escolhe sozinho o modelo de linguagem mais adequado à tarefa, seja a partir da lista definida pelo desenvolvedor, seja entre 54 modelos populares que acompanham o pacote. Um modelo juiz separado avalia a resposta e atribui uma nota de 0 a 1, enquanto o feedback humano ajusta os pesos. A instalação leva um único comando, dotnet add package FAI.Router, e exige o .NET 10. • Os perfis Quality, Balance e Price podem ser trocados a cada requisição • O limite de suficiência bar passa a funcionar após três avaliações humanas • Conexão: OpenRouter, FractalRouter ou servidor compatível com OpenAI

Processado por IA de Habr AI; editado por Hamidun News
Biblioteca FAIRouter para C# chega ao NuGet e escolhe o modelo entre 54 opções prontas
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1Os perfis Quality, Balance e Price podem ser trocados a cada requisição
Dado-chave #2O limite de suficiência bar passa a funcionar após três avaliações humanas
ConexãoOpenRouter, FractalRouter ou servidor compatível com OpenAI

A biblioteca FAIRouter, que roteia requisições entre modelos de linguagem, agora está disponível no NuGet, o catálogo de pacotes da plataforma .NET. O pacote se chama FAI.

Router, a versão atual é a 0.1.0, e não é mais preciso compilá-lo a partir do código-fonte.

Cada modelo tem preço, velocidade e pontos fortes diferentes, por isso o FAIRouter escolhe sozinho quem vai executar cada tarefa: ou a partir de uma lista definida pelo desenvolvedor, ou entre 54 modelos populares incluídos no pacote. A resposta pronta é verificada por um modelo juiz, e depois o roteador aprende com o feedback humano. O esquema tem duas partes: o roteador escolhe o modelo, o juiz aceita ou critica o resultado, e os dois são treinados.

Instalação e primeira requisição

É preciso ter o .NET 10 e uma chave de API de um provedor de modelos. Nos exemplos, o autor usa o OpenRouter e guarda a chave na variável de ambiente OPENROUTER_API_KEY. O projeto de console é criado da forma padrão, e em seguida o pacote é adicionado com o comando dotnet add package FAI.Router.

Depois, basta chamar FaiRouter.FromOpenRouterAsync e passar a chave, a lista de identificadores de modelos e o caminho do arquivo de banco de dados. No exemplo, os candidatos são google/gemini-2.5-flash, openai/gpt-4.1-mini e anthropic/claude-haiku-4.5. O arquivo fai-router.db armazena os pesos e o registro de turnos; se ele não existir, é criado. Se a lista de modelos não for informada, a escolha é feita entre os 54 modelos que acompanham o pacote.

O método AskAsync retorna um objeto RouterAnswer com quatro campos: Winner (o modelo escolhido), Text (a resposta), Score (a nota do juiz, de 0 a 1) e Critic (as divergências, item por item, entre o pedido e a resposta). Se a tarefa pedia quatro seções e uma tabela, mas veio uma seção sem tabela, isso aparece no Critic. Por padrão, o juiz é o openai/gpt-4o-mini, acessado pelo mesmo provedor.

Treinamento, perfis e limite de suficiência

O mais interessante começa com o feedback. A pessoa dá uma nota de 0 a 1, em que 1 significa uma resposta excelente e 0,2, uma resposta fraca. Para isso, chama-se router.Feedback, depois Train com o número de épocas desejado e, por fim, Save. Os pesos são gravados no banco, e, em tarefas semelhantes, o roteador leva em conta a experiência acumulada. É possível acumular feedbacks e treinar o roteador com menos frequência, por exemplo uma vez por dia. O registro guarda os textos das requisições, e vale ter isso em mente.

O equilíbrio entre preço e qualidade é definido por três perfis prontos: Quality, Balance e Price. Por padrão, é usado o Balance, e o perfil pode ser trocado a cada requisição pelo parâmetro weights.

Há também outra regra: encontrar os modelos capazes de resolver a tarefa e escolher, entre eles, o mais barato e rápido. Para isso existe o limite de suficiência bar, que é a probabilidade mínima de a resposta agradar a uma pessoa. O campo Reached mostra se algum modelo atingiu esse limite. Ele só passa a funcionar quando houver pelo menos três avaliações humanas acumuladas.

O AskAsync também aceita uma conversa inteira. A tarefa é definida pela última mensagem do usuário, mas o modelo enxerga todo o histórico.

Modelos próprios, ferramentas e agentes

Há três formas de conexão: FromOpenRouterAsync para o OpenRouter, FromFractalRouterAsync para o FractalRouter e FromOpenAiCompatibleAsync para qualquer servidor com o protocolo OpenAI chat completions. A última opção também serve para um modelo próprio. O preço desse modelo precisa ser informado manualmente, por exemplo Price(0, 0). Se o seu servidor não tiver o modelo gpt-4o-mini, outro modelo juiz pode ser indicado no parâmetro judgeModel.

É possível escolher não só modelos, mas também ferramentas e agentes. Para isso, o construtor do FaiRouter recebe uma lista de objetos BaseRoutedElement e uma função que executa o candidato escolhido. No exemplo, há duas opções de busca: deep-search (preço de 5 por milhão de tokens de entrada e 20 por milhão de tokens de saída, velocidade de 30 tokens por segundo) e fast-search (preço de 1 e 2, velocidade de 200 tokens por segundo).

No caso das ferramentas, esses números são convencionais, e o que importa é apenas a proporção entre eles. A função RunSearchAsync é escrita pelo próprio desenvolvedor: ela executa a busca escolhida e retorna o texto. Esses candidatos começam com pesos aleatórios, por isso, no início, precisam do seu feedback.

Licença e documentação

O pacote é distribuído sob a licença Apache-2.0. O código-fonte e a documentação detalhada estão publicados no GitHub, e comentários e dúvidas podem ser deixados na seção de issues. Todos os exemplos do artigo foram feitos com a versão 0.1.0. Para testar o FAIRouter, bastam um comando de instalação e algumas linhas de código. Os autores explicaram a matemática da biblioteca, do vetor da tarefa e da previsão de qualidade até o juiz e o treinamento com feedback, em um artigo separado.

História

Perguntas frequentes sobre a notícia

O que se sabe sobre Instalação e primeira requisição?

É preciso ter o .NET 10 e uma chave de API de um provedor de modelos. Nos exemplos, o autor usa o OpenRouter e guarda a chave na variável de ambiente OPENROUTER_API_KEY. O projeto de console é criado da forma padrão, e em seguida o pacote é adicionado com o comando dotnet add package FAI.Router. Depois, basta chamar FaiRouter.FromOpenRouterAsync e passar a chave, a lista de identificadores de modelos e o caminho do arquivo de banco de dados. No exemplo, os candidatos são google/gemini-2.5-flash, openai/gpt-4.1-mini e anthropic/claude-haiku-4.5. O arquivo fai-router.db armaz

O que se sabe sobre Treinamento, perfis e limite de suficiência?

O mais interessante começa com o feedback. A pessoa dá uma nota de 0 a 1, em que 1 significa uma resposta excelente e 0,2, uma resposta fraca. Para isso, chama-se router.Feedback, depois Train com o número de épocas desejado e, por fim, Save. Os pesos são gravados no banco, e, em tarefas semelhantes, o roteador leva em conta a experiência acumulada. É possível acumular feedbacks e treinar o roteador com menos frequência, por exemplo uma vez por dia. O registro guarda os textos das requisições, e vale ter isso em mente. O equilíbrio entre preço e qualidade é definido por trê

O que se sabe sobre Modelos próprios, ferramentas e agentes?

Há três formas de conexão: FromOpenRouterAsync para o OpenRouter, FromFractalRouterAsync para o FractalRouter e FromOpenAiCompatibleAsync para qualquer servidor com o protocolo OpenAI chat completions. A última opção também serve para um modelo próprio. O preço desse modelo precisa ser informado manualmente, por exemplo Price(0, 0). Se o seu servidor não tiver o modelo gpt-4o-mini, outro modelo juiz pode ser indicado no parâmetro judgeModel. É possível escolher não só modelos, mas também ferramentas e agentes. Para isso, o construtor do FaiRouter recebe uma lista de objetos

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…