Decisões

Decisões (Jev)

Faça perguntas tipadas sobre os seus dados e obtenha respostas que o seu código pode usar: a probabilidade de sim, uma opção de um conjunto ou uma posição numa escala, com probabilidades calibradas, normalmente em menos de um segundo. Disponível através da própria API da TypeSafe, pelo que os seus SDKs funcionam sem alterações.

POST/v1/systemone
ModeloIDEntrada, por 1M tokensPreço da TypeSafeSaída
Jev 1.14jev-1.14$0.024$0.042Grátis
Jev 1.13jev-1.13$0.035$0.042Grátis

Jev é o modelo de decisão da TypeSafe, que a empresa designa como modelo System One: compreende linguagem natural como um modelo de chat, mas, em vez de escrever texto, responde às perguntas que definir. jev-latest, jev-1.14.0 e typesafe/jev-1.14 também funcionam como IDs de modelo, e jev-1.13 continua disponível para prompts ajustados a esse modelo.

Fazer perguntas

# pip install typesafe-sdk
from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
with TypeSafeClient(
base_url="https://api.zurelay.com",
api_key="YOUR_ZURELAY_KEY",
model="jev-1.14",
) as client:
response = client.system_one(
state={"ticket": "I was charged twice for October, please refund one today."},
questions={
"refund": Noul(instructions="Is the customer asking for money back?"),
"team": Choice(
instructions="Which team should handle this?",
criteria={"billing": "Charges and refunds", "technical": "Bugs and outages"},
),
"urgency": Score(
instructions="How urgent is it?",
criteria=["can wait", "this week", "today"],
),
},
)
print(response.nouls["refund"].noul) # 0.98
print(response.choices["team"].choice) # billing
print(response.scores["urgency"].score) # 1.9

Com os SDKs da TypeSafe, defina o URL base como https://api.zurelay.com, sem /v1: os SDKs acrescentam /v1/systemone automaticamente. As variáveis de ambiente TYPESAFE_BASE_URL e TYPESAFE_API_KEY também funcionam. Qualquer cliente HTTP funciona da mesma forma: envie a sua chave Zurelay como token Bearer.

A resposta

Resposta
{
"id": "req_8Kq2vXbN4tR7mWc1pLs9dYe3",
"model": "jev-1.14",
"answers": {
"refund": { "type": "noul", "noul": 0.98 },
"team": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 1.0, "technical": 0.0 },
"confidence": 1.0
},
"urgency": {
"type": "score",
"score": 1.9,
"legend": { "0": "can wait", "1": "this week", "2": "today" },
"probabilities": { "0": 0.0, "1": 0.1, "2": 0.9 },
"confidence": 0.81
}
},
"usage": { "input_tokens": 396, "output_tokens": 61, "cost": 0.00001386 }
}

Cada resposta é devolvida com o nome que atribuiu à respetiva pergunta. usage indica a base de faturação do pedido, e cost o custo em dólares americanos. Para o mesmo pedido, uma resposta pode variar um ou dois pontos entre chamadas.

Parâmetros

modelstringobrigatório
jev-1.14, jev-latest (o mesmo modelo) ou jev-1.13.
statestring, object ou arrayobrigatório
O conteúdo sobre o qual decidir: um texto ou dados estruturados, como um registo, um histórico de chat ou o estado atual da sua aplicação. Para referir um campo numa pergunta, use o nome entre acentos graves, como `ticket`.
questionsobjectobrigatório
As suas perguntas, cada uma com um nome à sua escolha. As respostas são devolvidas com os mesmos nomes, que não são enviados ao modelo.
Cada pergunta
typestringobrigatório
noul, choice ou score.
instructionsstring, object ou arrayobrigatório
A pergunta. Um objeto pode conter a pergunta num campo e os dados a que se refere noutros.
criteriaobject ou array
Para choice (obrigatório): um objeto de opções, cada uma com uma descrição ou null, até 255. Para score (obrigatório): um array de 2 a 10 níveis, do mais baixo para o mais alto. Para noul (opcional): true e false, que definem o significado de sim e não.

Tipos de pergunta

TipoPerguntaAnswer
noulUma pergunta de sim ou nãonoul: a probabilidade de sim, de 0 a 1
choiceQual das suas opções se adequachoice, o valor de probabilities de cada opção e um valor de confidence
scoreEm que ponto da sua escala ordenada se situascore, que pode ficar entre níveis, um valor de legend, o valor de probabilities de cada nível e um valor de confidence

Um pedido pode combinar os três tipos, e fazer várias perguntas custa pouco mais do que fazer uma: o estado é lido uma única vez, e todas as perguntas são respondidas em paralelo com base nele.

Limites

  • Até 64K tokens por pedido, contando o estado e todas as perguntas, e 32K para o estado mais a pergunta mais longa.
  • Apenas texto: uma string, um objeto JSON ou um array. Converta primeiro imagens, PDFs ou áudio em texto.
  • Sem streaming: as respostas são devolvidas completas, normalmente em menos de um segundo.
  • Um pedido malformado (sem instructions, uma pontuação com apenas um nível) é rejeitado com 400 antes de chegar ao modelo e não tem custos. O mesmo acontece se ultrapassar 64K tokens, com o código context_length_exceeded.

Obter boas respostas

Jev interpreta as instruções à letra, por isso escreva a condição exata e inclua os casos-limite nos critérios. Deixe as contagens, a aritmética e as comparações de datas no código, e envie apenas a parte do estado necessária para a pergunta. Pode favorecer a primeira opção de uma escolha: numa decisão importante, confirme que a resposta se mantém ao alterar a ordem das opções.

Pagamento das decisões

Jev é faturado pelos tokens de entrada que contabiliza: o estado e as perguntas que envia, mais cerca de 270 tokens próprios por pedido. As respostas são gratuitas, tal como na TypeSafe. Um pedido curto de cerca de 300 tokens custa cerca de $0.00001, pelo que um milhão desses pedidos custa cerca de $10. O cabeçalho usage e o cabeçalho x-zurelay-input-tokens de cada resposta indicam a base de faturação, todos os pedidos ficam no seu registo de pedidos, e os pedidos que falham não têm custos.

Experimente o seu próprio conteúdo e as suas perguntas no Área de testes do painel: escolha Jev, cole o conteúdo, defina as perguntas ao lado, e o botão Obter código gera o mesmo pedido em Python, Node.js ou cURL.

Tem dúvidas ou falta alguma coisa? Contacte a nossa equipa de apoio e responderemos por email, normalmente num minuto.