Query des modèles avec l'API TypeSafe System One
L’API System One de TypeSafe évalue l’état de l’application par rapport à des questions typées et renvoie des réponses structurées. Sur Databricks, envoyez des requêtes à un service de modèle compatible avec System One via Unity Gateway. La route Databricks utilise le format de requête et de réponse de System One.
Utilisez l’API System One lorsqu’une application requiert une décision structurée et concise plutôt qu’un texte généré. Cela peut s’avérer judicieux lorsque le temps de réponse importe, par exemple pour décider si une requête nécessite une escalade, pour choisir une étiquette de routage ou pour l’évaluer par rapport à un barème. Le temps de réponse dépend du service de modèle et de la charge des requêtes.
Pour les décisions concernant les lignes de table en SQL, consultez la fonctionai_decide.
Prérequis
- Un workspace compatible avec Unity Catalog et Unity Gateway.
- Un service de modèle Unity Catalog pris en charge par un modèle compatible System One. L'exemple utilise le service de modèle
openjev-qwen35-4b, dont le nom complet estsystem.ai.openjev-qwen35-4b. - Autorisation d'exécuter le service de modèle.
La route System One nécessite un service de modèle Unity Catalog. Il ne prend pas en charge un service de fournisseur de modèle ou un endpoint de serving non-Unity Catalog.
query un service de modèle
Le corps de la requête contient le nom de service de modèle entièrement qualifié, l’état à évaluer et une ou plusieurs questions nommées. Chaque question utilise l’un des types noul, choice ou score.
La requête suivante comprend une question de chaque type :
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
Utilisez le nom de service de modèle Unity Catalog entièrement qualifié, system.ai.openjev-qwen35-4b, dans le champ model de la requête.
Champs de requête
Champ | Type | Description |
|---|---|---|
| Chaîne | Le nom de service de modèle Unity Catalog entièrement qualifié, tel que |
| Chaîne, objet ou tableau | Le contenu à évaluer. Utilisez une chaîne pour le texte ou des données structurées pour les enregistrements, les conversations ou l'état de l'application. |
| Objet | Une table de correspondances non vide associant des ID de question à des définitions de question. La réponse utilise les mêmes ID dans l’objet |
Chaque question comporte un type, un élément instructions facultatif et un criteria spécifique au type :
Questions
Une question noul renvoie la probabilité que la réponse soit oui. L'objet optionnel criteria décrit la signification de true et false. Fournissez soit instructions, soit une description pour true ou false. La réponse contient un nombre noul compris entre 0 (non) et 1 (oui).
Questions à choix multiples
Une question choice sélectionne une option dans l’objet criteria. Chaque option correspond à une description ou à null lorsqu’aucune description supplémentaire n’est nécessaire. Définissez 1 à 255 options. La réponse contient choice sélectionné, une probabilité pour chaque option ainsi qu’une valeur confidence.
Questions de score
Une question score évalue l’état par rapport à un tableau criteria ordonné. La réponse contient un élément score pondéré en fonction de la probabilité, un élément legend qui met en correspondance les indices de niveau avec les critères, des probabilités pour chaque niveau ainsi qu’une valeur confidence. Définissez de 1 à 10 niveaux.
Format de réponse
La réponse contient l’identifiant du modèle et une réponse pour chaque question dans answers. L’utilisation de jetons apparaît dans usage, avec input_tokens et 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
}
}
Cette réponse est basée sur la requête ci-dessus, les valeurs numériques étant arrondies. Les réponses, les probabilités, les valeurs de confiance, les nombres de jetons et l’identifiant de modèle renvoyé varient selon la requête et le backend. La valeur model de la réponse identifie le modèle signalé par le backend et peut différer du nom de service de modèle complet de la requête.
Erreurs de requête
En cas d’erreurs de validation de requête, la route renvoie le code HTTP 422 avec un tableau detail décrivant la requête non valide.