Jev, a IA que decide sem escrever: eu testei contra o GPT
🇮🇹 Italiano • 🇬🇧 English • 🇪🇸 Español • 🇩🇪 Deutsch • 🇫🇷 Français
Desde que o ChatGPT chegou, os modelos de que todo mundo fala são chatbots: você faz uma pergunta e eles respondem escrevendo. Em 15 de setembro saiu o primeiro da sua espécie que não é. Ele se chama Jev, foi criado pela TypeSafe AI e não sabe escrever nem uma palavra: toma decisões e, ao lado de cada uma, diz o quanto tem certeza. Os criadores prometem um fluxo de trabalho 193 vezes mais rápido que um LLM de fronteira. Uma promessa dessas precisava ser conferida, e eu conferi: 105 e-mails de clientes de um sistema de gestão, seis modelos, dois idiomas e uma comparação só entre modelos que erram tanto quanto o Jev. Aqui está como foi, com o método, as tabelas e o código Delphi.
Se você já colocou um LLM dentro de um sistema de gestão, cedo ou tarde acabou usando o modelo para uma decisão pequena: para qual setor vai este e-mail, que tipo de documento acabou de chegar, se o cliente está bravo. Funciona. Só que cada decisão custa um ou dois segundos mais os tokens de saída, e com dez mil e-mails por dia o tempo e a conta viram o problema.
Em 15 de setembro a TypeSafe AI anunciou o Jev, um modelo que não consegue escrever uma palavra sequer e só devolve decisões. A página inicial deles fala em um fluxo de trabalho 193,6 vezes mais rápido e 444,6 vezes mais barato que um LLM de fronteira. Falei dele no episódio 7 do podcast “while true do;” (em italiano), onde prometi publicar aqui o método, as tabelas e o código Delphi.
O que é o Jev
Você passa um contexto, que a TypeSafe chama de state (o texto de um e-mail, um registro), e algumas perguntas tipadas. Os tipos são três:
- choice: escolher uma entre até 255 opções, cada uma descrita em palavras;
- score: posicionar o texto numa escala de 2 a 10 níveis;
- noul: uma pergunta de sim ou não, e a resposta é a probabilidade do sim.
Você nunca recebe um texto para interpretar. Recebe a opção escolhida, a distribuição de probabilidade sobre todas as opções e uma confiança. Todas as perguntas são calculadas numa única passada, então acrescentar uma quase não muda o tempo de resposta. O preço de tabela é US$ 0,042 por milhão de tokens de entrada, e você não paga pela saída.
Desde 18 de setembro o Jev também está no OpenRouter, no endpoint POST /api/v1/systemone. Foi o que eu usei: com uma única chave você chama tanto o Jev quanto os LLMs com os quais você o compara, e todos os tempos incluem a mesma passagem pelo OpenRouter.
Chamando o Jev pelo Delphi
A chamada é um POST com corpo JSON, então THTTPClient e System.JSON bastam, sem SDK. Esta é a requisição do JevTriage_en, o programa de demonstração: três perguntas sobre um e-mail, uma de cada tipo.
// The three questions for Jev: department (choice), frustration (score), urgency (noul).
function BuildJevRequest(const AModel, AEmail: string): string;
begin
var lRoot := TJSONObject.Create;
try
lRoot.AddPair('model', AModel);
lRoot.AddPair('state', AEmail);
var lQuestions := TJSONObject.Create;
lRoot.AddPair('questions', lQuestions); // from here on lRoot owns it
var lDepartments := TJSONObject.Create;
lDepartments.AddPair('administration', 'Invoices, payments, charges, refunds');
lDepartments.AddPair('technical support', 'Program errors, freezes and malfunctions');
lDepartments.AddPair('sales', 'Quotes, new modules, licenses, training');
lDepartments.AddPair('other', 'None of the above'); // always include the fallback option
lQuestions.AddPair('department', TJSONObject.Create
.AddPair('type', 'choice')
.AddPair('instructions', 'Which department should handle this email?')
.AddPair('criteria', lDepartments));
var lLevels := TJSONArray.Create;
lLevels.Add('Calm, states the facts');
lLevels.Add('Annoyed but polite');
lLevels.Add('Very angry, harsh tone');
lQuestions.AddPair('frustration', TJSONObject.Create
.AddPair('type', 'score')
.AddPair('instructions', 'How frustrated is the customer?')
.AddPair('criteria', lLevels));
lQuestions.AddPair('urgent', TJSONObject.Create
.AddPair('type', 'noul')
.AddPair('instructions', 'Is the request urgent or does it have a close deadline?'));
Result := lRoot.ToJSON;
finally
lRoot.Free;
end;
end;
Esta é a versão em inglês da demo. O zip também traz o original em italiano, JevTriage, já que é em italiano que esses e-mails chegam a uma software house italiana. Se você trabalha com System.JSON e quer relembrar a API fluente e quem é dono de cada objeto, tem o guia completo de JSON no Delphi.
A resposta você lê com GetValue<T> e um caminho: answers.department.choice, answers.department.confidence, answers.urgent.noul. Depois é o código, e não o modelo, que decide o roteamento, comparando a confiança com dois limiares:
// Routing is decided by the code, not by the model: confidence is just a number to compare.
function RouteByConfidence(const ADepartment: string; AConfidence: Double): string;
begin
if (ADepartment = 'other') or (AConfidence < HUMAN_THRESHOLD) then
Result := 'to an operator (a person decides)'
else if AConfidence >= AUTO_THRESHOLD then
Result := Format('automatic to "%s"', [ADepartment])
else
Result := Format('to "%s" with caution (needs confirmation)', [ADepartment]);
end;
AUTO_THRESHOLD vale 0,85 e HUMAN_THRESHOLD vale 0,5. Mais adiante você vai ver que 0,85 é otimista.
Quatro e-mails, uma execução real
O JevTriage_en manda os mesmos quatro e-mails para o Jev e para o google/gemini-2.5-flash-lite, pedindo a este último um JSON com os mesmos três campos. Esta é a saída completa de uma execução real, feita hoje:
Email 1: "Good morning, this month you charged the fee for the management software twice to our company card. Could you reverse the second charge? Thanks, Marta Rossi"
Jev (typesafe/jev-1.13-20260917) in 455 ms
department: administration (confidence 1.00)
administration=1.00 other=0.00 technical support=0.00 sales=0.00
frustration: 0.04 of 2 (confidence 0.95)
0=0.96 1=0.04 2=0.00
urgent: no (probability of yes 0.21)
routing: automatic to "administration"
LLM (google/gemini-2.5-flash-lite) in 1101 ms
department: administration, frustration: 1, urgent: true (no probabilities, no confidence)
Email 2: "Since this morning, whenever I print an invoice the program closes with a memory access error. I have forty invoices to send out by tonight, I don't know what to do anymore!!!"
Jev (typesafe/jev-1.13-20260917) in 373 ms
department: technical support (confidence 0.99)
technical support=1.00 sales=0.00 administration=0.00 other=0.00
frustration: 1.75 of 2 (confidence 0.62)
0=0.00 1=0.25 2=0.75
urgent: yes (probability of yes 0.98)
routing: automatic to "technical support"
LLM (google/gemini-2.5-flash-lite) in 715 ms
department: technical support, frustration: 2, urgent: true (no probabilities, no confidence)
Email 3: "Hello, we are a firm with twelve workstations and we would like a quote for the warehouse module and for staff training. No rush."
Jev (typesafe/jev-1.13-20260917) in 365 ms
department: sales (confidence 1.00)
sales=1.00 other=0.00 administration=0.00 technical support=0.00
frustration: 0.00 of 2 (confidence 1.00)
0=1.00 1=0.00 2=0.00
urgent: no (probability of yes 0.04)
routing: automatic to "sales"
LLM (google/gemini-2.5-flash-lite) in 524 ms
department: sales, frustration: 0, urgent: false (no probabilities, no confidence)
Email 4: "Hi, I just wanted to tell you that yesterday's course was really useful. See you soon!"
Jev (typesafe/jev-1.13-20260917) in 401 ms
department: other (confidence 0.82)
other=0.87 administration=0.00 technical support=0.00 sales=0.13
frustration: 0.00 of 2 (confidence 1.00)
0=1.00 1=0.00 2=0.00
urgent: no (probability of yes 0.02)
routing: to an operator (a person decides)
LLM (google/gemini-2.5-flash-lite) in 575 ms
department: other, frustration: 0, urgent: false (no probabilities, no confidence)
Email Jev ms LLM ms Jev token in/out LLM token in/out Jev cost LLM cost
1 455 1101 460 / 84 113 / 18 $0.0000193 $0.0000185
2 373 715 467 / 82 121 / 19 $0.0000196 $0.0000197
3 365 524 459 / 81 110 / 18 $0.0000193 $0.0000182
4 401 575 450 / 81 104 / 18 $0.0000189 $0.0000176
Total 1594 2915 $0.0000771 $0.0000740
Costs come from OpenRouter's usage.cost field (in credits, 1 credit = 1 USD).
Timings include the hop through OpenRouter.
O primeiro e-mail é uma cobrança em duplicidade, escrita com calma. Para o Flash Lite o cliente está irritado e o pedido é urgente. O Jev diz que o cliente está calmo e que o pedido não é urgente, e diz isso com as probabilidades ao lado.
O quarto e-mail é um agradecimento, e aqui os dois concordam: other, calmo, não urgente. O Jev escolhe other com confiança 0,82, e o código manda o e-mail para um atendente, como faz com todo other, seja qual for a confiança.
Quanto ao custo, com três perguntas o Jev custa o mesmo que o Flash Lite, até um pouco mais: a requisição ao Jev tem uns 460 tokens de entrada, a do LLM uns 110. A vantagem de preço do Jev está na saída gratuita, e com três respostas curtas há pouca saída para economizar. Só que quatro e-mails não provam nada, e o Flash Lite é o modelo mais barato da lista: por isso escrevi o JevBench.
O benchmark: 105 e-mails, seis modelos
O benchmark faz o mesmo trabalho em escala, com estas regras:
- 105 e-mails de clientes de uma software house que faz software de gestão: cobranças em duplicidade, notas fiscais rejeitadas pelo SDI (o sistema italiano de troca de notas fiscais eletrônicas), holerites que o sistema não calcula, pedidos de orçamento, cancelamentos, spam, phishing. 61 são difíceis de propósito: sarcasmo, frustração contida, negações (“não é urgente, mas até amanhã de manhã…”), um pedido escondido no PS de uma newsletter;
- 25 perguntas por e-mail (setor, módulo da aplicação, frustração, urgência, pedido de reembolso, ameaça de trocar de fornecedor, dados sensíveis e assim por diante), feitas em grupos de 3, 10 e 25 por chamada;
- seis modelos via OpenRouter: Jev 1.13, Gemini 2.5 Flash Lite, GPT-5.6 Luna, GPT-5.6 Terra, Gemini 3.1 Pro, DeepSeek V4 Pro. As mesmas instruções para todos, sem ajuste de prompt;
- acurácia balanceada como métrica principal, com intervalos de confiança bootstrap de 95%. A acurácia simples premia um modelo que sempre responde “não”: aqui, um modelo que sempre dissesse a classe mais frequente teria 84% de acurácia simples e 41% de acurácia balanceada;
- primeiro a qualidade, depois os tempos: comparo velocidade e custo só entre o Jev e o LLM mais barato que erra tanto quanto o Jev, ou menos. Um modelo dez vezes mais barato que erra um e-mail em cada três não serve para substituir o Jev.
Não há nenhum modelo da Anthropic, e não é por implicância: as respostas esperadas foram escritas e revisadas pelo Claude Opus 5, e um modelo da mesma família sairia na frente nos casos-limite. As regras de rotulagem fui eu que defini, e o caso mais disputado fui eu que decidi; os outros casos disputados foram decididos pelo mesmo modelo em meu nome, e ninguém conferiu de novo todos os rótulos à mão.
O teste principal é em inglês, porque a TypeSafe diz que o Jev funciona melhor em inglês e eu não queria colocá-lo em desvantagem sem avisar. Depois rodei tudo de novo em italiano.
Quem entende mais
Cada célula diz quanto um modelo entendeu dos 105 e-mails em inglês, com aquele número de perguntas por chamada. As colunas não são três rodadas do mesmo teste: “3 decisões” são as três primeiras perguntas (setor, frustração, urgência), “10” as dez primeiras, “25” todas. Cada coluna acrescenta perguntas novas, algumas mais difíceis, e é por isso que o Jev cai de 97,2 para 94,8: com 25 entra também o impacto do problema no cliente, onde o Jev para em 68%.
O número é a acurácia balanceada, em porcentagem. Para cada pergunta, cada resposta possível é avaliada separadamente: para “urgente”, você pega a fração de e-mails urgentes que o modelo reconheceu como urgentes e a fração de não urgentes que reconheceu como não urgentes, e calcula a média das duas. Depois calcula a média de todas as perguntas. Assim uma resposta rara pesa tanto quanto uma comum. Um modelo que sempre responde “não” a “urgente” acerta 88 e-mails de 105, mas aqui fica com 50. Dar sempre a resposta mais frequente a cada pergunta dá 34,4 com 3 decisões, 39,4 com 10 e 41,4 com 25: é com esse piso que você deve comparar os números da tabela.
Entre colchetes está o intervalo de confiança de 95%. Eu o calculei reamostrando aleatoriamente os 105 e-mails 2.000 vezes (bootstrap): com outra amostra de e-mails parecidos, o resultado cairia quase sempre dentro dessa faixa. Quanto mais largo o intervalo, menos preciso o número, e com 3 perguntas ele é largo porque cada erro pesa mais. Para decidir se um LLM é melhor ou pior que o Jev, porém, não basta olhar se os intervalos se sobrepõem: comparei cada modelo com o Jev e-mail por e-mail, nas mesmas reamostragens, e só contam as diferenças cujo intervalo não passa pelo zero.
| Modelo | 3 decisões | 10 decisões | 25 decisões |
|---|---|---|---|
| Jev 1.13 | 94.3 [91.3; 96.8] | 97.2 [96.0; 98.1] | 94.8 [93.3; 96.1] |
| Gemini 2.5 Flash Lite | 82.2 [76.3; 88.0] | 87.8 [84.4; 90.8] | 90.1 [87.9; 92.0] |
| GPT-5.6 Luna | 90.2 [86.0; 94.0] | 96.5 [95.1; 97.8] | 95.7 [94.3; 97.0] |
| GPT-5.6 Terra | 89.9 [85.5; 94.1] | 96.9 [95.5; 98.2] | 96.0 [94.8; 97.2] |
| Gemini 3.1 Pro | 92.0 [86.8; 96.6] | 97.6 [96.2; 98.8] | 97.1 [96.0; 98.1] |
| DeepSeek V4 Pro | 92.9 [89.1; 96.2] | 96.6 [94.9; 98.0] | 94.6 [92.9; 96.1] |
Com 3 e com 10 decisões por chamada nenhum LLM faz melhor que o Jev por uma margem que se distinga do ruído. Com 25, só o Gemini 3.1 Pro o supera, por 2,3 pontos [0,9; 3,7]. O Flash Lite é pior em todos os níveis, então o tropeço dele nos quatro e-mails do início não foi azar.
Nenhum modelo devolveu JSON quebrado nas 2.835 chamadas do benchmark, 1.890 em inglês e 945 em italiano. Com os modelos de hoje, erros de schema são raros, então você precisa de outros motivos para escolher o Jev.
Quanto mais rápido, quanto mais barato
O Jev responde em cerca de um terço de segundo e leva o mesmo tempo com 3 perguntas ou com 25: 320, 341 e 337 ms em média. Os LLMs, por outro lado, precisam escrever cada resposta, e ficam mais lentos: o GPT-5.6 Terra vai de 1.397 para 2.338 ms, o Gemini 3.1 Pro de 4.625 para 7.151.
Esta tabela, da execução em inglês, compara o Jev com o LLM mais barato cuja acurácia empata com a do Jev em cada nível:
| Decisões | LLM de referência | LLM menos Jev [IC 95%] | Tempo LLM / Jev | Custo LLM / Jev |
|---|---|---|---|---|
| 3 | DeepSeek V4 Pro | -1.4 [-4.6; +1.4] | 8.5x | 14.0x |
| 10 | GPT-5.6 Luna | -0.7 [-2.1; +0.7] | 4.1x | 4.9x |
| 25 | GPT-5.6 Luna | +1.0 [-0.6; +2.5] | 5.6x | 2.8x |
Calculei a razão de custo com os preços de hoje do OpenRouter, então ela muda assim que um preço mudar. Os tempos incluem a ida e volta até o OpenRouter, que daqui custa entre 20 e 30 ms (mediana de 20 ms na execução em inglês, 28 na italiana).
Se em vez disso você comparar o Jev com um modelo de fronteira, os números crescem. Mil e-mails com 25 perguntas custam US$ 0,08 com o Jev, US$ 2,17 com o GPT-5.6 Terra e US$ 11,82 com o Gemini 3.1 Pro, que, além disso, leva 21 vezes mais tempo que o Jev. Vinte e uma vezes continua longe de 193, mas mostra de onde vêm os números da TypeSafe: eles comparam o Jev com modelos de fronteira.
Em italiano
Em italiano rodei o teste de novo com o Jev e os dois modelos da OpenAI:
| Decisões | Jev: inglês / italiano | LLM de referência (IT) | Tempo LLM / Jev (IT) | Custo LLM / Jev (IT) |
|---|---|---|---|---|
| 3 | 94.3 / 92.4 | GPT-5.6 Luna | 4.4x | 4.4x |
| 10 | 97.2 / 96.9 | GPT-5.6 Luna | 5.5x | 5.4x |
| 25 | 94.8 / 95.0 | GPT-5.6 Luna | 8.2x | 3.3x |
A qualidade do Jev se mantém no nível do inglês. A única diferença estatisticamente significativa aparece com 3 decisões, 1,9 ponto [0,6; 3,7]. Os LLMs, porém, ficam mais lentos em italiano, porque o mesmo e-mail consome mais tokens: com 25 decisões o GPT-5.6 Luna vai de 1.886 para 2.864 ms, enquanto o Jev vai de 337 para 348.
Os e-mails em inglês são uma tradução feita por LLM de originais em italiano escritos por um LLM. Uma diferença entre os idiomas também pode vir da tradução. O script build_en.py confere se cada e-mail traduzido mantém as respostas esperadas do original, mas não tem como conferir o estilo.
Confiança: “não pode alucinar”?
A TypeSafe diz que o Jev não pode alucinar. Isso vale para a forma: ele não devolve um campo que você não pediu nem uma opção que não existe. Os erros de julgamento continuam existindo. Se você perguntar algo que o texto não diz, ele não tem como responder “não sei”: distribui a probabilidade entre as opções que você forneceu e escolhe uma. Por isso a opção other no código acima não é opcional.
O que protege você é a confiança. A tabela mostra as respostas do Jev às perguntas choice e score, com 25 decisões, agrupadas pela confiança declarada:
| Confiança | Respostas | Confiança média | Corretas (inglês) | Corretas (italiano) |
|---|---|---|---|---|
| abaixo de 0.50 | 59 | 0.36 | 40.7% | 32.8% |
| de 0.50 a 0.70 | 100 | 0.60 | 50.0% | 43.8% |
| de 0.70 a 0.85 | 102 | 0.78 | 59.8% | 54.9% |
| de 0.85 a 0.95 | 98 | 0.90 | 77.6% | 71.7% |
| 0.95 ou mais | 481 | 0.99 | 96.5% | 96.6% |
(O número de respostas e a confiança média são da execução em inglês.)
Acima de 0,95 a confiança se sustenta. Na faixa do meio o Jev é otimista: quando diz 0,90, acerta um pouco mais de três vezes em quatro. A confiança sobe junto com a acurácia, então ela serve, mas o limiar você precisa medir nos seus próprios dados. Com esses números, o 0,85 do JevTriage_en deixaria passar no automático um bom número de respostas erradas: nos meus dados, o limiar razoável para agir sem confirmação é 0,95.
O que o teste não prova
O teste vale para uma única tarefa: e-mails de clientes de um sistema de gestão italiano, as mesmas instruções para todos. Ele não diz como os modelos se saem em outros domínios, o que os LLMs conseguiriam com um prompt bem trabalhado ou alguns exemplos, nem quanto o resultado varia de uma execução para outra, porque há uma execução só. Os e-mails difíceis estão sobrerrepresentados de propósito, então as porcentagens absolutas são mais baixas do que você veria no tráfego real. E as respostas esperadas foram escritas por um LLM, não por uma equipe de pessoas com café e muita paciência.
Há duas coisas a decidir antes mesmo de testar. Hoje o Jev é só uma API na nuvem, em acesso antecipado, sem pesos publicados e sem instalação on-premise: os e-mails dos seus clientes saem da sua infraestrutura e vão para uma startup que saiu do modo stealth há uma semana, depois de dois anos trabalhando em sigilo. E a configuração fixa typesafe/jev-1.13, não o alias jev-latest, porque os limiares de confiança valem para uma versão específica.
Baixe e experimente
O código está aqui: jev-delphi-demo.zip. Dentro você encontra a demo em inglês (JevTriage_en) e em italiano (JevTriage), o JevBench, o dataset em italiano e em inglês, os resultados completos com os CSVs e o bench/METODOLOGIA.md, que explica cada escolha com muito mais detalhe do que este artigo.
Você precisa do Delphi 13 (deve funcionar também no 12 e no 11, mas não testei), do código-fonte do DelphiMVCFramework por causa do MVCFramework.DotEnv, que lê o arquivo .env, e de uma chave do OpenRouter com algum crédito. Copie .env.example para .env, coloque sua chave e compile:
call "C:\Program Files (x86)\Embarcadero\Studio\37.0\bin\rsvars.bat"
msbuild JevTriage_en.dproj /p:Config=Debug /p:Platform=Win64
JevTriage_en.exe
O JevTriage_en custa menos de um centavo de dólar. Com seis modelos o JevBench faz 1.890 chamadas por idioma e leva uma hora e pouco. A execução em inglês custou uns US$ 3,50; a italiana, com três modelos e 945 chamadas, uns US$ 0,90. Antes de rodá-lo, experimente JevBench.exe --selftest, que gera todos os relatórios a partir de resultados fictícios sem chamar nenhum modelo. Qualquer argumento desconhecido faz o programa parar, assim um erro de digitação não dispara uma execução paga.
Para a parte opinativa, onde eu colocaria o Jev num sistema de gestão e onde não colocaria, ouça o episódio 7 do “while true do;” (em italiano). O paradoxo de Jevons, que dá nome ao Jev, é o tema dos episódios 4 e 5. A documentação oficial do Jev está em docs.typesafe.ai.
Perguntas frequentes
O que é o Jev da TypeSafe AI? O Jev é um modelo que a TypeSafe AI chama de “System One”: não gera texto, recebe um contexto e algumas perguntas tipadas (choice, score, noul) e devolve para cada uma a resposta, a distribuição de probabilidade sobre as opções e uma confiança. Foi anunciado em 15 de setembro de 2026 e é usado via API, direto na TypeSafe ou pelo OpenRouter.
O Jev é mesmo 200 vezes mais rápido que um LLM? No benchmark de Daniele Teti com 105 e-mails de clientes de um sistema de gestão, o Jev foi de 4 a 8 vezes mais rápido que o LLM mais barato com a mesma acurácia, e cerca de 20 vezes mais rápido que o Gemini 3.1 Pro. Os 193x divulgados pelo fabricante vêm de fluxos de trabalho escolhidos pela TypeSafe e comparam o Jev com modelos de fronteira.
O Jev erra menos que o GPT e o Gemini? Com 3 e 10 decisões por chamada nenhum dos LLMs testados supera o Jev em acurácia balanceada. Com 25 decisões só o Gemini 3.1 Pro é melhor, por cerca de 2 pontos. O Gemini 2.5 Flash Lite é pior em todos os níveis.
A confiança declarada pelo Jev corresponde à realidade? No topo, sim: acima de 0,95 o Jev acertou 96,5% das vezes. Na faixa do meio ele é otimista demais: quando declara cerca de 0,90, acerta 77,6% das vezes. Por isso o limiar para encaminhar um caso a uma pessoa precisa ser ajustado com os seus próprios dados.
Como chamar o Jev no Delphi? Com um POST JSON para o endpoint /api/v1/systemone do OpenRouter, usando THTTPClient e System.JSON da RTL. O código completo, incluindo o benchmark, está disponível para download em danieleteti.it.
Quem escreveu as respostas esperadas do benchmark? As respostas esperadas foram escritas e revisadas pelo Claude Opus 5. Daniele Teti definiu as regras e decidiu o caso mais disputado; os outros casos disputados foram decididos pelo mesmo modelo em nome dele, e ninguém conferiu de novo todos os rótulos à mão. Por isso não há nenhum modelo da Anthropic na comparação.
Comments
comments powered by Disqus