Konfidenz-gesteuertes Routing
Nutze Konfidenz als zweite Achse. Die Antwort sagt dir, was; die Konfidenz sagt dir, ob du handeln solltest.
Eine von TypeSafes stärksten Funktionen ist die Konfidenz. Indem du bewusst festlegst, wie du Entscheidungen per Gating an die Konfidenz knüpfst, kannst du Systeme bauen, die zugleich zuverlässig und sicher sind.
Beispiel: Sprachbanking-Befehle
Stell dir vor, du baust eine Sprachbanking-Schnittstelle, mit der der Nutzer verbal mit seinem Konto interagieren kann. Während du bei der Interpretation der Nutzerabsicht immer eine vernünftige Konfidenz willst, sind manche Aktionen riskanter als andere und verlangen daher einen höheren Konfidenz-Schwellenwert.
%%{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"]
Schritt 1: Bestimme die Absicht des Nutzers
{
"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"
}
}
}Schritt 2: Konfidenz-gesteuertes Routing
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)
Der Boden von 0.6 fängt alles ab, bei dem das Modell wirklich unsicher ist. Oberhalb dieses Bodens hat jeder Aktionstyp seinen eigenen Schwellenwert, basierend auf den Folgen, wenn man aufgrund einer falschen Klassifizierung handelt. Einen Kontostand bei 0.6 abzufragen ist in Ordnung, denn der schlimmste Fall ist, dass der Nutzer die vorgelesene Kontostandsausgabe anhören muss. Das Genehmigen einer Überweisung erfordert jedoch eine sehr hohe Konfidenz (>0.85), sonst sollte das System den Nutzer um Bestätigung bitten.
Siehe Konfidenz für weitere Details dazu, wie du über Konfidenz in deinen Systemen nachdenken solltest.