Query modelos com a API TypeSafe System One
A System One API do TypeSafe avalia o estado da aplicação com base em perguntas tipadas e retorna respostas estruturadas. No Databricks, envie solicitações para um serviço de modelo habilitado para System One por meio do Unity Gateway. A rota do Databricks usa o formato de solicitação e resposta do System One.
Use a System One API quando uma aplicação precisar de uma decisão compacta e estruturada em vez de texto gerado. Pode ser uma boa opção quando o tempo de resposta for importante, por exemplo, para decidir se uma solicitação precisa de escalonamento, escolher um rótulo de roteamento ou pontuá-la em relação a uma rubrica. O tempo de resposta depende do serviço de modelo e da carga de solicitações.
Para decisões sobre linhas de tabela em SQL, consulte a funçãoai_decide.
Requisitos
- Um Workspace habilitado para o Unity Catalog e o Unity Gateway.
- Um serviço de modelo do Unity Catalog com suporte a um modelo compatível com o System One. O exemplo usa o serviço de modelo
openjev-qwen35-4b, cujo nome totalmente qualificado ésystem.ai.openjev-qwen35-4b. - Permissão para executar o serviço de modelo.
A rota System One requer um serviço de modelo do Unity Catalog. Ele não oferece suporte a um serviço de provedor de modelo ou a um endpoint de atendimento que não seja do Unity Catalog.
Faça query de um serviço de modelo
O corpo da solicitação contém o nome do serviço de modelo totalmente qualificado, o estado a ser avaliado e uma ou mais perguntas nomeadas. Cada pergunta usa um dos tipos noul, choice ou score.
A solicitação a seguir inclui uma pergunta de cada tipo:
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "system.ai.openjev-qwen35-4b",
"state": {
"message": "My card was charged twice for the same order and I need a refund.",
"channel": "support"
},
"questions": {
"is_billing": {
"type": "noul",
"instructions": "Is this a billing-related request?",
"criteria": {
"true": "The message concerns a charge, payment, invoice, or refund.",
"false": "The message does not concern billing."
}
},
"intent": {
"type": "choice",
"instructions": "Which intent best matches the message?",
"criteria": {
"refund": "The customer requests a refund.",
"duplicate_charge": "The customer reports being charged more than once.",
"other": "Another request."
}
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": [
"Can wait",
"Needs attention soon",
"Urgent"
]
}
}
}' \
https://<workspace_host>/ai-gateway/typesafe/v1/systemone
Use o nome totalmente qualificado do serviço de modelo do Unity Catalog, system.ai.openjev-qwen35-4b, no campo model da solicitação.
Campos de solicitação
campo | Tipo | Descrição |
|---|---|---|
| String | O nome do serviço de modelo do Unity Catalog totalmente qualificado, como |
| strings, objeto ou matriz | O conteúdo a ser avaliado. Use uma strings para texto ou dados estruturados para registros, conversas ou estado de aplicativo. |
| Objeto | Um mapa não vazio de IDs de perguntas para definições de perguntas. A resposta usa os mesmos IDs no objeto |
Cada pergunta tem um type, um instructions opcional e um criteria específico do tipo:
Perguntas do Noul
Uma pergunta do tipo noul retorna a probabilidade de a resposta ser sim. O objeto opcional criteria descreve o que true e false significam. Forneça instructions ou uma descrição para true ou false. A resposta contém um número noul de 0 (não) a 1 (sim).
Perguntas de escolha
Uma pergunta do tipo choice seleciona uma opção do objeto criteria. Cada opção é mapeada para uma descrição ou para null quando nenhuma descrição adicional for necessária. Defina de 1 a 255 opções. A resposta contém o choice selecionado, uma probabilidade para cada opção e um valor confidence.
Pontuar perguntas
Uma pergunta de score classifica o estado em relação a uma matriz de criteria ordenada. A resposta contém um(a) score ponderado(a) por probabilidade, um(a) legend que mapeia índices de nível para os critérios, probabilidades para cada nível e um valor de confidence. Defina de 1 a 10 níveis.
Formato de resposta
A resposta contém o identificador do modelo e uma resposta para cada pergunta em answers. O uso de tokens aparece em usage, com input_tokens e output_tokens:
{
"model": "<returned-model-id>",
"answers": {
"is_billing": {
"type": "noul",
"noul": 0.98
},
"intent": {
"type": "choice",
"choice": "duplicate_charge",
"confidence": 0.965,
"probabilities": {
"refund": 0.023,
"duplicate_charge": 0.977,
"other": 0.0002
}
},
"urgency": {
"type": "score",
"score": 1.902,
"confidence": 0.852,
"legend": {
"0": "Can wait",
"1": "Needs attention soon",
"2": "Urgent"
},
"probabilities": {
"0": 0.0069,
"1": 0.0845,
"2": 0.9086
}
}
},
"usage": {
"input_tokens": 238,
"output_tokens": 0
}
}
Esta resposta é baseada na solicitação acima, com valores numéricos arredondados. Respostas, probabilidades, valores de confiança, contagens de tokens e o identificador do modelo retornado variam por requisição e back-end. O valor de resposta model identifica o modelo relatado pelo back-end e pode diferir do nome do serviço de modelo totalmente qualificado da requisição.
Erros de solicitação
Para erros de validação de solicitação, a rota retorna HTTP 422 com uma matriz detail que descreve a solicitação inválida.