Guia e comunidade independentes para programadores
Informações oficiais sobre o Jev: typesafe.ai

Experimentar Jev grátis

Faz uma pergunta ou três perguntas diferentes sobre o mesmo caso. Escolhe um exemplo, altera os dados e analisa cada resposta estruturada.

Explorar projetos no GitHub
01 / Escolher uma decisão

Começa com um caso concreto

typesafe/jev-1.13

Explora um tipo de resposta de cada vez. Cada execução usa uma tentativa diária.

1. Choice
questions.decision
Pré-visualizar o pedido à API

A pré-visualização não inclui a chave de API nem o token de verificação. Cada ID de pergunta tem uma resposta com o mesmo nome.

{
  "model": "typesafe/jev-1.13",
  "state": {
    "input": "A minha subscrição foi cobrada duas vezes. Podem ajudar?"
  },
  "questions": {
    "decision": {
      "type": "choice",
      "instructions": "Que equipa deve tratar disto?",
      "criteria": {
        "billing": "Pagamentos e reembolsos",
        "technical": "Erros e integrações",
        "general": "Outros pedidos"
      }
    }
  }
}

Cada conta tem 6 tentativas gratuitas por dia UTC, repostas às 00:00 UTC. A capacidade diária do site é limitada. O texto introduzido é enviado à OpenRouter; guardamos dados de utilização, mas não o teu texto.

02 / Como ler a resposta

Pronto quando quiseres

Executa um caso para obter uma resposta estruturada por pergunta: Choice escolhe uma opção, Score posiciona-a numa escala e Probability devolve um valor entre 0 e 1.

Exemplo com a API

Integra o Jev no teu código.

O formulário envia o teu texto como state.input e uma ou três perguntas identificadas. Cada resultado fica em answers.<question_id>.

O que significa cada campo

O pedido define as perguntas e o formato esperado. A resposta contém um resultado para cada pergunta. Estes são os campos JSON usados no exemplo.

Pedido

model
O identificador do modelo. O exemplo fixa Jev 1.13 para tornar a versão explícita.
state
O texto ou os dados estruturados a avaliar, como uma mensagem de apoio.
questions
Um objeto cujas chaves são os nomes das perguntas. As mesmas chaves aparecem depois em answers.
<question_id>
Um nome como action ou urgency; a resposta usa o mesmo nome.
type
Formato de resposta: choice escolhe uma opção, score avalia numa escala ordenada e noul responde a uma pergunta de sim ou não.
instructions
A decisão concreta que o modelo deve tomar.
criteria
As opções permitidas em Choice, os níveis ordenados de Score ou o significado de false e true em Noul.

Resposta

answers
Um resultado por pergunta, com o mesmo nome.
choice
A opção escolhida, aquela com maior probabilidade.
probabilities
A probabilidade de cada opção; os valores somam 1.
confidence
Um grau de confiança calculado a partir da distribuição de probabilidades, diferente da probabilidade da opção escolhida.
score
Uma posição ponderada pelas probabilidades numa escala ordenada; pode ficar entre dois níveis.
legend
A correspondência entre as posições numéricas de Score e as descrições dos níveis que definiste.
noul
Um valor entre 0 (não) e 1 (sim) para uma pergunta binária.

O mesmo contexto, três perguntas independentes: Choice, Score e Probability. Cada execução usa uma tentativa diária. Uma resposta no formato certo pode estar errada. Teste casos representativos e defina limiares de encaminhamento adequados à sua aplicação.

URL da API

OpenRouter

Este Playground chama uma versão específica de Jev através da OpenRouter. Consulta a página do modelo para ver os preços e a disponibilidade atuais.

URL da API
POST https://openrouter.ai/api/alpha/decisions
model
typesafe/jev-1.13
Chave de API
Envia a chave API a partir do servidor como token Bearer.
OpenRouter ↗
API direta oficial

TypeSafe

A TypeSafe tem um endpoint e chaves API próprios. O guia oficial usa jev-latest e mostra como enviar várias perguntas num só pedido.

URL da API
POST https://api.typesafe.ai/v1/systemone
model
jev-latest
Chave de API
Envia a chave API a partir do servidor como token Bearer.

TypeScript no servidor

TypeScript · fetch
// Run on your server. Keep the API key out of browser code.
const apiKey = process.env.OPENROUTER_API_KEY;
if (!apiKey) throw new Error("Set OPENROUTER_API_KEY");

const response = await fetch("https://openrouter.ai/api/alpha/decisions", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + apiKey,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "typesafe/jev-1.13",
    state: {input: "A customer reports a duplicate charge."},
    questions: {
      team: {
        type: "choice",
        instructions: "Which team should handle this?",
        criteria: {
          billing: "Payments and refunds",
          technical: "Bugs and integrations"
        }
      },
      urgency: {
        type: "score",
        instructions: "How urgent is the issue?",
        criteria: ["Can wait", "Needs attention today", "Immediate action"]
      },
      escalate: {
        type: "noul",
        instructions: "Should a human review this first?",
        criteria: {false: "No review needed", true: "Review before acting"}
      }
    }
  })
});

if (!response.ok) throw new Error("Decision request failed");
const {answers} = await response.json();
console.log(answers.team.choice, answers.urgency.score, answers.escalate.noul);
Como ler a resposta

Três tipos de perguntas, três formatos de resposta

Escolhe o tipo de resposta de que o teu código precisa. Se enviares várias perguntas, cada ID recebe um resultado próprio.

TypeSafe: Choice · Score · Noul ↗

Choice

choice · probabilities · confidence

A opção escolhida, aquela com maior probabilidade.

Score

score · legend · probabilities · confidence

Uma posição ponderada pelas probabilidades numa escala ordenada; pode ficar entre dois níveis.

Noul

noul

Um valor entre 0 (não) e 1 (sim) para uma pergunta binária.

Antes de utilizar em produção

Teste com pedidos representativos, registe a versão do modelo e envie os casos incertos ou de grande impacto para revisão humana. O valor 0,8 é apenas um exemplo.