A Hugging Face apresenta os modelos de decisão, uma família de modelos que não escrevem uma resposta, mas avaliam opções pré-definidas e devolvem uma distribuição de probabilidades sobre essas opções. A empresa procura definir uma interface comum para estes modelos, sem impor uma arquitetura única.
Os grandes modelos de linguagem (LLM), que produzem a sua resposta token a token, ou seja, pedaço de texto por pedaço de texto, são muito eficazes para redigir, programar ou raciocinar. Mas nem todos os problemas exigem a geração de texto. Tomemos um sistema de apoio ao cliente que recebe a seguinte mensagem: «Fui debitado duas vezes da minha subscrição. Preciso de um reembolso hoje.» O sistema tem de determinar qual a equipa que deve tratar do pedido, o seu grau de urgência e se o cliente está a pedir um reembolso.
Pode-se pedir a um LLM que devolva estas respostas sob a forma de um objeto JSON. Esta abordagem já é comum para classificação e encaminhamento, mas apresenta várias limitações. O modelo não tem a garantia de respeitar o esquema solicitado: pode produzir um JSON inválido, adicionar chaves inesperadas ou responder fora das escolhas permitidas. As bibliotecas de descodificação restrita, como Outlines e XGrammar, reduzem este risco ao limitar os tokens permitidos em cada etapa, mas acrescentam trabalho adicional. Por fim, quando a aplicação apenas precisa de escolher entre respostas conhecidas, a geração completa do texto pode ser supérflua.
Uma interface baseada em probabilidades
Um modelo de decisão recebe um estado, ou seja, a informação a avaliar, e uma lista de perguntas. Devolve decisões acompanhadas de probabilidades. A fonte distingue três tipos de perguntas. O tipo choice seleciona uma opção entre várias. O tipo score avalia algo numa escala ordenada. O tipo noul responde a uma questão sim/não de forma probabilística.
No exemplo apresentado, o modelo autotrust/GEV-26B-Decide atribui à questão de serviço as seguintes probabilidades: Billing 0,998, Technical support 0,001 e Sales 0,001. Para a urgência, os níveis low, medium e high recebem, respetivamente, 0,10, 0,26 e 0,72. A pontuação devolvida corresponde à esperança desta distribuição, ou seja, 1,7, e não a um nível escolhido a meio caminho. Para a pergunta «O cliente está a pedir um reembolso?», o modelo devolve diretamente a probabilidade de uma resposta positiva, neste caso 0,92.
A noção de confiança, calculada para as perguntas do tipo choice e score, resume a concentração destas probabilidades. O conceito não é totalmente novo: a empresa TypeSafe AI tinha apresentado Jev, qualificado como modelo «System One». O termo «modelo de decisão» acabou por ser adotado pela comunidade, pois descreve o papel computacional do modelo sem remeter para uma teoria particular da cognição.
Um ecossistema em construção
O novo formato já é suportado por várias ferramentas. A biblioteca Transformers oferece um DecisionPipeline, uma classe AutoModelForDecision e uma classe DecisionConfig, bem como um ponto de acesso /v1/systemone após o lançamento de um servidor local. O motor de inferência llama.cpp também aceita estes modelos através da mesma API. A fonte cita o modelo ggml-org/Kev-4B-GGUF, servido na porta 9931. O Hub oferece uma tag dedicada, decision-model, pois estes modelos não partilham necessariamente a mesma arquitetura: alguns baseiam-se em codificadores como o ModernBERT, outros em modelos generativos maiores.
Uma vez resolvida a inferência, a fonte aborda o treino. Um exemplo de demonstração afina o modelo autotrust/JEV-9B para encaminhar pedidos de apoio, com a ajuda da API Trainer. O suporte de treino nativo no TRL é objeto de um pedido de fusão, a PR n.º 8040, ainda aberta no momento da redação do artigo. Por outro lado, a Unsloth oferece uma receita para transformar um LLM generativo, como o Qwen, num modelo de decisão, graças ao LoRA e a uma cabeça de pontuação.
