Jev
O TypeSafe Jev é um modelo de decisão: não gera texto e responde apenas a perguntas definidas previamente. A requisição contém o conteúdo a ser avaliado e um conjunto de perguntas; o modelo retorna, para cada pergunta, uma resposta estruturada acompanhada da respectiva probabilidade, com base na qual o programa pode executar diretamente sua lógica de ramificação.
Casos de uso
Indicado para:
- Classificação e roteamento: equipe responsável pelo ticket, categoria de intenção do usuário.
- Decisões de sim ou não: se contém dados pessoais, se é um pedido de reembolso, se é uma injeção de prompt.
- Pontuação e ordenação: grau de urgência, relevância, intensidade do sentimento e filtragem de resultados de busca.
- Controle de qualidade das saídas de LLM: se a resposta é pertinente, se viola as regras.
Não indicado para:
- Geração de texto, resumos, traduções ou código.
- Decisões sobre imagens (o Jev aceita apenas texto e JSON como entrada; para imagens, utilize o GPT-6 Luna).
- Perguntas abertas cujas respostas não podem ser definidas previamente como opções ou níveis.
Comparação com a abordagem “modelo de chat + saída JSON”:
Início rápido
1. Preparar os dados de conexão: crie uma API Key no console da OfoxAI e utilize os dados a seguir:
https://api.ofox.ai/v1typesafe/jev-latestTambém pode ser escrito jev-latest/v1/decisionsPOST, não /v1/chat/completions2. Instalar o SDK: para realizar a chamada com o SDK oficial da OpenAI para Python, instale uma versão que inclua client.decisions:
pip install -U openaiAttributeError: 'OpenAI' object has no attribute 'decisions' durante a execução, a versão do SDK é antiga demais; execute o comando acima para atualizá-la (versão openai 3.31.0 verificada). Sem o SDK, a chamada também pode ser feita com o comando cURL abaixo.3. Realizar a chamada:
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
r = client.decisions.create(
model="typesafe/jev-latest",
input="Customer message: I was charged twice, nobody has answered my two emails, and I need a refund today.",
questions=[{"type": "predicate", "name": "is_frustrated", "instructions": "Is the customer frustrated?"}],
)
print(r.answers[0].probability) # 0.98Exemplo de resposta:
{
"model": "typesafe/jev-latest",
"answers": [{ "type": "predicate", "name": "is_frustrated", "probability": 0.98 }],
"usage": { "prompt_tokens": 302, "completion_tokens": 23, "total_tokens": 325 }
}probability indica a probabilidade de a resposta ser “sim”; um valor de 0.98 significa que o modelo considera muito provável que o cliente esteja insatisfeito. Para aplicá-lo ao próprio caso de uso, substitua input pelo conteúdo real e questions pelas perguntas reais.
Tipos de pergunta
Selecione o tipo de pergunta conforme a forma do resultado necessário:
Exemplos: “Trata-se de um pedido de reembolso?” corresponde a predicate; “Qual equipe deve tratar o ticket?”, a choice; “Qual é o grau de urgência?”, a score. As três perguntas podem ser incluídas na mesma requisição, que retorna todas as respostas de uma só vez.
Após definir o tipo de pergunta, revise as perguntas e as opções conforme Elaboração de perguntas.
Erros comuns
A lista completa de erros encontra-se em Decisions API · Erros comuns.
Documentação oficial
Perguntas frequentes
Qual é a diferença entre o Jev e um LLM que gera JSON?
O Jev responde apenas dentro das opções e níveis fornecidos e não retorna valores fora desse escopo; cada resposta inclui uma probabilidade, e choice e score incluem também a confiança, que pode ser utilizada diretamente para definir limiares. O JSON gerado por um LLM exige validação adicional e normalmente não oferece probabilidades utilizáveis.
Deve-se utilizar /v1/decisions ou /typesafe/v1/systemone?
Para projetos novos, recomenda-se /v1/decisions, que pode ser chamado diretamente com o SDK da OpenAI. Projetos que já utilizam o SDK da TypeSafe ou seu código de exemplo oficial podem utilizar /typesafe/v1/systemone, alterando apenas a URL base.
Como o Jev é cobrado?
Apenas os tokens de entrada são cobrados; a saída não é cobrada. Os preços constam na página do modelo. As perguntas de uma mesma requisição compartilham a mesma entrada; por isso, reunir as perguntas em uma única requisição reduz os custos.
Uma confiança alta significa que a resposta está necessariamente correta?
Não necessariamente. Quando as opções não cobrem a situação real, o modelo ainda escolhe uma das opções existentes, possivelmente com confiança alta. Por isso, as perguntas choice devem incluir uma opção de reserva como "nenhuma das anteriores", e os resultados devem ser validados com amostras rotuladas manualmente.
O que significa um score de 1.43?
O score é um valor ponderado pelas probabilidades de cada nível, e os níveis são numerados a partir de 0. O valor 1.43 situa-se entre o nível 1 e o nível 2, mais próximo do nível 1; a probabilidade de cada nível consta em probabilities.
Conteúdos em idiomas diferentes do inglês são suportados?
Sim. Nos testes, um conteúdo em chinês foi processado corretamente com perguntas escritas tanto em chinês quanto em inglês.
O Jev suporta imagens?
Não. O Jev aceita apenas texto e JSON. Para decisões sobre imagens, utilize o GPT-6 Luna (openai/gpt-6-luna), que aceita imagens como entrada, com o mesmo formato de requisição.