Referência da API
Referência completa da API HTTP para o endpoint de avaliação da TypeSafe.
Avalia um state em relação a um mapa de questions tipadas e recebe answers estruturadas, uma por pergunta. Para uma introdução guiada, começa pelas primitivas.
Endpoint de avaliação
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json
Corpo do pedido
A estrutura de nível superior de cada pedido. Cada entrada no mapa questions é uma pergunta tipada com o nome que escolheres.
state
O conteúdo a avaliar. Uma string simples para texto, ou dados estruturados (objeto/array) para coisas como registos de conversas, registos ou o estado atual da tua aplicação. Vê Estado para formatos e boas práticas.
model
O modelo que trata do pedido. Usa "jev-latest", o modelo principal da TypeSafe. Vê Modelos para os modelos e alias disponíveis.
questions
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
}
}
}
Tipos de pergunta
Uma Question é um de três tipos, definido pelo seu campo type. Os três partilham type e instructions; cada um acrescenta os seus próprios criteria.
A propriedade instructions pode ser uma string, um objeto ou um array. Podes dividir uma pergunta longa que tenha contexto extra, ou dados a que precise de fazer referência, num objeto estruturado. Coloca a pergunta num campo e os dados nos outros e refere-te aos campos de dados pelo nome entre acentos graves, tal como apontas uma pergunta a um valor state aninhado:
"instructions": {
"potential_duplicate": {
"name": "John Smith",
"location": "Oakland, California",
"last_employer": "Google"
},
"question": "Is the resume for the same person as `potential_duplicate`?"
}
Vê Usa estrutura nas perguntas para saber mais.
Noul
Uma pergunta de sim ou não. Devolve a probabilidade de a resposta ser sim.
type
instructions
A pergunta de sim ou não a avaliar. Um objeto pode conter a pergunta num campo e os dados a que se refere noutros; vê Usa estrutura nas perguntas.
criteria
Descrições opcionais do que significam um sim e um não.
propriedades
true
O que significa um sim (valor próximo de 1).
false
O que significa um não (valor próximo de 0).
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?",
"criteria": {
"true": "Explicitly time-sensitive",
"false": "No urgency expressed"
}
}
}
}
Choice
Escolhe uma opção de um conjunto que defines. Devolve a opção escolhida e a distribuição de probabilidade completa.
type
instructions
O que o modelo deve decidir. Um objeto pode conter a pergunta num campo e os dados a que se refere noutros; vê Instruções e criteria estruturados.
criteria
Um mapa de opção para descrição da rubrica; usa null quando uma opção não precisa de detalhe extra. Podes ter no máximo 255 opções por Choice.
entradas do mapa
‹option›
Uma chave que escolhes. Uma descrição desta opção.
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments, invoicing, refunds",
"technical": "Bugs, outages, integrations",
"sales": "Pricing, upgrades, new accounts"
}
}
}
}
Score
Avalia o estado ao longo de uma rubrica que defines. Devolve um valor ponderado pela probabilidade pelos teus níveis.
type
instructions
O que o modelo deve avaliar. Um objeto pode conter a pergunta num campo e os dados a que se refere noutros; vê Usa estrutura nas perguntas.
criteria
Um array ordenado de descrições de níveis. Um Score deve ter pelo menos dois níveis; a API aceita até 10.
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated", "Very angry"]
}
}
}
Corpo da resposta
Uma resposta por pergunta, devolvida sob os mesmos ids que forneceu.
model
O modelo que realizou a avaliação.
answers
Uma Answer por pergunta, com chave pelos mesmos ids que usaste nas perguntas.
entradas do mapa
‹question id›
O mesmo id que escolheste nas perguntas.
usage
Utilização de tokens do pedido.
propriedades
input_tokens
output_tokens
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}
Tipos de resposta
Cada resposta traz um type que corresponde à sua pergunta. As respostas Choice e Score também trazem uma confidence entre 0 e 1, derivada da distribuição de probabilidade da resposta. Vê Confiança.
Resposta Noul
type
noul
A resposta de sim ou não numa escala de 0 (não) a 1 (sim).
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 307, "output_tokens": 20 }
}
Resposta Choice
type
choice
A opção com maior probabilidade.
probabilities
Cada opção mapeada para a sua probabilidade (floats que somam 1).
entradas do mapa
‹option›
Uma opção que definiste em criteria.
confidence
Quão certo o modelo está, derivado das probabilidades.
{
"model": "jev-1.13.0",
"answers": {
"department": {
"type": "choice",
"choice": "billing",
"probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
"confidence": 0.81
}
},
"usage": { "input_tokens": 318, "output_tokens": 34 }
}
Resposta Score
type
score
A resposta ponderada pela probabilidade pelos níveis; pode cair entre níveis.
legend
Cada número de nível mapeado de volta à sua descrição.
probabilities
Cada nível (chave de string) mapeado para a sua probabilidade (floats que somam 1).
entradas do mapa
‹level›
Um índice de nível, como chave de string correspondente ao legend.
confidence
Quão certo o modelo está, derivado das probabilidades.
{
"model": "jev-1.13.0",
"answers": {
"frustration": {
"type": "score",
"score": 1.05,
"legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
"probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
"confidence": 0.92
}
},
"usage": { "input_tokens": 304, "output_tokens": 18 }
}
Erros
Os erros usam códigos de estado HTTP padrão com um corpo JSON que descreve o que correu mal.
| Estado | Significado |
|---|---|
401 Unauthorized |
Chave de API em falta ou inválida. Verifica o cabeçalho Authorization. |
422 Unprocessable Entity |
O corpo do pedido falhou a validação — por exemplo, um campo obrigatório em falta ou uma pergunta malformada. O corpo detalha o campo em falta. |
429 Too Many Requests |
Excedeste o teu limite de taxa. Recua e tenta de novo após um curto atraso. |
529 Overloaded |
A TypeSafe está temporariamente sobrecarregada. Tenta de novo após um curto atraso. |
Como lidar com os limites de taxa
Quando recebes uma resposta 429 Too Many Requests ou 529 Overloaded, tenta novamente o pedido com retrocesso exponencial em vez de tentar imediatamente. Os nossos SDKs de cliente tratam disto automaticamente, por isso não é preciso tratamento extra se usares um dos nossos SDKs com a sua política de repetição predefinida.