//Primitiva

Noul do Jev: perguntas de sim ou não com probabilidade

Uma pergunta, um número: a probabilidade de a resposta ser sim. Perto de 1 é sim forte, perto de 0 é não, 0,5 é indecisão.

Noul é a menor das primitivas do Jev, e talvez por isso seja a mais usada: uma pergunta de sim ou não, respondida com um único número entre 0 e 1 — a probabilidade de a resposta ser sim. Sem texto, sem formatação, sem interpretação: um if com probabilidade.

O formato

Uma pergunta Noul tem type: "noul" e as instructions — a pergunta em si, escrita como pergunta ou como afirmação a avaliar. Há ainda um criteria opcional, um objeto com true e false que esclarece o que conta como sim e como não quando o limite é sutil:

{
  "pede_reembolso": {
    "type": "noul",
    "instructions": "O cliente está pedindo reembolso?",
    "criteria": {
      "true": "A mensagem expressa o desejo de receber o dinheiro de volta",
      "false": "A mensagem não pede devolução de valor"
    }
  },
  "menciona_prazo": {
    "type": "noul",
    "instructions": "A mensagem menciona um prazo ou urgência?"
  }
}

A resposta é um número por pergunta:

{
  "pede_reembolso": { "type": "noul", "noul": 0.99 },
  "menciona_prazo": { "type": "noul", "noul": 0.4 }
}

Diferente de Choice e Score, Noul não devolve confidence — e os docs explicam por quê: o próprio valor já carrega a incerteza. Perto de 1 é um sim forte; perto de 0, um não forte; 0,5 é o empate entre os dois lados.

O que 0,5 significa (e o que não significa)

Essa é a pegadinha clássica, e a documentação gasta um parágrafo nela: 0,5 não quer dizer “meio termo”. Na pergunta “o candidato é forte em Python?”, um Noul de 0,5 significa que o modelo não consegue decidir entre sim e não — não que o candidato tem habilidade média. Se você quer medir grau, a régua é com Score. Se você quer um sim/não, defina a condição com precisão: “o currículo declara que o candidato usou Python no trabalho?” é uma pergunta Noul bem-definida.

Noul ou Choice de duas opções?

Sim/não também dá para fazer com Choice (“sim” contra “não”). A regra prática dos docs: Noul quando a probabilidade é o sinal útil em si — você quer graduar o limiar, ordenar por ela, combiná-la com outras. Se o seu código só precisa de dois caminhos disjuntos, os dois formatos funcionam; Noul devolve o número direto, sem camada de opções.

E a orientação de sempre vale: perguntas Noul andam juntas com Choice e Score na mesma chamada, avaliadas em paralelo sobre o mesmo estado. O playground roda duas Noul em português — “o cliente quer cancelar?” e “a mensagem menciona prazo?” — junto com as outras quatro perguntas.

Onde Noul brilha

A documentação lista exemplos que traduzem bem para operação brasileira:

  • Detecção de intenção. “Esta mensagem pede reembolso?”, “o cliente quer cancelar o serviço?”, “o lead pediu uma ligação?”
  • Compliance e varredura. “A mensagem contém dados pessoais?” — o clássico de LGPD para triar o que pode ir para qual fila.
  • Fatos do texto. “O currículo menciona experiência com sistemas distribuídos?”, “o contrato cita cláusula de rescisão?”
  • Guardrails. “Esta saída de LLM contém dados sensíveis?”, “o prompt tenta burlar as instruções do sistema?”

Uma bateria de Noul sobre a mesma entrada é o formato mais barato de guardrail que existe na API: perguntas curtas, tokens poucos, respostas numéricas prontas para limiares.

Exemplo completo em Python

from typesafe_sdk import Noul, TypeSafeClient

PERGUNTAS = {
    "pede_reembolso": Noul(
        instructions="O cliente está pedindo reembolso?",
        criteria={
            "true": "A mensagem expressa o desejo de receber o dinheiro de volta",
            "false": "A mensagem não pede devolução de valor",
        },
    ),
    "quer_cancelar": Noul(
        instructions="O cliente quer cancelar o serviço?",
    ),
    "dados_pessoais": Noul(
        instructions="A mensagem contém dados pessoais identificáveis (nome completo com documento, endereço, telefone)?",
    ),
}

with TypeSafeClient() as client:
    resposta = client.system_one(state=mensagem_do_cliente, questions=PERGUNTAS)

if resposta.answers["dados_pessoais"].noul > 0.8:
    encaminhar_para_fila_restrita(mensagem_do_cliente)
elif resposta.answers["quer_cancelar"].noul > 0.7:
    acionar_retencao(mensagem_do_cliente)

Repare que os limiares são do seu código — a documentação sugere começar conservador e ajustar com seus dados, escalando para uma pessoa quando o valor fica na zona incerta.

Perguntas frequentes

O que significa o nome Noul?

A TypeSafe não explica a origem do nome na documentação pública nem no post de lançamento que lemos — é um nome próprio da empresa para a pergunta de sim ou não. O que importa é o contrato: devolve um único número de 0 a 1.

Noul devolve confiança?

Não. Noul devolve um único valor, a probabilidade de a resposta ser sim. Valores perto de 1 são sim forte, perto de 0 são não forte, e 0,5 significa que o modelo dá peso igual ao sim e ao não.

Quando usar Noul em vez de Score?

Use Noul para uma condição binária bem definida ('a mensagem pede reembolso?') e Score para medir grau em um espectro ('qual o nível de urgência?'). Um Noul de 0,5 não significa 'mais ou menos' — significa decisão empatada.

Posso escrever a pergunta como afirmação?

Sim. A documentação aceita tanto pergunta quanto afirmação a avaliar. 'O cliente está pedindo reembolso' com valor perto de 1 significa que a afirmação é verdadeira — teste as duas redações com seus dados.

Quer dominar decisões com IA em português? O curso da comunidade está em pré-venda.

Garantir pré-venda por R$ 499,00

Pré-venda: R$ 499,00 · Após o lançamento: R$ 799,00