Skip to Content
ModelosJev (TypeSafe)Visão geral

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

ResumoUtilize o Jev quando o programa precisar executar uma lógica diferente conforme o resultado da decisão; utilize um modelo de chat quando for necessário gerar texto destinado à leitura.

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”:

JevModelo de chat + saída JSON
Conteúdo retornadoLimitado às opções ou níveis definidos previamentePode retornar valores fora das opções; exige validação adicional
IncertezaCada resposta inclui uma probabilidade; choice e score incluem também a confiançaNormalmente não oferece probabilidades utilizáveis
Várias perguntasRespondidas em uma única requisição, com entrada comumPrecisam ser reunidas em um mesmo prompt ou distribuídas em várias chamadas
CobrançaApenas tokens de entrada; a saída não é cobradaEntrada e saída cobradas pelo preço do modelo de chat

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:

Dados de conexão
Base URLhttps://api.ofox.ai/v1
ID do modelotypesafe/jev-latestTambém pode ser escrito jev-latest
Caminho do endpoint/v1/decisionsPOST, não /v1/chat/completions

2. Instalar o SDK: para realizar a chamada com o SDK oficial da OpenAI para Python, instale uma versão que inclua client.decisions:

Terminal
pip install -U openai
AtençãoSe ocorrer AttributeError: '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:

quickstart.py
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.98

Exemplo 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:

Resultado necessárioTipo de perguntaCampos a fornecerCampos retornados
Sim ou nãopredicateA pergunta; opcionalmente criteria para especificar o significado de “sim” e “não”probability: probabilidade de “sim”
Uma opção entre váriaschoicechoices: de 2 a 255 opçõeschoice, probabilidade de cada opção, confidence
Um grauscorelevels: de 2 a 10 níveis, do mais baixo ao mais altoscore, probabilidade de cada nível, confidence

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

SintomaCausaSolução
AttributeError: 'OpenAI' object has no attribute 'decisions'Versão do SDK da OpenAI antiga demaisExecutar pip install -U openai e tentar novamente
400 endpoint_not_supported, com a mensagem Please use /v1/decisions insteadO Jev foi chamado como modelo de chat em /v1/chat/completionsChamar /v1/decisions
400 Invalid request payloadO formato nativo da TypeSafe (state, questions como objeto) foi utilizado em /v1/decisionsUtilizar input e questions como array, ou chamar /typesafe/v1/systemone
400 questions are required for decisionquestions está vazioFornecer pelo menos uma pergunta
400 question "a" has kind choice and requires criteria optionsUma pergunta choice não contém choicesAdicionar as opções
400 Too many score levels. Must have at most 10 levels.Uma pergunta score tem mais de 10 níveisAgrupar níveis
400 max_tokens_exceededA entrada excede 64K tokensDividir documentos longos ou enviar apenas as partes relevantes
400, com input_image e Typesafe cannot read na mensagem de erroUma imagem foi enviada ao JevRemover a imagem ou utilizar um modelo que aceite imagens
404 model_not_foundID do modelo incorretoUtilizar typesafe/jev-latest
A requisição é concluída, mas a resposta está claramente errada e com confiança altaAs opções de choice não cobrem a situação realAdicionar uma opção “nenhuma das anteriores” e complementar as descrições das opções; consulte Elaboração de perguntas
As respostas não contêm name e não podem ser associadas às perguntasAs perguntas não definem nameDefinir um name para cada pergunta

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.

Última atualização em