Quase todo fornecedor de IA publica uma página de capacidades. A TypeSafe publica
também uma página de defeitos: o que o jev-1.13 faz mal, com o remédio
recomendado para cada caso. Ela se chama jaggedness, foi revisada em 17 de
setembro de 2026 e é a leitura mais útil da documentação inteira.
O resumo honesto que a própria página faz: o jev-1.13 é rápido, calibrado e bom
em julgamento de senso comum, mas não é perfeito. Ele vai melhor em tarefas
System One, pode tropeçar quando a tarefa exige camadas de indireção, é bastante
literal e sofre quando a tarefa pede precisão numérica.
Os nove modos de falha
| # | Modo de falha | O que fazer em vez disso |
|---|---|---|
| 1 | Leitura literal | Escrever a condição exata; casos de borda nos critérios |
| 2 | Matemática e números | Manter a aritmética no código |
| 3 | Comparação de datas e horas | Extrair as partes; comparar no código |
| 4 | Indireção | Reduzir saltos; apontar a parte relevante do state |
| 5 | State grande com detalhe irrelevante | Filtrar antes; mandar só o que a pergunta usa |
| 6 | Conteúdo adversarial | Critérios precisos; testar bordas antes de expor |
| 7 | Instruções e critérios contraditórios | Alinhar critério e instrução |
| 8 | Invariantes estruturais de senso comum | Perguntar de um jeito só; impor identidades no código |
| 9 | Geração de texto | Usar um modelo generativo |
O resto desta página explica os que mais aparecem em projeto real.
Leitura literal
O modelo responde a pergunta que você escreveu, não a que você quis dizer. Palavras de escopo, negações e condições implícitas são lidas ao pé da letra.
A documentação dá um teste de diagnóstico que vale ouro: quando você olha uma resposta errada e se pega explicando o que realmente queria dizer, essa explicação é a metade que faltou na instrução. Quando a interpretação é inevitável, quebre em duas perguntas literais e combine no código. Como escrever isso bem é o assunto de critérios que separam de verdade.
Matemática e contagem
O Jev não é calculadora. A documentação recomenda fortemente implementar qualquer lógica matemática em código, e é específica sobre contagem: o modelo não conta de forma confiável — caracteres de uma palavra, ocorrências de um termo, itens de uma lista longa — porque reconhece a forma da resposta em vez de somar, e o erro cresce com o tamanho.
O jeito certo é transformar contagem em uma pergunta por item e somar você mesmo:
from typesafe_sdk import Noul, TypeSafeClient
cliente = TypeSafeClient(model="jev-1.13")
SIM = 0.5
itens = ["maçã", "cadeira", "banana", "laranja", "teclado"]
resultado = cliente.system_one(
{"itens": itens},
{
f"item_{i}": Noul(instructions=f"`itens[{i}]` é o nome de uma fruta?")
for i in range(len(itens))
},
)
frutas = sum(resultado.nouls[f"item_{i}"].noul > SIM for i in range(len(itens)))
Antes disso, a página faz a pergunta certa: por que essa contagem precisa de um modelo? Se uma expressão regular ou um parser encontra a unidade, a contagem pertence ao código e o modelo não acrescenta nada.
Há um caso correlato que engana gente experiente: usar a nota de um Score para
reconstruir um número exato entre dois níveis. A documentação pede para não fazer
isso, porque os níveis do jev-1.13 são fracos em calibração numérica. Usar a
nota para saber se passou de um limiar, sim; interpolar valor exato, não.
Datas
O modelo lê datas como texto, não como quantidade ordenada. Perguntar qual vem primeiro, quanto tempo separa duas ou se uma cai dentro de uma janela é pouco confiável, e fica pior com formatos misturados, referências relativas e fronteiras de domínio como trimestres e períodos de apuração.
A divisão recomendada é bonita de simples: extração é julgamento, então vai para o modelo; aritmética não é, então fica no código. Cada parte de uma data é um conjunto fechado — doze meses, trinta e um dias possíveis, uma faixa limitada de anos —, o que transforma extração em um Choice sobre opções enumeradas, com uma opção explícita de “não informado” para o que faltar.
State grande
A acurácia cai quando o state cresce com conteúdo sem relação com a decisão. O material irrelevante funciona como distrator e, de quebra, atrapalha o diagnóstico: fica difícil saber qual pedaço da entrada produziu a resposta errada. O remédio é filtrar em código antes, ou usar um Noul de relevância quando não houver como filtrar. O detalhe de como montar a entrada está em state.
Invariantes que você imagina e o modelo não garante
Este é o mais sutil da lista. O jev-1.13 é bastante consistente — entradas
semanticamente parecidas produzem saídas parecidas —, mas várias identidades que
pareceriam óbvias não valem.
A documentação mostra a mesma pergunta (“o cliente está pedindo reembolso?”) feita como Noul e como Choice de sim e não, sobre o ticket “I’m not happy with the fit. What are my options here?”:
| Noul | Choice sim | Choice não | Confiança do Choice |
|---|---|---|---|
| 0,22 | 0,01 | 0,99 | 0,97 |
E mostra a mesma pergunta com a negação, como dois Nouls, sobre outro ticket: 0,72 para “pede reembolso” e 0,47 para “pede outra coisa que não reembolso” — somando 1,19.
A leitura prática: um Choice é relativo, ele resolve qual opção; um Noul é absoluto e pode ser baixo para todas. Não carregue um limiar calibrado num Noul para um Choice, e não exija do modelo identidades aritméticas entre perguntas separadas.
Geração
O jev-1.13 não é treinado para gerar texto. Dá para forçar encadeando escolhas,
e a documentação avisa que funciona mal e fica muito lento. Quando o espaço de
resposta é limitado, transforme extração em Choice sobre as opções; quando você
precisa de texto de verdade, existem outros modelos para isso. É a mesma fronteira
discutida em IA sem alucinação.
Como usar esta lista
Não como desqualificação: como especificação. Sete dos nove limites se resolvem com desenho — pergunta mais direta, critério mais explícito, conta no código, state menor. Dois são fronteira real: não peça geração, não peça precisão numérica. Saber disso antes evita o ciclo de culpar o modelo por uma pergunta que nunca foi respondível. O índice do vocabulário está em conceitos.
Perguntas frequentes
Onde estão os limites oficiais do Jev?
Na página de jaggedness do jev-1.13 na documentação oficial, revisada em 17/09/2026. Ela lista nove modos de falha com o remédio recomendado para cada um e diz que muitos devem ser corrigidos em versões futuras.
O Jev faz conta?
Não de forma confiável. A documentação diz que o Jev não é calculadora, que ele não conta itens de forma confiável e que o erro cresce com o tamanho do que está sendo contado. A recomendação é fazer a aritmética em código.
Por que o Jev erra comparação de datas?
Porque lê datas como texto, não como quantidade ordenada, segundo a documentação. Dizer qual data vem antes, a distância entre duas ou se uma cai dentro de uma janela é pouco confiável, e piora com formatos misturados e datas relativas.
Posso comparar o resultado de um Noul com o de um Choice de sim e não?
Não direto. A documentação mostra o mesmo ticket com Noul em 0,22 e o Choice respondendo não com 0,99 e confiança 0,97. Também mostra dois Nouls opostos somando 1,19. Não dependa de identidade aritmética entre perguntas separadas.
Esses limites valem para sempre?
Valem para o jev-1.13, que é a versão atual. A própria página diz que muitos desses pontos devem ser resolvidos em versões posteriores, e a documentação recomenda fixar a versão quando você calibrou limiares em cima dela.