Routage conditionné par la confiance
Utilise la confiance comme second axe. La réponse te dit quoi faire ; la confiance te dit s’il faut agir.
L’une des fonctionnalités les plus puissantes de TypeSafe est la confiance. En conditionnant délibérément tes décisions à la confiance (gating), tu peux construire des systèmes à la fois fiables et sûrs.
Exemple : commandes bancaires vocales
Imagine que tu construis une interface bancaire vocale pour permettre à l’utilisateur d’interagir avec son compte à la voix. Tu veux toujours une confiance raisonnable dans l’interprétation de l’intention de l’utilisateur, mais certaines actions sont plus risquées que d’autres et exigent donc un seuil de confiance plus élevé.
%%{init: {"fontFamily": "Inter, sans-serif", "flowchart": {"rankSpacing": 35, "wrappingWidth": 300, "subGraphTitleMargin": {"top": 12, "bottom": 36}}}}%%
flowchart LR
command["voice banking command"]
subgraph req["TypeSafe evaluates<br/>the question"]
intent["<b>Choice:</b> intent"]
end
command -- "one request<br/>command + intent<br/>question" --> req
req -- "one response<br/>intent answer +<br/>confidence" --> gate{"<b>confidence high enough?</b><br/>your code"}
gate -- "below 0.6<br/>or other intent" --> human["send to a support agent"]
gate -- "check_balance<br/>at least 0.6" --> balance["show the balance"]
gate -- "approve_transfer<br/>0.6 to 0.85" --> confirm["ask the user to confirm"]
gate -- "approve_transfer<br/>above 0.85" --> approve["approve the transfer"]
Étape 1 : déterminer l’intention de l’utilisateur
{
"intent": {
"type": "choice",
"instructions": "What action is the user requesting?",
"criteria": {
"check_balance": "Check the balance of an account",
"approve_transfer": "Approve the pending transfer request",
"other": "Something else"
}
}
}Étape 2 : routage conditionné par la confiance
action = response.answers["intent"]
# Below 0.6 confidence on any action, route to a human
if action.confidence < 0.6:
route_to_support_agent(account_id)
elif action.choice == "check_balance":
# Low stakes. 0.6 confidence is sufficient.
show_balance(account_id)
elif action.choice == "approve_transfer":
if action.confidence > 0.85:
# High stakes, but high confidence. Safe to act automatically.
approve_transfer(account_id)
else:
# High stakes, moderate confidence. Verify intent first.
ask_user_to_confirm("Just to confirm: you would like to approve this transfer, is that correct?")
else:
route_to_support_agent(account_id)
Le plancher de 0.6 intercepte tout ce dont le modèle est réellement incertain. Au-dessus de ce plancher, chaque type d’action a son propre seuil, fondé sur les conséquences d’une classification erronée. Vérifier un solde à 0.6 est acceptable, car le pire cas est que l’utilisateur doive écouter l’énoncé du solde. Mais approuver un virement exige une confiance très élevée (>0.85), sinon le système doit demander confirmation à l’utilisateur.
Vois Confiance pour plus de détails sur la façon de raisonner sur la confiance dans tes systèmes.