Guides essentiels
Décisions
Obtenez des probabilités, des choix et des scores typés à partir d'un modèle de décision
POST /v1/systemone évalue un state par rapport à des questions nommées et renvoie une réponse typée par question. La réponse est un JSON synchrone : une probabilité, un nom d'option ou un score que votre code peut comparer et utiliser pour des branchements. Il ne renvoie pas de texte généré.
Décisions ou chat
| Utilisez les décisions quand | Utilisez le chat quand |
|---|---|
| Votre code a besoin d'un nombre ou d'une étiquette pour agir | Une personne ou un autre modèle lit la réponse |
| Vous routez, classifiez ou filtrez une requête : remboursement ou non, quelle équipe, quel degré d'urgence | Vous avez besoin d'explications, de résumés ou de texte rédigé |
| Vous posez plusieurs questions fixes sur la même entrée en un seul appel | Vous avez besoin d'outils, de streaming, d'images ou de messages multi-tours |
Le endpoint de décision n'accepte pas messages, tools, stream ou d'autres contrôles de chat, et il n'est pas disponible en mode Batch. Gardez votre modèle de chat principal configuré séparément.
Choisir un modèle
curl "https://api.tokenlab.sh/v1/models?recommended_for=decision" \
-H "Authorization: Bearer sk-your-api-key"Vous pouvez également filtrer avec category=decision. Lisez GET /v1/models/{model} pour le modèle sélectionné avant d'envoyer des requêtes, et envoyez explicitement l'ID du modèle. Les exemples sur cette page utilisent jev-1.13.
Structure de la requête
| Champ | Type | Notes |
|---|---|---|
model | string | ID du modèle de décision |
state | string, JSON object, or JSON array | L'entrée à évaluer, telle qu'un ticket, une transcription ou un enregistrement |
questions | object | Au moins une question. Chaque clé est le nom de votre question ; chaque valeur possède type, instructions et criteria |
instructions et chaque critère acceptent également une chaîne, un objet JSON ou un tableau JSON. La requête rejette les champs inconnus.
type | criteria | Réponse |
|---|---|---|
noul | Optionnel. Un objet avec des conseils pour true et false | noul : une probabilité de 0 à 1 que l'affirmation soit vraie |
choice | Requis. Un objet de 1 à 255 noms d'options, chacun mappé à des conseils ou null | choice : l'un de vos noms d'options. Peut inclure probabilities et confidence |
score | Requis. Un tableau ordonné de 2 à 10 descriptions de niveaux | score : un nombre de 0 au dernier index du tableau ; il peut être fractionnaire. Peut inclure legend, probabilities et confidence |
Évaluer un ticket
curl https://api.tokenlab.sh/v1/systemone \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "I was charged twice. Please refund the duplicate payment.",
"questions": {
"refund_requested": {"type": "noul", "instructions": "Is a refund requested?"},
"department": {
"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"refunds": "Charges and refunds", "technical": "Software bugs"}
},
"urgency": {
"type": "score", "instructions": "Rate urgency",
"criteria": ["Routine enquiry", "Money affected", "Safety emergency"]
}
}
}'La réponse conserve les noms de vos questions sous answers. Les valeurs ci-dessous sont illustratives :
{
"model": "jev-1.13",
"answers": {
"refund_requested": {"type": "noul", "noul": 0.97},
"department": {"type": "choice", "choice": "refunds"},
"urgency": {"type": "score", "score": 1}
},
"usage": {"input_tokens": 96, "output_tokens": 12}
}Utiliser les réponses
- Chaque question reçoit une réponse du même
type, sous le même nom. - Une réponse
noulest une probabilité, pas un booléen. Choisissez votre propre seuil pour chaque action. - Une réponse
choiceest toujours l'un des noms d'options que vous avez envoyés. - Une réponse
scoreindexe votre tableaucriteria:1ci-dessus signifie "Money affected". - Testez les décisions par rapport à vos propres cas étiquetés avant qu'elles ne déclenchent des remboursements, des escalades ou d'autres actions.
Utiliser depuis MCP
Le serveur MCP TokenLab expose evaluate_decisions dans les profils core et full. Appelez d'abord list_models avec {"category":"decision"} et get_model, puis passez les mêmes model, state et questions en tant qu'arguments d'outil. Lisez structuredContent.answers et structuredContent.usage à partir du résultat. L'outil renvoie un résultat synchrone et n'utilise pas de polling de tâche asynchrone.
Utiliser depuis les SDK
Le SDK JavaScript TokenLab 0.1.2+ fournit evaluateDecisions(body) ; le SDK Python 0.1.2+ fournit evaluate_decisions(body). Le corps est le même JSON que la requête HTTP. Les deux préservent les réponses typées et l'usage, et ne rejouent pas automatiquement une requête échouée. Voir SDKs.
Coût et tentatives
- Les décisions sont facturées par tokens, à partir de
usage.input_tokensetusage.output_tokensdans la réponse, aux prix actuels des tokens du modèle. - Les prix peuvent changer. Lisez les détails de tarification du modèle ou l'API de tarification au lieu de coder un prix en dur.
- Un modèle peut rapporter des tokens de sortie même lorsque son prix de sortie est nul.
- Les requêtes suivent votre option de livraison. Voir Facturation et tarification.
- Un délai d'attente (timeout) laisse le résultat incertain. Vérifiez la requête dans vos logs ou votre Console avant d'envoyer à nouveau une requête payante.
Erreurs courantes
| Symptôme | Cause probable | Correction |
|---|---|---|
400 sur un champ tel que messages ou stream | Les champs de chat ne font pas partie de ce endpoint | Envoyez uniquement model, state et questions |
400 sur criteria | Un choice a 0 ou plus de 255 options, un score a moins de 2 ou plus de 10 niveaux, ou un objet noul manque de true ou false | Corrigez la définition de la question |
| Les actions se déclenchent sur des signaux faibles | Une probabilité noul a été traitée comme vraie ou fausse | Comparez par rapport à un seuil que vous avez testé |
Référence API
| Sujet | Référence |
|---|---|
| Évaluer les décisions | Évaluer les décisions |
| Lister les modèles | Lister les modèles |
| Tarification | API de tarification |
| Facturation et tarification | Facturation et tarification |