Integrando um modelo Sistema Um a um recurso
Um modelo Sistema Um responde a perguntas tipadas em uma única passagem direta. Ele não gera texto. Estado de entrada, respostas tipadas com probabilidades calibradas de saída. É um if-statement que pode ler.
Use-o quando a decisão for estreita, pré-especificada e repetida. Não o use para qualquer coisa que precise de uma explicação escrita — isso ainda é trabalho para o Claude.
Antes de tudo: esta é realmente a ferramenta certa
Responda a estas três. Se qualquer uma for "não", pare e mantenha a chamada de LLM.
- As respostas possíveis são conhecidas de antemão? O limite de escolhas é de 255 opções.
- Quem chama precisa apenas do rótulo, não do raciocínio? Se um humano lê uma justificativa adiante, você precisa de prosa e esta é a ferramenta errada.
- É de alto volume, ou há uma pessoa esperando? Esta é uma otimização de latência e custo, não um ganho de capacidade. Ele não sabe nada que o Claude não saiba. Em um cron noturno com cinquenta registros, você ganha uma dependência e nada mais.
Medido em 150 registros rotulados manualmente em três tarefas (nossa execução de 20 de setembro de 2026): Jev empata com GPT-5.2 em 145/150 e custa 46x menos ($0,036 vs. $1,64 por 1k registros), mas ponta a ponta é apenas 1,7x mais rápido que GPT-4.1-mini — os 40x-200x publicados são contra um fluxo de trabalho de fronteira de múltiplas etapas de 3 a 329 s, não uma chamada.
As reproduções abertas não são drop-in. Mesma execução: Von 1.0.1 (395M) 92/150 (61%),
Laya (421M) 62/150 (41%). Elas colapsam em uma classe em vez de degradar — Von
previu exfiltration 25 vezes em um conjunto de 50 comandos contendo cinco. Um portão de confiança
não salva isso: para capturar os erros da Von foi necessário escalar 92% do volume, Laya 100%,
contra 8% da Jev. Use-as apenas onde você as mediu em seu próprio conjunto rotulado.
Os três tipos de pergunta
"lead_type": {"type":"choice", "instructions": "...", "criteria": {"opt_a":"desc","opt_b":"desc"}}
"is_urgent": {"type":"noul", "instructions": "..."} # -> 0.0–1.0
"priority": {"type":"score", "instructions": "...", "criteria":["ignore","low","high"]}
Faça todas as perguntas que precisar em uma chamada — todas se resolvem na mesma passagem direta, então quatro perguntas custam aproximadamente o mesmo que uma.
Formato da resposta (Jev e Von):
r["answers"]["lead_type"]["choice"] # o rótulo
r["answers"]["lead_type"]["probabilities"] # distribuição completa
r["answers"]["lead_type"]["confidence"] # use isto para o portão
r["answers"]["is_urgent"]["noul"] # 0.0–1.0
r["answers"]["priority"]["score"] # posição na escala, ex. 2.41
Fluxo de trabalho
1. Crie o conjunto rotulado PRIMEIRO — mínimo de 50 registros
Inegociável, e a etapa de maior valor único. Rotule manualmente registros reais do
fluxo que você pretende usar, antes de escrever qualquer critério. Sem isso, você não consegue
diferenciar uma pergunta ruim de um modelo ruim, e a falha é silenciosa — veja jev-eval.
2. Escreva os critérios como se estivesse explicando a um novo contratado
Variação do pior ao melhor em quatro redações das mesmas perguntas, 50 registros por tarefa (nossa execução de 20 de setembro de 2026):
| tarefa | Jev | Von (395M) | Laya (421M) |
|---|---|---|---|
| risco de comando de agente | 44-49 (10 pts) | 9-23 (28 pts) | 18-28 (20 pts) |
| triagem de lead | 47-49 (4 pts) | 22-34 (24 pts) | 15-24 (18 pts) |
| roteamento de ticket | 41-47 (12 pts) | 23-41 (36 pts) | 22-36 (28 pts) |
Mesma varredura na tarefa de comando com os LLMs incluídos: Haiku 4.5 46-48 (4 pts), GPT-4.1-mini 45-50 (10 pts), Jev 44-49 (10 pts), GPT-5-mini 41-49 (16 pts).
Jev NÃO é mais robusto a redação do que um LLM pequeno — ele oscila os mesmos dez pontos, e Haiku foi o modelo mais estável no teste. Leia o PISO, não a variação: todo modelo hospedado atinge no mínimo 82-92% e permanece implantável, enquanto Von atinge 18% e Laya 36%. NÃO interprete isso como "escreva critérios melhores e o modelo aberto alcança" — um teste anterior com 15 registros concluiu exatamente isso e estava errado. Critérios mais ricos não ajudaram de forma confiável: na triagem de lead, Von pontuou 34/50 com a redação concisa e 28/50 com a redação cuidadosamente escrita. O que move esses números é a sensibilidade à forma de superfície, não à compreensão, então toda edição futura de critérios é um risco de regressão não anunciada.
Escreva cada opção com: o que é, o que não é, e o caso extremo que tenta uma resposta errada. Nomeie o padrão explicitamente quando uma opção deve dominar.
3. Calibre os limiares com base no conjunto rotulado — nunca assuma 0.5
Um noul é uma probabilidade, não um booleano. O noul da Jev tem um piso: em registros claramente limpos, ainda retornava 0.2–0.5 onde o Claude retornava 0.0. Nos dados medidos, o corte útil foi ~0,85, não 0.5. Limiares não são transferíveis entre modelos — re-varra quando você trocar.
Não escreva a varredura manualmente. jev-eval é responsável pela calibração e fornece a ferramenta:
python ~/.claude/skills/jev-eval/scripts/sweep.py labelled.json configs.json \
--backend jev --question <nome>
4. Projete o portão de confiança
Direcione respostas de baixa confiança para o Claude. O mesmo script relata ambas as metades que importam —
que fração de erros o portão captura, e que fração de volume ele escala —
e rotula o resultado. Um portão que captura todos os erros enquanto escala 73% do tráfego é classificado como
não salva nada, porque é um caminho lento com etapas extras. Se você vir isso, a correção são
critérios melhores ou o modelo hospedado, não um limiar diferente.
a = r["answers"]["lead_type"]
if a["confidence"] < GATE:
return escalate_to_claude(state) # caminho lento
return a["choice"] # caminho rápido
5. Implante atrás de uma flag, registre ambos os caminhos por uma semana
Registre a resposta do Sistema Um e o que o caminho antigo teria dito. Compare em tráfego real antes de migrar. Nunca migre apenas com base em números de conjunto de avaliação.
Caminhos de acesso
# 1. TypeSafe direto — chave no macOS Keychain, serviço `typesafe-api-key`
export TYPESAFE_API_KEY="$(security find-generic-password -s typesafe-api-key -w)"
curl -X POST https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" -H "Content-Type: application/json" \
-d '{"model":"jev-latest","state":"...","questions":{...}}'
// 2. Cloudflare Workers AI — sem lista de espera
await env.AI.run('typesafe/jev', { state, questions })
# 3. Von — local, gratuito, Apache-2.0, 395M ModernBERT
# pip install von-sdk
import von
r = von.system_one(state="...", questions={"x": von.Noul(instructions="...")})
r.answers["x"].noul
Armadilhas
Choiceda Von usacriteria=, nãochoices=. Erro Pydantic se você chutar errado.- Von retorna
.answers[k], não.nouls[k]/.choices[k]. O wrapper LangChain difere do SDK bruto aqui. - Inicialização a frio de 34 s da Von carrega pesos. Aqueça-o na inicialização; nunca meça isso em latência.
- Não defina o limiar de um noul em 0.5. Veja a etapa 3.
- Jev é acesso antecipado, fornecedor único, sem SLA. Não coloque um caminho crítico voltado ao cliente nele sem um fallback para o Claude.
- Conjuntos de avaliação pequenos mentem. 15 registros onde ambos os modelos hospedados pontuaram 100% provam quase nada. Use centenas.
Relacionados
jev-eval constrói e executa o conjunto rotulado. jev-audit encontra quais chamadas de LLM existentes
em uma base de código valem a pena ser convertidas.