Jev da TypeSafe: o que significam calibração, probabilidade, amostragem paralela e type-safe?

glossário do Jev explicando calibração, probabilidade e amostragem paralela para dev web
Resposta rápida

O Jev é o primeiro modelo público da TypeSafe AI e inaugura a classe System One: você manda um state (objeto ou array JSON) mais perguntas tipadas e recebe decisões tipadas de volta, numa chamada só. Quem vem de dev web trava em quatro palavras da documentação: probabilidade, calibração, amostragem paralela e type-safe. Este glossário traduz cada uma com definição curta, código e a consequência prática na integração, além de comparar os três primitivos da API (Noul, Choice e Score) e mostrar o que muda na sua conta e no seu código quando o Jev entra em produção.

Fala aí, beleza? A TypeSafe soltou o Jev, o primeiro modelo público da casa, e a página dele está escrita em dialeto de machine learning puro

Aí você, que vem de dev web e não de pesquisa em IA, bate de frente com quatro palavras logo nos primeiros parágrafos: calibração, probabilidade, amostragem paralela e type-safe

O Jev inaugura uma classe que a empresa chama de System One, e entrou em early access no dia 15 de setembro de 2026

Cada termo aqui ganha definição curta, exemplo em código e a consequência prática na hora de integrar 🙂

Por que o Jev usa esse vocabulário (e não o de um chat):

Se você conhece a rotina de chamar um LLM de chat, o modelo mental é mais ou menos esse: manda um prompt em texto, recebe texto de volta, e aí reza pra esse texto ser um JSON válido

O Jev quebra esse ciclo

Você manda um state (um objeto ou array JSON com contexto, exemplos e informações relacionadas) mais um conjunto de perguntas tipadas, e recebe decisões tipadas que o código consome direto

É por isso que o vocabulário muda. Não existe "resposta" no sentido de parágrafo, existe valor

Domine o Jev e coloque decisões de IA dentro do seu sistema
Pré-inscrição Curso Jev

Domine o Jev e coloque decisões de IA dentro do seu sistema

Você vai aprender a usar o Jev, o System One Model da TypeSafe AI, pra automatizar decisões com resposta tipada e confiança medida, sem depender de chat nem de alguém revisando cada passo. Entre na lista de espera para garantir a condição de lançamento!

Os três primitivos da API:

São três tipos de pergunta que você pode declarar:

  • Noul: sim ou não
  • Choice: escolhe uma opção dentro de um conjunto
  • Score: dá uma nota numa escala

E se liga nisso: os três podem ser misturados na MESMA chamada

A avaliação acontece no endpoint:

curl -X POST https://api.typesafe.ai/v1/systemone \
  -H "Authorization: Bearer $TYPESAFE_API_KEY" \
  -H "Content-Type: application/json" \
  -d @payload.json

Dentro do payload.json vão o state e as perguntas tipadas daquela rodada

Agora, sem entender as quatro palavras do título, qualquer exemplo da documentação do Jev vira sopa de letrinha. Bora destrinchar?

Os quatro termos explicados, um a um

Cada termo tem a definição, o código e o erro que quase todo mundo comete na primeira integração

1. Probabilidade: o número que você estava jogando fora

A resposta de um Noul é um único número: a probabilidade de a resposta ser sim

0 significa não, 1 significa sim, e tudo no meio é o grau de convicção do modelo

Repara numa coisa: o Noul NÃO tem campo separado de confidence

E o motivo é bonito de simples: a distribuição só tem dois resultados possíveis, então a própria probabilidade já carrega a incerteza. Um 0,51 é um quase empate, um 0,97 é convicção

Já o Choice devolve três coisas: a opção escolhida, a probabilidade de cada opção (no campo probabilities) e o confidence

A propriedade probabilities é a distribuição inteira: distribuição concentrada indica resposta confiante, distribuição espalhada indica incerteza

E o confidence colapsa essa distribuição num único número de 0 a 1, pra você aplicar threshold sem refazer a conta na mão

Erro comum deste passo: tratar a probabilidade como booleano

É o clássico if (resposta > 0.5) e segue o baile. Você acabou de transformar um 0,52 e um 0,99 na mesma coisa, e jogou fora exatamente a informação que o modelo foi treinado pra te dar

2. Calibração: a promessa que dá sentido ao número

A definição que a documentação usa é direta: num modelo bem calibrado, resultados aos quais se atribui probabilidade 0,2 acontecem cerca de 20% das vezes, e os de 0,8 acontecem cerca de 80% das vezes

Ou seja, calibração é a frequência observada bater com a probabilidade declarada

Parece óbvio, mas não é. É a diferença entre um número que significa alguma coisa e um número que é só decoração

A TypeSafe trata calibração como propriedade DO MODELO, não como pós-processamento: a arquitetura tem sampler paralelo e o treino é feito por um método que eles chamam de Reinforcement Learning for Calibrated Decisions (RLCD)

