JEV - Sortir de la boucle : la confiance entre dans le code

Une fois la confiance écrite dans la branche, la personne quitte le chemin obligatoire de chaque demande et ne traite que les quelques-unes dont la probabilité est encore étalée. Les actions à haut privilège s'exécutent encore dans le code, au-dessus d'un seuil.

JEV - Sortir de la boucle : la confiance entre dans le code

Co-auteur : folkbench.com (Folkbench est une plateforme vérifiable d’évaluation et de sélection pour les API d’IA, les services de modèles et les sites associés. Elle s’appuie sur les informations publiées sur le service, les prix, la disponibilité, la latence et les fenêtres de preuve pour aider les utilisateurs à comparer des voies et à en choisir une.)

Dix textes dans cette série :

Une personne au milieu de la boucle était un compromis : le modèle pouvait dire n'importe quoi, alors une personne se tenait devant chaque action à haut privilège. Laissez-la là assez longtemps et la personne devient une dette d'architecture. Le débit ne dépend plus de la bande passante. Il dépend de la présence de quelqu'un en poste. Jev renverse cela. La confiance s'écrit dans la branche. La personne descend du tronc vers le bord, et ne traite que le court tronçon où la distribution est encore étalée.

Pourquoi la personne a été tirée dedans

Un modèle de conversation est un continueur de texte. La forme de la sortie est instable, et une hallucination devient un incident. La finance, l'aiguillage et la conformité ont donc empilé deux couches de défense.

La couche d'analyse ne cesse de s'épaissir

Pour tirer du JSON valide d'un paragraphe, autour poussent Pydantic, les reprises, les listes noires de mots-clés et une seconde consigne. Un jugement devient : écrire la consigne, attendre la génération, rater l'analyse, redonner une consigne, réévaluer. La latence passe d'un appel à une boucle.

La file humaine devient le tronc

Quand la défense ne promet encore rien, le produit dit : accrochez ici une file humaine. Le système devient « le modèle rédige, la personne décide ».

  • Le plafond est la vitesse d'une personne et son poste, pas la machine.
  • La personne passe d'un système à l'autre et lit une prose non structurée. La fatigue elle-même cause des erreurs.
  • La puissance de calcul que vous avez achetée finit en machine à brouillons devant quelqu'un qui tape. C'est de la pseudo-automatisation.

Écrire la confiance dans la branche

On ne pouvait pas écrire le modèle tout droit dans un if, parce que « j'en suis sûr à 90 pour cent » était lui-même peu fiable et difficile à comparer. Ce que Jev rend est une probabilité sur une question fermée. Assez haute pour la politique, le code s'exécute. Étalée, elle va vers la file du bord.

request
  │
  ▼
Jev
  ├─ probability clears the threshold ─► code runs
  └─ probability does not             ─► a person at the edge

La probabilité est d'abord rassemblée

Il n'écrit pas le pourquoi. Il comprime le sens sur les classes ou les barreaux que vous avez définis, et il rend des nombres. Le côté gauche du mur absorbe le désordre du langage naturel. Le côté droit n'est plus qu'un nombre que l'on peut tester.

Le seuil est la route

Le seuil est une politique, pas un réglage d'usine du modèle. Une action à haut privilège, comme un remboursement, peut exiger que la probabilité de « oui » dépasse 0.99. Au-dessus, elle court comme une branche dure. Au-dessous, ne forcez pas l'automatisation. 0.99 ici est un exemple. Chaque métier écrit le sien.

La personne reste au bord

La personne ne se tient plus sur chaque nœud du tronc. La file humaine cesse d'être le chemin obligatoire et devient une interception d'exception. Elle porte la minorité floue, pas chaque demande.

Une demande, deux façons de l'écrire

D'abord générer, ensuite analyser

def handle_ticket_legacy(ticket_text: str):
    prompt = f"""
    Read the ticket and return JSON:
    {{"intent": "REFUND"|"COMPLAINT"|"OTHER", "urgency": "HIGH"|"LOW"}}
    Ticket: {ticket_text}
    """
    raw = chat_model.complete(prompt)
    try:
        data = json.loads(raw)
    except json.JSONDecodeError:
        return push_to_human(ticket_text, reason="parse")
    if data.get("intent") == "REFUND" and data.get("urgency") == "HIGH":
        # no trustworthy confidence, so the privileged action still will not run itself
        return push_to_human(ticket_text, data)
    return default_route(data)

L'analyse doit traiter les champs manquants et le format cassé. Même quand l'analyse réussit, vous ne savez pas à quel point elle était stable, et la branche à haut risque revient encore à une personne.

La distribution entre dans la branche

def handle_ticket_jev(ticket_text: str):
    refund = jev.noul(state=ticket_text, statement="this is a high-risk request that should enter refund review automatically")
    kind = jev.choice(
        state=ticket_text,
        options=["HIGH_RISK_REFUND", "NORMAL_INQUIRY", "SPAM"],
    )
    if kind.top == "HIGH_RISK_REFUND" and refund.p_yes >= 0.99:
        return execute_refund_review(ticket_text)
    if kind.top == "NORMAL_INQUIRY" and kind.probability >= 0.95:
        return auto_reply(ticket_text)
    return push_to_edge_human(ticket_text, confidence=kind.probability)

Cela n'accorde pas au modèle un droit de rembourser. Une action à haut privilège reste une fonction que le code appelle au-dessus d'un seuil. Les contrôles comptables à l'intérieur de cette fonction ne perdent pas une ligne. Le modèle ne fournit que la probabilité d'une question fermée.

Côte à côte

Dimension D'abord générer, personne dans la boucle Distribution écrite dans la branche
Flux de contrôle try-catch, reprise, garde-fous Un seuil et une branche ordinaire
Latence Une génération, souvent au-dessus d'une seconde ; attendre une personne, ce sont des heures Un appel fermé tourne autour de 70–500 ms ; une personne n'intervient qu'au bord
Où la personne se tient Souvent sur le tronc Seulement quand la probabilité ne suffit pas
État Un tronçon de texte au milieu Ça passe, ou ça ne passe pas

Le déterminisme revient à if

Le logiciel veut une branche que l'on peut tester. Après qu'un modèle de conversation entre dans le tronc, une phrase qui peut changer de forme se place devant if. Une question fermée laisse ce changement de forme à gauche du mur. Le côté droit reste if et else.

Une personne est le plus gros morceau de friction quand chaque demande attend un clic. Retirez-la du tronc, et le trafic qui franchit le seuil ne s'arrête plus pour confirmation. Quand la probabilité tombe, le système glisse vers le bord localement. Il ne bloque pas toute la chaîne.

Une personne au milieu de la boucle était le compromis payé tôt. Le câblage mûr n'utilise pas une personne comme une pièce. Il utilise une personne pour regarder les quelques cas encore étalés, et pour traiter les exceptions extrêmes. L'articulation possède l'inclinaison. La personne possède le tronçon qui n'a pas encore été écrit dans la politique.

Série