Como montar um conjunto de casos rotulados para validar o Jev antes de ir para produção

Pra validar o Jev antes de produção, não confie em uma ou duas tentativas boas: monte um conjunto de exemplos reais do seu produto com a resposta certa anotada. Inclua casos comuns, limítrofes, raros, frases adversariais e os que deveriam ir para revisão. Separe calibração e teste intocado, rode o Jev (modelo jev-latest) guardando resposta, probabilidade e confiança, e meça acurácia e taxa de repasse por categoria e por faixa de confiança. O limiar sai do conjunto de calibração, é confirmado no teste, e só o que fica acima dele é automatizado
Uma ou duas tentativas boas no Jev não dizem NADA sobre se ele aguenta produção
Fala aí, beleza? O Jev chegou chegando e a vontade de plugar ele direto no seu fluxo é grande, eu sei haha
Mas se liga: o Jev é um modelo da TypeSafe AI que não gera texto em linguagem natural
Ele devolve valores tipados, com probabilidades e confiança, feitos pra outro software consumir
Ele entrou em acesso antecipado limitado em 15 de setembro de 2026, junto com o anúncio de uma rodada seed de US$ 40 milhões liderada pela DCVC
E aqui tá o ponto: a documentação da TypeSafe diz que o limiar de confiança depende de cada caso de uso e precisa ser testado nos dados do próprio cliente
A integração do Jev na Pydantic AI vai na mesma linha: medir a acurácia, a taxa de repasse para revisão e qualquer limiar em exemplos rotulados próprios antes de confiar neles
Ou seja, o jeito honesto de validar o Jev é com um conjunto de casos rotulados, não com impressão 🙂
Bora montar esse conjunto passo a passo?

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!
O que você precisa antes de começar:
Antes de anotar o primeiro exemplo, vale deixar três coisas prontas
Como acessar o Jev pela API?
O acesso direto é pela API da TypeSafe:
- Endpoint:
POST https://api.typesafe.ai/v1/systemone - Modelo:
jev-latest - SDKs oficiais em Python e JavaScript
Se você já usa gateway, tem alternativa:
- Vercel AI Gateway:
typesafe-ai/jev - OpenRouter:
jev-latestejev-1.13
Qual tipo de pergunta o seu caso usa?
O Jev tem três tipos de pergunta, e os três podem ir na mesma requisição:
- Choice: escolhe uma entre as opções que você define (até 255 opções) e devolve a probabilidade de cada opção e a confiança
- Score: posiciona a entrada numa rubrica ordenada (de 2 a 10 níveis) e devolve uma nota ponderada pela probabilidade, a distribuição completa e a confiança
- Noul: devolve a probabilidade de sim (de 0 a 1) numa pergunta de sim ou não, e NÃO tem campo de confiança
Isso importa MUITO pro rótulo: o formato da resposta certa que você anota tem que ser o mesmo formato que o Jev devolve
Exemplos reais e alguém que saiba a resposta certa
Você vai precisar de uma fonte de exemplos reais do seu produto (tickets, mensagens, formulários, o que for a entrada da decisão)
E de alguém que conheça o domínio pra anotar a resposta certa de cada um
Sem isso, o conjunto vira chute rotulado por chute… e aí não mede nada
Passo a passo para montar e rodar o conjunto de validação:
Passo 1: Defina a pergunta e o rótulo esperado no formato do Jev
Comece escrevendo a pergunta exatamente como ela vai para o Jev
No Choice, liste as opções. No Score, escreva os níveis da rubrica. No Noul, deixe claro o que é sim e o que é não
O rótulo de cada exemplo precisa ser UMA dessas opções, um desses níveis ou um sim/não
O erro comum deste passo: anotar rótulo que não bate com as opções enviadas. Se o anotador escreve reembolso e a opção no Choice é estorno, a métrica vai marcar erro onde não tem erro (ou esconder erro onde tem)
Passo 2: Colete exemplos reais e anote a resposta certa
Puxe exemplos da fila real do seu produto, não de uma lista que alguém imaginou
Pra cada exemplo, a pessoa que conhece o domínio anota a resposta certa
Se esses exemplos têm dado de cliente, vale ver antes o que anonimizar no state do Jev antes de mandar qualquer coisa pra API
O erro comum deste passo: usar exemplos inventados ou só os fáceis. Conjunto fácil dá número bonito e não diz nada sobre o que acontece na segunda-feira de manhã com a fila cheia
Passo 3: Escolha os casos difíceis por categoria
Uma prática recomendada pela comunidade é montar o conjunto de avaliação com cinco categorias:
- Comuns: o grosso do volume do dia a dia
- Limítrofes: casos que ficam na fronteira entre duas opções ou dois níveis
- Raros: coisas que aparecem pouco, mas aparecem
- Adversariais: frases escritas pra confundir, ambíguas ou com ironia
- Deveriam ir para revisão: casos em que o certo é o sistema NÃO decidir sozinho
Marque a categoria de cada exemplo numa coluna própria, você vai precisar dela no passo 6
O erro comum deste passo: montar um conjunto sem casos que deveriam ser repassados. Sem eles, você não tem como saber se o limiar está mandando pra revisão o que deveria
Passo 4: Separe calibração e teste intocado
Divida os exemplos em dois grupos:
- Calibração: onde você olha, erra, ajusta e escolhe o limiar
- Teste: fica guardado e só é usado no final, pra confirmar
Como referência, um teste de terceiros sobre a calibração do Jev dividiu os exemplos 60/40: 5.280 de calibração e 3.521 de teste, com o conjunto de teste intocado
Não existe tamanho mínimo oficial confirmado pela TypeSafe, então use essa divisão como referência de proporção, não como regra
E garanta que as cinco categorias apareçam nos dois grupos
O erro comum deste passo: ajustar o limiar olhando o conjunto de teste. Aí ele deixa de ser teste e vira calibração disfarçada, e o número final fica otimista demais
Passo 5: Rode o Jev sobre os casos e guarde tudo
Agora sim, bora ver na prática?
O código abaixo é um esqueleto a adaptar: o formato exato do corpo da requisição, a autenticação e os nomes dos campos da resposta vêm da documentação da TypeSafe
Por isso ele guarda a resposta crua inteira, e você extrai os campos depois
import json
import requests
URL = 'https://api.typesafe.ai/v1/systemone'
MODELO = 'jev-latest'
def cabecalhos():
# ESQUELETO: autenticacao conforme a documentacao da TypeSafe
raise NotImplementedError
def montar_corpo(caso):
# ESQUELETO: monte o corpo conforme a documentacao,
# usando MODELO, o tipo de pergunta (Choice, Score ou Noul),
# as opcoes ou a rubrica e a entrada do caso
raise NotImplementedError
def rodar(casos, arquivo_saida):
with open(arquivo_saida, 'w') as saida:
for caso in casos:
resp = requests.post(URL, headers=cabecalhos(), json=montar_corpo(caso))
resp.raise_for_status()
registro = {
'id': caso['id'],
'categoria': caso['categoria'],
'rotulo': caso['rotulo'],
'resposta_crua': resp.json(), # guarda TUDO
}
saida.write(json.dumps(registro) + '\n')
Depois, numa etapa separada, você extrai de resposta_crua a opção escolhida, as probabilidades e o confidence (no Choice e no Score) ou a probabilidade de sim (no Noul)
O erro comum deste passo: descartar a confiança e guardar só a resposta. Sem a confiança você não consegue escolher limiar nenhum, e vai ter que rodar tudo de novo
Passo 6: Meça acurácia e taxa de repasse para revisão
As duas métricas que a integração na Pydantic AI pede são a acurácia e a taxa de repasse para revisão
Um cálculo simples, já quebrado por categoria:
from collections import defaultdict
def resumo(resultados, limiar):
contagem = defaultdict(lambda: {'total': 0, 'automaticos': 0, 'acertos': 0})
for r in resultados:
c = contagem[r['categoria']]
c['total'] += 1
if r['confianca'] < limiar:
continue # vai para revisao
c['automaticos'] += 1
if r['resposta_jev'] == r['rotulo']:
c['acertos'] += 1
for categoria, c in contagem.items():
repasse = 1 - c['automaticos'] / c['total']
acuracia = c['acertos'] / c['automaticos'] if c['automaticos'] else None
print(categoria, 'acuracia:', acuracia, 'repasse:', round(repasse, 3))
No Noul, troque confianca pela sua regra em cima da probabilidade de sim, já que ele não tem campo de confiança
O erro comum deste passo: olhar só o número geral. Uma acurácia geral alta pode esconder que o Jev erra quase todos os adversariais, porque os comuns inflam a média
Como ler os acertos por categoria e por faixa de confiança
Com o resumo rodando, você monta duas leituras: por categoria e por faixa de confiança
Acerto por categoria: o que observar em cada uma?
| Categoria | O que entra | O que observar |
|---|---|---|
| Comum | O volume do dia a dia | Se o acerto é alto e a taxa de repasse é baixa |
| Limítrofe | Casos na fronteira entre opções ou níveis | Se a confiança cai nesses casos, como deveria |
| Raro | Situações pouco frequentes | Se o Jev confunde com a opção mais comum |
| Adversarial | Frases ambíguas ou feitas pra confundir | Se ele erra com confiança alta (o pior cenário) |
| Revisão | Casos que não deveriam ser automatizados | Se o limiar está mandando esses casos pra revisão |
A categoria de revisão é a mais reveladora: ela mostra se o roteamento funciona, não só se a resposta está certa
Confiança e probabilidade são a mesma coisa?
Não! E essa confusão é clássica
No Choice e no Score, a confiança vai de 0 a 1 e é calculada pelo formato da distribuição, ou seja, pelo quanto ela está concentrada
Já a probabilidade da opção escolhida é outra coisa: é a estimativa de que aquela resposta esteja certa
Na sua tabela, guarde as duas em colunas separadas e faça as faixas pela confiança
Por que a faixa de confiança importa tanto?
O mesmo teste de terceiros mostra isso bem com o Noul:
| Faixa de confiança declarada (Noul) | Acurácia |
|---|---|
| Entre 50% e 60% | 47,6% |
| Acima de 95% | 100% |
Na faixa baixa, o acerto ficou abaixo de cara ou coroa. Na faixa alta, acertou tudo
A média geral esconde completamente essa diferença, por isso a leitura por faixa é o que te mostra onde dá pra automatizar
Lembrando que, no seu próprio conjunto, o Noul não tem campo de confiança: a leitura dele é pela probabilidade de sim
E o recado mais importante: a confiança serve pra rotear, mas a taxa de acerto precisa ser medida em dados rotulados representativos do seu caso
Como escolher o limiar de confiança para produção:
Aqui é onde o conjunto rotulado se paga
Esse é o coração de como validar as decisões do Jev antes de automatizar qualquer coisa:
- No conjunto de calibração, rode o
resumocom vários limiares e veja como acurácia e taxa de repasse mudam - Escolha o limiar que dá a acurácia que o seu negócio aguenta com uma taxa de repasse que o seu time consegue absorver
- Rode UMA vez no conjunto de teste intocado pra confirmar que o número se sustenta
- Em produção, automatize só o que fica acima do limiar e mande o resto pra um humano ou pra um LLM mais lento
A TypeSafe é clara: o limiar depende do caso de uso e deve ser testado nos seus dados
O erro comum deste passo: copiar o limiar de outro caso de uso (ou de um post na internet). Um limiar que funciona pra triagem de ticket pode ser péssimo pra classificação de risco, tome cuidado!
E vale ser honesto sobre o que o Jev entrega
Em gráficos de confiabilidade, ele fica com 0% de erro em saída estruturada e em chamada de ferramenta, ou seja, o formato não quebra
Porém os LLMs de ponta ainda levam vantagem de 5 a 6 pontos em acurácia em tarefas de baixo volume
Então quem decide se o Jev serve pro SEU caso não é o hype nem o benchmark, é o seu conjunto rotulado
Próximo passo: validar antes de automatizar
Recapitulando: decisão de produção se toma com número do seu próprio conjunto rotulado, não com a impressão de duas tentativas que deram certo
O caminho é definir o rótulo no formato do Jev, coletar exemplos reais, cobrir as cinco categorias, separar calibração e teste, guardar resposta, probabilidade e confiança, e ler o acerto por categoria e por faixa
O próximo passo concreto: separa hoje exemplos das cinco categorias da sua fila real e roda a primeira medição, mesmo que pequena
E tem um detalhe que ajuda: o preço de tabela do Jev é US$ 0,042 por milhão de tokens de entrada, com saída gratuita, então rodar a validação inteira tende a sair barato
Muito melhor descobrir onde ele erra no seu conjunto do que na fila de produção, né? 😀
Até o próximo post!
Perguntas frequentes
Quantos exemplos rotulados preciso pra validar o Jev antes de ir para produção?
Não existe tamanho mínimo oficial confirmado pela TypeSafe
Como referência de proporção, um teste de terceiros sobre a calibração do Jev usou 5.280 exemplos de calibração e 3.521 de teste, numa divisão 60/40
O importante é garantir que as cinco categorias (comuns, limítrofes, raros, adversariais e casos que deveriam ir para revisão) apareçam nos dois grupos
Dá pra usar o mesmo conjunto de teste pra calibrar e pra validar o Jev?
Não, e esse é o erro mais comum do processo
Se você olha o conjunto de teste pra ajustar o limiar, ele vira calibração disfarçada e o número final fica otimista demais
O conjunto de teste precisa ficar intocado até a confirmação final, só depois de você já ter escolhido o limiar no conjunto de calibração
O Noul precisa de rótulo diferente do Choice e do Score na hora de validar o Jev?
Sim, porque o formato da resposta muda
Noul devolve só a probabilidade de sim (de 0 a 1) numa pergunta de sim ou não, e não tem campo de confiança, então o rótulo é sim ou não
Já no Choice e no Score o rótulo precisa bater com uma das opções ou um dos níveis da rubrica, que é o que eles devolvem junto com a probabilidade e a confiança
Confiança alta do Jev garante que a resposta está certa?
Não necessariamente, e é por isso que o conjunto rotulado existe
No Choice e no Score, a confiança mostra o quanto a distribuição está concentrada, e isso não é a mesma coisa que acertar (e no Noul nem existe campo de confiança, a leitura é pela probabilidade de sim)
Ou seja, a confiança serve para rotear, mas a taxa de acerto precisa ser medida em dados rotulados representativos
Onde acessar o Jev pra rodar os testes de validação?
O acesso direto é pela API da TypeSafe, no endpoint POST https://api.typesafe.ai/v1/systemone com o modelo jev-latest, e tem SDKs oficiais em Python e JavaScript
Também dá pra acessar pelo Vercel AI Gateway (typesafe-ai/jev) ou pelo OpenRouter (jev-latest e jev-1.13)
O preço de tabela é US$ 0,042 por milhão de tokens de entrada, com saída gratuita
Preciso incluir casos adversariais e casos raros pra validar o Jev, ou só os casos comuns já bastam?
Só os casos comuns não bastam, porque um conjunto fácil dá número bonito e não mostra o que acontece na fila cheia de segunda de manhã
Uma prática recomendada pela comunidade é montar o conjunto com cinco categorias: comuns, limítrofes, raros, adversariais e casos que deveriam ir para revisão
Sem os casos que deveriam ir para revisão, inclusive, você não descobre se o limiar está mandando pra um humano o que realmente precisa ir pra um humano
Formações
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Blog | Mais populares

Como montar um workflow de automação combinando decisões do Jev em código
Aprenda a montar um workflow com Jev: decisões tipadas encadeadas em código, alta confiança agindo sozinha e casos incertos escalando para revisão.

Jev decide, LLM escreve: como dividir os papéis dentro de um agente de IA
Jev é o modelo que decide, não escreve: entenda como dividir papéis entre Jev e LLM dentro de um agente de IA e quando usar cada um.

Para quem o Jev serve (e para quem não serve)?
Jev serve pra roteamento, scoring e guardrails em IA, não pra texto ou código. Veja pra quem o Jev serve e quando evitar.
