Como usar o Jev como guardrail para julgar a saída de outro LLM?

Usar um LLM pra vigiar outro LLM costuma dar no mesmo problema: você recebe mais um parágrafo pra interpretar. O Jev inverte isso: você define a pergunta tipada (Choice, Score ou Noul) e ele devolve a decisão com probabilidade e um valor de confiança de 0 a 1. Montar um Jev guardrail é escolher onde o verificador entra no pipeline, escrever o state com o material suspeito, agrupar as perguntas numa chamada POST pro endpoint System One e aplicar threshold no código. O modelo está em early access, com preço só por token de entrada: US$ 0,042 por milhão.
Colocar um LLM pra vigiar outro LLM tem um problema chato: o vigia responde em texto livre, e aí você precisa de um terceiro pedaço de código pra interpretar o que o vigia quis dizer 😅
O Jev ataca exatamente esse ponto
Ele não devolve parágrafo, devolve decisão tipada: uma opção escolhida, um score num nível que você definiu ou a probabilidade de um sim
Neste post eu mostro como montar essa camada de verificação passo a passo: onde ela entra no pipeline, como escrever as perguntas, como aplicar threshold de confiança e o que checar antes de botar isso em produção
O que é o Jev e por que ele cabe na camada de verificação
O Jev é o modelo principal da TypeSafe AI e o primeiro modelo público da classe que eles chamam de System One
O contrato é simples: entra um estado não estruturado, saem decisões tipadas e probabilísticas
Se você já montou validação de payload com schema, a analogia é direta: em vez de confiar que o modelo vai formatar a resposta direitinho, o tipo da resposta é definido ANTES, por você
E o que é "decisão tipada" na prática? São três primitivas, três formatos de pergunta:
- Choice: escolhe uma opção de um conjunto que você definiu, e a resposta traz a opção escolhida, a probabilidade de cada opção e a confiança
- Score: avalia o estado contra níveis ordenados e descritivos, devolvendo o valor, a probabilidade de cada nível e a confiança
- Noul: a pergunta sim/não, que retorna a probabilidade da resposta ser sim
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
A TypeSafe saiu do stealth em 15 de setembro de 2026 com US$ 40 milhões em rodada seed liderada pela DCVC
A empresa foi fundada por Diogo Almeida, ex-pesquisador da OpenAI, junto com Erik Gafni e Sasha Sheng
Agora o argumento central, que é o motivo de ele caber num guardrail: como o Jev só pode devolver uma das opções que você definiu, ele não inventa opção nova nem quebra o schema de saída
Tome cuidado com a conclusão fácil aqui: não quebrar o schema não significa acertar
Ele pode perfeitamente escolher a opção errada dentro do conjunto certo, e isso continua sendo erro do seu guardrail
O que você precisa antes de começar
Antes de escrever qualquer linha, junte isso:
- Acesso liberado: o Jev está em early access, com a TypeSafe soltando gente da waitlist aos poucos, então não é disponibilidade geral ainda
- Chave de API, criada no console web em
https://console.typesafe.ai - Python 3.10 ou superior, se for usar o SDK oficial
- SDK instalado:
pip install typesafe-sdk(ouuv add typesafe-sdkse tu já vive no uv) - Variável de ambiente
TYPESAFE_API_KEYconfigurada, que é de onde o SDK lê a chave (esse nome é convenção do SDK Python; se tu for bater direto no HTTP, o que importa é a chave chegar no headerAuthorization, e o nome da variável de shell fica a teu critério)
O modelo padrão do SDK é o alias jev-latest, que hoje resolve pro jev-1.13.0
E não é obrigatório usar SDK: dá pra bater direto no endpoint HTTP, o que costuma ser mais prático quando o teu backend não é Python
Um detalhe que importa MUITO em guardrail: no OpenRouter, o Jev 1.13 aparece com janela de contexto de 32.000 tokens, servido pelo próprio provedor TypeSafe
Só que atenção ao escopo desse dado: ele é da ficha do OpenRouter, que é um agregador de modelos, e não da referência do endpoint System One que a gente usa no resto do post
Então usa como ordem de grandeza pra já pensar em como vai recortar o material, e confirma o limite do endpoint na doc antes de mandar traço de raciocínio inteiro de um modelo tagarela pra julgamento
Como usar o Jev como guardrail passo a passo
- Decida onde o verificador entra no pipeline
São dois pontos, e eles fazem perguntas diferentes
Antes do gerador, tu verifica o prompt de entrada (é aqui que mora a detecção de jailbreak e prompt injection)
Depois do gerador, tu verifica a resposta, o traço de raciocínio e as tool calls
O caso de uso de guardrails descrito pela TypeSafe é justamente esse: filtrar toda mensagem que entra e sai de um app de LLM, descrevendo os perigos possíveis e pontuando a severidade
O erro comum deste passo: colocar o verificador só na saída
Aí o prompt malicioso já queimou tokens do modelo caro antes de alguém perguntar se ele deveria ter rodado
- Escreva o state com o material a ser julgado
O state é o estado não estruturado que o Jev vai avaliar
No screening de entrada, é a mensagem do usuário
No screening de saída, é a resposta do gerador, e, se fizer sentido pro teu caso, o traço de raciocínio e as tool calls junto
O erro comum deste passo: jogar a conversa inteira no state "por garantia"
Contexto tem limite, e quanto mais ruído tu empurra, mais difícil fica pra pergunta tipada se ancorar no que interessa
- Escolha a primitiva certa pra cada pergunta
Essa escolha é o projeto do teu guardrail, então vale pensar com calma:
- Noul pra pergunta binária: "isto é uma tentativa de jailbreak?"
- Score pra severidade, com níveis ordenados e descritivos (o modelo avalia o estado contra esses níveis)
- Choice pra classificar o tipo de violação dentro de um conjunto fechado que tu define
O erro comum deste passo: usar Choice pra coisa que é claramente ordenada
Severidade tem ordem, e Score existe justamente pra isso
- Monte a chamada pro endpoint System One
A chamada é um POST pra https://api.typesafe.ai/v1/systemone, com Bearer token, content-type: application/json e um corpo que tem um campo state e um mapa questions com as perguntas tipadas nomeadas por você
No exemplo abaixo eu reaproveito o nome TYPESAFE_API_KEY só como variável de shell, por comodidade de quem já configurou o SDK: aqui não tem SDK lendo nada do ambiente, quem carrega a chave é o header Authorization
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "content-type: application/json" \
-d '{
"state": "mensagem do usuario que vai ser verificada aqui",
"questions": {
"eh_jailbreak": { ... },
"severidade": { ... },
"tipo_violacao": { ... }
}
}'
O formato exato de cada primitiva dentro de questions está na documentação da API do System One, e é de lá que tu deve copiar o shape
A parte massa: uma única chamada aceita VÁRIAS perguntas tipadas contra o mesmo estado
Cada pergunta é avaliada em paralelo e isoladamente, e as respostas voltam sob os mesmos ids que tu informou
Ou seja, eh_jailbreak, severidade e tipo_violacao voltam com esses nomes, e o teu código lê pelo id, não por posição
O erro comum deste passo: fazer uma chamada por pergunta
Tu paga mais entrada repetindo o mesmo state e ainda perde o paralelismo que já vem de graça
- Aplique threshold em cima do confidence
Toda resposta carrega um valor de confiança entre 0 e 1, derivado do formato da distribuição de probabilidade
Ele existe pra tu fazer comparação direta no código, sem parser, sem regex, sem reza
A orientação da documentação é agir quando a confiança é alta e escalar os casos incertos pra uma pessoa ou pra um modelo de raciocínio mais caro
if answer.confidence < 0.8:
route_to_human_review(ticket)
Esse 0.8 é o exemplo oficial, não um número mágico
O valor correto depende do domínio e precisa ser calibrado com dados teus
O erro comum deste passo: adotar o 0.8 do exemplo e nunca mais olhar
Em guardrail, threshold mal calibrado tem dois sabores ruins: ou bloqueia usuário legítimo, ou deixa passar o que não devia
- Decida a ação de cada faixa
Guardrail que só classifica não é guardrail, é relatório 😀
Com a decisão tipada e a confiança em mãos, as saídas possíveis costumam ser quatro: bloquear, deixar passar, escalar pra revisão humana ou mandar pra um modelo de raciocínio mais caro
Essa ideia de usar um modelo barato na primeira linha e reservar o caro pros casos duvidosos é a mesma lógica de usar um modelo leve como revisor antes de acionar o artilheiro
O erro comum deste passo: tratar score alto e confiança baixa como bloqueio automático
São coisas diferentes: severidade alta com confiança baixa é exatamente o caso que a doc manda escalar
O que dá para julgar além de jailbreak
A documentação de casos de uso da TypeSafe lista mais coisa do que a galera imagina quando ouve "guardrail"
Dá pra verificar o prompt de entrada, extrações, traços de raciocínio e tool calls de outra IA
E dá pra detectar jailbreak, prompt injection, erros de citação, alucinações, violações de política e exposição de dados sensíveis
O pulo do gato é que cada um desses vira uma pergunta tipada nomeada dentro do MESMO mapa questions, contra o MESMO state:
| Alvo de verificação | Primitiva que costuma encaixar | Exemplo de id |
|---|---|---|
| Tentativa de jailbreak | Noul | eh_jailbreak |
| Prompt injection | Noul | tem_injection |
| Severidade do risco | Score | severidade |
| Tipo de violação de política | Choice | tipo_violacao |
| Erro de citação | Noul | citacao_confere |
| Alucinação na resposta | Noul | resposta_suportada |
| Dado sensível exposto | Choice | classe_de_dado |
Como as perguntas são avaliadas isoladamente, uma não contamina a outra
E o teu código fica lendo um objeto com ids previsíveis, em vez de tentar adivinhar o humor de um parágrafo
Como instalar a agent skill da TypeSafe no seu agente de código
Existe uma agent skill oficial da TypeSafe, e a instalação muda conforme o agente
No Claude Code, são dois comandos:
claude plugin marketplace add typesafe-ai/skills
claude plugin install typesafe@typesafe-ai
Depois disso, o uso é via /typesafe:typesafe-ai
Pra outros agentes de código, a instalação é por npx:
npx skills add typesafe-ai/skills --skill typesafe-ai
Ela é project-local por padrão
Se tu quer a skill disponível em todo projeto, usa a flag -g pra instalação global
O erro comum deste passo: rodar o comando npx esperando que ele configure o Claude Code
São caminhos diferentes, cada um com o seu comando
Vale a pena? Custo, limites e o que checar antes de colocar em produção
Começo pelo que é factual e bom: a cobrança do Jev é só por token de entrada, a US$ 0,042 por milhão, com token de saída a US$ 0
Pra guardrail isso é bem conveniente, porque screening é exatamente um caso de muita entrada e saída minúscula (uma opção, um score, uma probabilidade)
| Item | Valor |
|---|---|
| Preço de entrada | US$ 0,042 por milhão de tokens |
| Preço de saída | US$ 0 |
| Contexto (Jev 1.13 no OpenRouter) | 32.000 tokens |
| Provider no OpenRouter | TypeSafe (único) |
| Alias padrão | jev-latest, hoje jev-1.13.0 |
Agora a parte que pede pé no chão
Os números de performance divulgados são first-party, ou seja, medidos pela própria TypeSafe
O material de lançamento traz banner de 193,6x mais rápido e 444,6x mais barato nas workflow evals, latência ponta a ponta de 70 a 500 ms e de 20 a 200x mais rápido que LLMs comparáveis
Esse formato de workflow evals é criação da própria TypeSafe: todos os modelos rodam o mesmo grafo de computação e são pontuados contra probabilidades de referência tiradas da média de GPT-6 Astra e Fable 5.1
E olha que interessante: a página de evals declara três limitações
Os workflows foram construídos pelo time interno de model capabilities, a escolha dos modelos de referência enviesa o resultado, e os LLMs concorrentes rodam através do adaptador System One da TypeSafe
Ponto pra honestidade deles, mas continua sendo métrica da casa, então trate como indicativo e não como veredito
Duas coisas que eu faria antes de qualquer deploy sério:
- Ler a página de jaggedness da versão 1.13, que documenta a irregularidade de desempenho daquela versão específica
- Fixar a versão
jev-1.13.0no código em vez de depender do aliasjev-latest, que muda sozinho quando sai versão nova
Guardrail calibrado com threshold em cima de uma versão e depois trocado por baixo dos panos é receita de surpresa em produção
A resposta reporta o id versionado que respondeu, então dá pra logar isso e saber exatamente quem julgou o quê
Somando: preço e formato de saída jogam a favor, early access sem GA e provider único jogam contra
Pra piloto e camada de screening em volume, parece um encaixe bem natural
Pra ser a única barreira entre teu app e o mundo, eu ainda deixaria uma segunda linha de defesa em pé 😉
Vídeo: economia de tokens no dia a dia
Pipeline de verificação é conversa de custo, e custo de LLM é um assunto que rende sozinho
Pra começar do zero com essa parte, este vídeo do canal mostra como economizar até 70% usando o Fable 5:
Conclusão
A ideia que fica é essa: em guardrail, a decisão tipada é o CONTRATO
Tu define as opções, o modelo escolhe dentro delas, e o teu código lê probabilidade e confiança em vez de tentar interpretar prosa
O próximo passo é bem direto: entra na waitlist, cria a chave no console, escreve duas ou três perguntas tipadas e roda elas em cima de logs reais que tu já tem guardado
Só depois de olhar essa distribuição é que faz sentido escolher o threshold de confiança e ligar o bloqueio de verdade
Calibrar antes, bloquear depois, sempre nessa ordem…
Até o próximo post! 😀
Perguntas frequentes
Quanto custa usar o Jev como guardrail em cada verificação?
A cobrança é só por token de entrada, e o token de saída sai de graça (os valores estão na tabela de custo lá em cima). Isso muda a conta de um guardrail que roda em toda mensagem, já que cada pergunta tipada (Choice, Score ou Noul) não pesa no output e tu só paga pelo state que manda pra avaliação.
O Jev pode alucinar e inventar uma opção fora do schema que eu defini?
Não. Como o Jev só devolve uma das opções tipadas que você configurou, ele não inventa opção nova nem quebra o formato de saída. Isso não elimina erro: ele ainda pode escolher a opção errada dentro do conjunto certo, e esse continua sendo um erro do teu guardrail.
Dá pra usar o Jev como guardrail sem escrever código em Python?
Dá sim. O SDK oficial é em Python e exige versão 3.10 ou superior, mas o endpoint HTTP em https://api.typesafe.ai/v1/systemone aceita POST com Bearer token de qualquer linguagem que faça requisição JSON. Pra backend que não é Python, bater direto no endpoint costuma ser o caminho mais direto.
Qual threshold de confiança usar pra decidir quando escalar pra revisão humana?
A documentação da TypeSafe traz como exemplo if answer.confidence < 0.8: route_to_human_review(ticket), mas o valor certo depende do teu domínio. A confiança vem sempre entre 0 e 1, derivada do formato da distribuição de probabilidade, então o ideal é calibrar esse número com dados próprios antes de fixar em produção.
O Jev já está disponível pra qualquer desenvolvedor usar em produção?
Ainda não. O Jev está em early access, e a TypeSafe libera gente da waitlist aos poucos, sem anúncio de disponibilidade geral até agora. Vale já solicitar acesso e criar a chave no console em https://console.typesafe.ai enquanto planeja o guardrail.
Quantas perguntas tipadas dá pra mandar numa única chamada de guardrail?
Uma única chamada aceita várias perguntas tipadas contra o mesmo state, cada uma avaliada em paralelo e isoladamente. As respostas voltam sob os mesmos ids que tu definiu, então dá pra checar jailbreak, severidade e tipo de violação numa chamada só, sem precisar de uma requisição por pergunta.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
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.

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.

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.