E a consequência prática disso vem no padrão de roteamento por confiança

Erro comum deste passo: supor que existe um threshold único pro sistema todo

Não existe. A doc orienta que ações diferentes no mesmo sistema devem ser liberadas em níveis diferentes, conforme a CONSEQUÊNCIA do erro

Marcar um post como destaque errado custa pouco. Banir uma conta errado custa caro. Os dois não podem passar pelo mesmo 0,8

E os casos incertos? A recomendação é escalar: manda pra uma pessoa ou pra um modelo de raciocínio mais caro

3. Amostragem paralela: por que perguntar mais quase não custa tempo

Aqui mora a parte mais contraintuitiva pra quem vem de chat

O Jev ingere o state UMA vez e avalia todas as perguntas em paralelo e isoladamente contra esse mesmo estado, numa única chamada

Resultado: acrescentar perguntas quase não muda o tempo de resposta

Se você conhece a diferença entre fazer N queries no banco num loop e fazer uma query que traz tudo, o raciocínio é bem semelhante. Só que aqui a economia é de ingestão de contexto, não de round-trip

E tem orçamento de contexto documentado, dois números diferentes que valem a pena anotar:

  • 64k cobre o state mais TODAS as perguntas somadas
  • 32k se aplica ao state mais a pergunta isolada mais longa

Ou seja, uma pergunta gigantesca sozinha pode estourar o segundo limite mesmo com folga no primeiro. Tome cuidado!

Erro comum deste passo: disparar N requests separadas, uma por pergunta, como se fosse conversa de chat

Você paga a ingestão do state N vezes e não ganha nada com isso

O segundo erro comum é esperar que uma pergunta enxergue a resposta da outra. Não enxerga. Cada pergunta é avaliada ISOLADAMENTE contra o state. Se a pergunta B depende do resultado de A, isso é orquestração no seu código, não encadeamento dentro da chamada

4. Type-safe: o contrato que dispensa parser defensivo

Esse termo aqui não é metáfora de marketing, é bem concreto no SDK

O pacote de JavaScript/TypeScript traz ESM, CommonJS e declarações TypeScript, e os tipos das respostas são inferidos a partir das perguntas que você declarou

Instalação:

npm install @typesafe-ai/sdk

E o import, com o cliente e o helper de Choice:

import { choice, TypeSafeClient } from "@typesafe-ai/sdk"

No Python o caminho é igualzinho de simples:

pip install typesafe-sdk
# ou, se tu usa uv:
uv add typesafe-sdk

O cliente lê a chave do ambiente:

export TYPESAFE_API_KEY="sua-chave-aqui"

E chama jev-latest por padrão, sem você precisar apontar modelo na mão

A parte forte do argumento: como o Jev não gera texto livre e só devolve valores tipados, a TypeSafe afirma que ele não pode alucinar string nem devolver um tipo fora do contrato

Erro comum deste passo: continuar embrulhando a resposta num try/catch com parser de JSON defensivo, regex de emergência e fallback pra quando o modelo "responder em português no meio do JSON"

Esse arsenal todo existe por causa do modelo de chat. Aqui a saída é restrita aos tipos declarados, então esse código vira peso morto

Como cada termo aparece no seu código no dia a dia

Teoria é legal, mas o negócio fica claro mesmo quando cai no cenário real. Três situações bem de dev web:

Roteamento por confiança (confidence-gated routing). Você tem três ações possíveis depois de avaliar um conteúdo: publicar direto, mandar pra fila de revisão ou bloquear. Cada uma dessas ações ganha um threshold próprio sobre o confidence, porque o custo de errar é diferente em cada uma. O que não atinge nenhum nível seguro é escalado pra uma pessoa ou pra um modelo de raciocínio mais caro

Rubrica inteira numa chamada só. Imagina uma triagem de conteúdo com oito checagens: tem spam? tem dado pessoal? qual a categoria? qual a severidade? Em vez de oito prompts, você monta um state com o conteúdo e manda os oito primitivos juntos, misturando Noul e Choice. É exatamente pra isso que a amostragem paralela serve. Só fica de olho na modelagem: um Choice aceita no máximo 255 opções numa mesma pergunta, então taxonomia gigante precisa virar duas perguntas em cascata no seu código

Checagem de estabilidade. A documentação traz cookbooks de autoconsistência que repetem a mesma avaliação várias vezes sobre o mesmo caso, usando um uid descartável a cada rodada, só pra ver se as respostas se mantêm estáveis. É o teste que eu faria antes de cravar qualquer threshold: se a mesma rubrica dança sobre o mesmo caso, o problema está na rubrica, não no número

Noul, Choice e Score: qual primitivo usar em cada caso

Tabela de consulta rápida, pra deixar aberta numa aba enquanto você modela as perguntas:

Primitivo O que responde O que vem na resposta Limites conhecidos Quando escolher
Noul Sim ou não Um único número: a probabilidade de ser sim (0 = não, 1 = sim) Não tem campo confidence próprio, porque a distribuição só tem dois resultados Checagem binária: é spam? contém dado pessoal? cumpre a regra?
Choice Escolhe uma opção dentro de um conjunto Opção selecionada + probabilities (distribuição entre as opções) + confidence Máximo de 255 opções por Choice Classificação, roteamento, categoria, seleção de fluxo
Score Nota numa escala Nota + probabilities com a distribuição entre as opções Depende da escala que você declarar Severidade, qualidade, prioridade, qualquer coisa graduada

Os três podem conviver na mesma request, e todos dividem o mesmo orçamento de contexto: 64k pro state mais todas as perguntas, 32k pro state mais a pergunta isolada mais longa

O que muda na conta e no código quando você integra

Agora a parte que o time de produto vai perguntar na primeira reunião

A cobrança é só na entrada. Na página do provedor no OpenRouter, o Jev 1.13 aparece a US$ 0,042 por milhão de tokens de entrada e US$ 0 por milhão de tokens de saída

Isso casa direitinho com a lógica do modelo: mandar state grande e MUITAS perguntas é o uso pretendido, e a saída é um punhado de números tipados

Versão e alias. A versão listada nas páginas de dados é a jev-1.13. O alias jev-preview aponta pro mesmo modelo que jev-latest, e o jev-latest é o padrão dos SDKs e dos exemplos da documentação. Traduzindo: se você não apontou nada, está no jev-latest

Rate limits. A própria documentação avisa que são ajustados dinamicamente e podem mudar sem aviso, com limites maiores em planos custom/enterprise. Por isso não tem número aqui: qualquer valor que eu cravasse envelheceria em uma semana, e chutar isso eu acho zoado

O que dá pra fazer no seu lado é o de sempre: retry com backoff e fila, tratando 429 como cenário normal e não como incidente

Acesso. A fila de espera foi removida: o cadastro passou a ser aberto em console.typesafe.ai, com US$ 5 de crédito gratuito pra contas novas

Próximo passo: leia a doc já falando a língua

Destravou esses quatro termos, o resto da documentação do Jev fica legível. Probabilidade é o número, calibração é a promessa de que o número significa algo, amostragem paralela é por que perguntar mais sai barato e type-safe é por que você pode apagar o parser defensivo

O próximo passo que eu sugiro é bem concreto: cria a conta no console, roda UMA chamada com dois ou três primitivos misturados e fica olhando probabilities e confidence antes de escolher qualquer threshold

Escolher número antes de ver a distribuição é chute, e depois vira aquele bug chato que ninguém sabe explicar

E se tu trabalha com agente de código, tem um atalho: a TypeSafe publica uma agent skill com o contexto da API

No Claude Code a instalação é via marketplace de plugins:

claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai

E a invocação é por comando de barra:

/typesafe:typesafe-ai

Em outros agentes, o caminho é esse aqui:

npx skills add typesafe-ai/skills --skill typesafe-ai

É modelo novo, classe nova, vocabulário novo. Vale acompanhar de perto, porque a doc ainda vai mudar bastante…

Até o próximo post! 😀

Perguntas frequentes

Quanto custa usar o Jev na API da TypeSafe?

O Jev 1.13 cobra US$ 0,042 por milhão de tokens de entrada e US$ 0 por milhão de tokens de saída, segundo a página do provedor no OpenRouter. Ou seja, o custo está todo concentrado no state e nas perguntas que você envia, não na resposta tipada que volta.

Qual a diferença entre jev-preview e jev-latest?

Não tem diferença de modelo: o alias jev-preview aponta pro mesmo modelo que jev-latest. E jev-latest é o padrão usado pelos SDKs e pelos exemplos da documentação.

Quantas opções um Choice aceita no máximo?

Um Choice aceita no máximo 255 opções numa mesma pergunta. Isso vale independente de você misturar Choice com Noul e Score na mesma chamada.

Dá pra usar o Jev dentro do Claude Code?

Sim, a TypeSafe publica uma agent skill com o contexto da API pensada pra agentes de código. No Claude Code a instalação é via marketplace de plugins, com claude plugin marketplace add typesafe-ai/skills seguido de claude plugin install typesafe@typesafe-ai, e a invocação acontece pelo comando de barra /typesafe:typesafe-ai.

Os rate limits do Jev são fixos?

Não. A própria documentação diz que os rate limits são ajustados dinamicamente e podem mudar sem aviso. Limites maiores ficam reservados pra planos custom e enterprise.

Pra que servem os cookbooks de self-consistency da documentação?

Eles repetem a mesma avaliação várias vezes sobre o mesmo caso, usando um uid descartável a cada rodada, pra checar se as respostas do Noul e do Choice se mantêm estáveis. É uma forma de validar calibração na prática antes de confiar o threshold numa ação sensível.



Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Blog | Mais populares