Como rodar o Jev em modo sombra ao lado de outra ferramenta para comparar em produção sem risco

Rodar o Jev em modo sombra significa manter a ferramenta atual decidindo em produção enquanto o Jev, modelo da TypeSafe AI que devolve decisões tipadas com confiança de 0 a 1, responde em paralelo só para registro. Você loga o ID da requisição, a decisão de cada lado, a confiança, a latência e a versão do modelo, rotula o desfecho real e analisa a divergência por faixa de confiança. Não existe prazo nem percentual oficial para a troca: você observa até cobrir seus ciclos de tráfego e só troca com limiares e fallback definidos
Trocar a ferramenta que decide em produção sem prova é aposta
E o modo sombra transforma essa aposta em dado 🙂
Fala aí, beleza? A TypeSafe AI saiu do modo discreto em 15 de setembro de 2026 e lançou o Jev, um modelo de IA que NÃO gera texto nem código
Ele recebe o estado do seu programa e devolve uma decisão tipada, com a probabilidade de cada opção
E isso muda MUITO a forma de comparar: aqui é decisão contra decisão, não texto contra texto. Bora ver como rodar isso em produção reduzindo o risco ao máximo?
O que é modo sombra e por que ele combina com o Jev?
Modo sombra é rodar uma ferramenta nova ao lado da que já decide, só observando
Curso de Jev: Sistemas Mais Inteligentes, Rápidos e Robustos
Desenvolva sistemas mais inteligentes, rápidos e robustos com Jev
A decisão real segue intacta, o usuário nem fica sabendo, e a sombra apenas registra o que ela TERIA respondido
É como colocar um estagiário pra anotar o que faria em cada caso, sem deixar ele mexer em nada haha
No fim do período você compara as anotações dele com o que realmente aconteceu
O roteiro de rollout começa pela sombra:
Existe uma ordem de rollout publicada para o Jev num guia prático no Hugging Face, e ela começa justamente pelo modo sombra:
- shadow (rodar ao lado e só registrar)
- label (rotular comparando com a verdade)
- thresholds (definir limiares)
- fallback (definir o plano B)
- enforce (colocar em vigor)
- monitor (seguir monitorando)
Se liga: essa ordem de etapas vem de um guia de terceiros, não da documentação oficial da TypeSafe
Por que a saída tipada facilita a comparação?
Nas respostas dos tipos Choice e Score, o Jev devolve um valor de confiança entre 0 e 1
Ou seja, cada resposta vira uma linha de log limpinha: qual opção, com quanta certeza
Nada de ficar interpretando parágrafo de LLM pra descobrir se "provavelmente sim, mas depende" conta como aprovado ou não xD
O que você precisa antes de começar:
Conta no console da TypeSafe
O cadastro e o console ficam em console.typesafe.ai
Desde 27/09/2026 o cadastro está aberto a todos, só que contas novas não recebem mais crédito grátis
Então já entra sabendo que a sombra vai custar desde a primeira chamada
SDK instalado
Em Python (exige Python 3.10 ou superior):
pip install typesafe-sdk
Ou, se tu usa uv:
uv add typesafe-sdk
Em JavaScript/TypeScript, o pacote é o @typesafe-ai/sdk
Chave de API e versão do modelo
O cliente lê a chave na variável de ambiente TYPESAFE_API_KEY e chama o jev-latest por padrão
Hoje o jev-latest aponta para o jev-1.13.0
Tome cuidado! Um alias "latest" pode passar a apontar pra outra versão no meio da sua observação
Por isso, registre a versão do modelo em TODA linha de log, assim tu sabe exatamente qual versão gerou cada decisão
Quanto custa a sombra?
O jev-latest cobra só pelos tokens de entrada: US$ 0,042 por milhão
Os tokens de saída são gratuitos
Como a sombra roda em cada requisição que você escolher espelhar, o custo acompanha o volume de entrada desse fluxo
E a privacidade?
A TypeSafe declara que o Jev não é treinado com requisições nem respostas dos clientes
Porém, a retenção zero de dados é oferecida só para clientes enterprise
Antes de mandar dado de produção pra sombra, avalia com calma o que está saindo do seu sistema, beleza?
Passo a passo para rodar o Jev em modo sombra em produção
1. Defina quem decide e quem é sombra
Primeiro de tudo: só UMA ferramenta decide
Se hoje a decisão vem da ferramenta atual, ela continua decidindo, e o Jev entra como sombra (ou o contrário, se o Jev já está em produção e o concorrente é o candidato)
Curso RecomendadoDesenvolva sistemas mais inteligentes, rápidos e robustos com JevConhecer cursoA resposta da sombra vai pro log e para por aí
O erro comum deste passo: deixar as duas respostas afetarem o fluxo. Um if esquecido que usa a resposta da sombra como desempate já transforma o teste em produção de verdade
2. Chame a sombra em paralelo, sem bloquear a decisão real
Aqui mora o porquê de tudo: a sombra NUNCA pode deixar a requisição mais lenta nem derrubá-la
Segundo a TypeSafe, o Jev responde em 70 a 500 milissegundos. Mesmo rápido, ele roda fora do caminho crítico, com timeout próprio e erro isolado
O código abaixo é só a estrutura do wrapper, em pseudocódigo estilo Python. decisao_atual e consultar_sombra são funções suas (a segunda é onde você chama o SDK do jeito que a documentação mostra):
# pseudocódigo: estrutura do wrapper de modo sombra
async def decidir(requisicao_id, estado):
# 1) a decisão real roda normalmente e é ela que vale
decisao = await decisao_atual(estado)
# 2) a sombra é disparada em segundo plano, sem await no fluxo principal
disparar_em_background(rodar_sombra(requisicao_id, estado, decisao))
return decisao
async def rodar_sombra(requisicao_id, estado, decisao_real):
try:
resposta = await com_timeout(consultar_sombra(estado), segundos=TIMEOUT_SOMBRA)
registrar_log(requisicao_id, decisao_real, resposta)
except Exception as erro:
# falha da sombra vira log, nunca erro para o usuário
registrar_falha_sombra(requisicao_id, erro)
Se o volume for alto, vale ler sobre como rodar decisões do Jev em paralelo sem travar a aplicação
O erro comum deste passo: a sombra cair (timeout, chave errada, rede) e levar a requisição junto. Já vi muito sistema "de teste" virar incidente por causa de um await no lugar errado 😛
3. Logue tudo, sempre
Cada requisição espelhada vira uma linha. Se liga nos campos:
| Campo | Por que logar |
|---|---|
| ID da requisição | Junta a decisão de cada lado e o desfecho depois |
| Decisão da ferramenta que decide | É o que de fato aconteceu |
| Decisão da sombra | É o que teria acontecido |
| Confiança do Jev (0 a 1) | Permite analisar por faixa |
| Latência de cada lado | Mostra o custo de tempo real da troca |
| Versão do modelo | Evita misturar versões na análise |
| Desfecho real (preenchido depois) | É a verdade que arbitra a comparação |
O erro comum deste passo: logar só quando as duas divergem. Sem as concordâncias você não tem base pra calcular nada, e ainda perde os casos em que AS DUAS erraram juntas
4. Rotule comparando com a verdade
Depois que o desfecho real aparece (o cliente pagou ou não, o ticket era mesmo urgente, a transação era fraude ou não), você preenche esse campo no log
E se você já tem um histórico com desfecho conhecido, dá pra adiantar bastante coisa ao rodar o Jev em lote sobre essa base antes mesmo de ligar a sombra ao vivo
O erro comum deste passo: tratar a ferramenta atual como gabarito. Se o Jev discorda da atual, isso não quer dizer que o Jev errou. Quem arbitra é o desfecho real, não a ferramenta que está decidindo hoje
5. Analise a divergência por faixa de confiança
Aqui entra a etapa de limiares do roteiro (a ordem das etapas vem do guia de terceiros), e pra separar as faixas tem base oficial: a documentação da TypeSafe sugere 3 caminhos pela confiança:
- confiança alta: agir
- faixa do meio: revisar
- confiança baixa: mandar para um humano
Então quebra a análise nessas 3 faixas. A pergunta que importa é: quando o Jev está confiante, ele acerta?
Os pontos de corte de cada faixa quem define é você, olhando os seus dados rotulados

