Aller au contenu principal

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 est system.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 :

Bash
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

model

Chaîne

Le nom de service de modèle Unity Catalog entièrement qualifié, tel que system.ai.openjev-qwen35-4b.

state

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.

questions

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 answers.

Champ

Type

Description

model

Chaîne

Le nom de service de modèle Unity Catalog entièrement qualifié, tel que system.ai.openjev-qwen35-4b.

state

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.

questions

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 answers.

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:

JSON
{
"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.

Ressources supplémentaires​