Crie sistemas com IA para vender
Prompts, modelos e checklists para criar e publicar seu sistema com IA e preparar a oferta para o primeiro cliente.
Quero o e-book gratuito Receba o livro e os bônus no seu e-mail.O erro comum deste passo: olhar só a média geral. Uma média ok pode esconder uma faixa alta muito confiável e uma faixa baixa péssima, e é exatamente essa separação que vai virar o seu limiar depois
6. Por quanto tempo observar?
Não existe prazo oficial, nem em dias nem em volume de amostras
O critério é qualitativo: observe até cobrir os ciclos normais do seu tráfego (dias de semana e fim de semana, início e fim de mês, sazonalidade do seu negócio) e até ter rótulo suficiente nos casos raros que importam
Se o seu caso crítico aparece pouco, a observação dura o tempo que ele leva pra aparecer o bastante
O erro comum deste passo: decidir com a primeira semana boa. Semana boa todo mundo tem… o que separa a ferramenta certa da errada costuma estar nos casos que ainda não apareceram
7. Que divergência justifica a troca?
Também não tem percentual mágico aqui, e desconfie de quem te der um
O critério que faz sentido é:
- o candidato acerta onde a ferramenta atual erra, de forma consistente e não por sorte
- ele não piora os casos críticos do seu negócio
- a faixa de confiança alta se mostra confiável nos dados rotulados
Bateu tudo? Antes de colocar em vigor, define os limiares (o que é "alta", "meio" e "baixa" pra você) e o fallback (o que acontece se o Jev falhar ou responder com confiança baixa)
Depois de trocar, a antiga pode até virar a sombra por um tempo, e o monitoramento continua
O erro comum deste passo: trocar sem fallback. Aí no primeiro timeout tu descobre na marra que não tinha plano B
Quando comparar o Jev com outra ferramenta faz sentido (e quando não)
Faz sentido quando o software precisa de uma decisão tipada
Classificar, escolher entre opções, pontuar
Se a saída que você quer cabe numa opção ou num score, a comparação em modo sombra é direta e o Jev joga no campo dele
Não faz sentido quando a tarefa é gerar texto ou código
O Jev não é chatbot nem modelo de código: não escreve respostas, explicações nem código
Comparar ele com um LLM numa tarefa de redigir resposta pro cliente ou escrever função não tem nem como dar empate haha
Às vezes o resultado é dividir, não trocar
Guias de terceiros posicionam o Jev como complemento do LLM, não substituto: LLM quando a tarefa exige linguagem ou raciocínio, Jev quando o software precisa de uma decisão tipada rápida e barata
Muitos sistemas usam os dois
Então não estranha se a conclusão da sua sombra for "o Jev decide, o LLM escreve", isso também é um resultado válido 😀
Próximo passo: da sombra para a decisão em vigor
Recapitulando a lógica toda: uma ferramenta decide, a outra registra, e a verdade rotulada arbitra
Você loga tudo (não só as divergências), analisa por faixa de confiança, observa até cobrir seus ciclos e só troca com limiares e fallback definidos
O próximo passo concreto é simples:
- criar a conta no console.typesafe.ai
- instalar o SDK (
pip install typesafe-sdk,uv add typesafe-sdkou@typesafe-ai/sdk) - configurar a
TYPESAFE_API_KEY - ligar o Jev em modo sombra num ÚNICO fluxo de decisão de baixo risco antes de expandir
Começa pequeno, deixa os dados falarem e depois escala 🙂
Até o próximo post!
Perguntas frequentes
Quanto tempo preciso deixar o Jev em modo sombra antes de confiar nele?
O guia de rollout não trava um número fixo de dias, ele só define a ordem: sombra, depois rotular comparando com a verdade, depois definir limiares. Na prática, você sai da sombra quando já tem dado suficiente pra rotular as respostas e sentir confiança na faixa de decisão. Antes disso, vale manter os dois lados só registrando, sem pressa pra colocar o Jev em vigor
O Jev em modo sombra substitui o LLM que já toma decisão no meu sistema?
Não, os dois resolvem problemas diferentes. O LLM entra quando a tarefa pede linguagem ou raciocínio, e o Jev entra quando o software precisa de uma decisão tipada rápida e barata. É comum um sistema usar os dois juntos, com o Jev rodando em sombra ao lado da decisão que já existe, seja ela de LLM ou de regra fixa
O usuário percebe que o Jev está rodando em modo sombra?
Não, e esse é o ponto central do modo sombra: a decisão real segue intacta e o usuário recebe exatamente o que já recebia antes. O Jev só observa o estado do programa e registra a decisão tipada que ele teria dado, sem interferir em nada que chega até quem usa o sistema
Dá pra rodar o Jev em modo sombra sem crédito gratuito na conta?
Dá, mas já entra sabendo que vai pagar desde a primeira chamada. Desde 27/09/2026 o cadastro em console.typesafe.ai está aberto a todos, só que contas novas não recebem mais crédito grátis. Como o jev-latest cobra US$ 0,042 por milhão de tokens de entrada, e a saída é gratuita, o custo da sombra depende só do volume de entrada do fluxo que você escolheu espelhar
O que fazer quando a decisão da sombra diverge muito da decisão real?
É exatamente pra isso que o passo de rotular existe no roteiro de rollout do guia de terceiros: comparar as respostas da sombra com o que de fato aconteceu depois. Olhar a confiança de cada resposta, que vem entre 0 e 1, ajuda a entender se a divergência está nos casos de confiança baixa, que a documentação oficial da TypeSafe sugere mandar para um humano
Preciso trocar de SDK se meu backend for em JavaScript em vez de Python?
Sim, o SDK muda conforme a linguagem. Em Python, exige versão 3.10 ou superior e instala com pip install typesafe-sdk ou uv add typesafe-sdk. Em JavaScript ou TypeScript, o pacote é o @typesafe-ai/sdk, e os dois lêem a chave na mesma variável de ambiente, TYPESAFE_API_KEY
Formações
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 48min
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.
