Human-in-the-Loop Architecture : Quand un humain valide les décisions de l’agent

Une couche d architecture gouvernee qui bascule les actions risqueees vers une approbation humaine avant execution reelle.
Sur cette page
  1. Idee en 30 secondes
  2. Probleme
  3. Solution
  4. Comment fonctionne Human-in-the-Loop Architecture
  5. En code, cela ressemble a ceci
  6. Ce que cela donne a l execution
  7. Quand cela convient - et quand non
  8. Convient
  9. Ne convient pas
  10. Problemes et echecs typiques
  11. Comment cela se combine avec d autres patterns
  12. Difference avec Supervisor Agent
  13. En bref
  14. FAQ
  15. Et Ensuite

Idee en 30 secondes

Human-in-the-Loop Architecture est un schema gouverne ou le systeme implique un humain avant d executer une action risquee.

L agent peut proposer une action, mais la decision finale pour les etapes critiques est prise par un humain: approve, reject ou revise.

Ce n est pas une gestion manuelle de chaque etape. Un humain intervient seulement la ou le risque est vraiment eleve.

Quand c est utile: quand les actions de l agent peuvent changer l etat, depenser de l argent, toucher des donnees sensibles ou creer un risque juridique.

Le LLM ne doit pas executer seul des side effects critiques (changements d etat). Il propose seulement une action, et le systeme la fait passer dans un processus d approbation controle.


Probleme

Sans Human-in-the-Loop, le systeme tombe souvent dans l un des deux extremes:

  • soit l agent agit avec trop d autonomie;
  • soit l equipe verifie presque tout manuellement et perd en vitesse.

Echecs typiques sans couche HITL claire:

  • une action risquee est executee sans approbation;
  • on ne voit pas qui a approuve l action ni pourquoi;
  • il est difficile de revenir en arriere ou d expliquer les consequences d une erreur;
  • le processus d escalade differe selon les equipes et devient chaotique.

En production, cela se transforme en incidents, releases lents ou audit faible.

Solution

Ajouter Human-in-the-Loop Architecture comme frontiere d approbation explicite (approval boundary) entre la decision de l agent et l execution reelle de l action.

Cette couche definit:

  • quelles actions passent sans approbation;
  • quelles actions exigent une confirmation humaine;
  • comment traiter approve, reject, revise et timeout.

Analogie: comme la double signature dans les operations financieres.

Le systeme peut preparer un paiement, mais un montant eleve exige la confirmation d une personne responsable.

Human-in-the-Loop fonctionne de la meme facon: les etapes importantes ne sont pas executees automatiquement.

Comment fonctionne Human-in-the-Loop Architecture

Human-in-the-Loop Architecture est une couche gouvernee entre Agent Runtime et l execution des actions, qui bascule les etapes critiques vers une approbation humaine.

Diagram
Description du flux complet: Detect → Escalate → Review → Enforce → Resume

Detect
Runtime ou la couche policy determine que l action est risquee et demande une approbation.

Escalate
Le systeme cree une demande d approbation: ce que l agent veut faire, pourquoi, quels risques existent et dans quel contexte.

Review
Un humain prend une decision: approve, reject ou revise (approuver avec modifications).

Enforce
Apres cette decision, le systeme execute l action via Tool Execution Layer, ou renvoie reject/revise a Runtime.

Resume
Runtime poursuit la boucle avec le resultat d approbation et enregistre la raison dans l audit.

Ce cycle permet de conserver la vitesse d automatisation et le controle sur les actions critiques.

En code, cela ressemble a ceci

PYTHON
class HumanInTheLoopArchitecture:
    def __init__(self, policy, approval_queue, tool_execution):
        self.policy = policy
        self.approval_queue = approval_queue
        self.tool_execution = tool_execution

    def execute_action(self, action, context):
        decision = self.policy.check(action=action, context=context)
        mode = decision.get("mode")

        if mode == "allow":
            return self.tool_execution.execute(action=action, context=context)

        if mode == "require_approval":
            ticket_id = self.approval_queue.create(
                action=action,
                context=context,
                reason_code=decision.get("reason_code", "approval_required"),
            )

            # Simplified synchronous example for illustration.
            review = self.approval_queue.wait(ticket_id=ticket_id, timeout_s=300)
            if review is None:
                return {"ok": False, "reason_code": "approval_timeout"}

            status = review.get("status")
            if status == "approved":
                approved_action = review.get("action_override", action)
                return self.tool_execution.execute(action=approved_action, context=context)

            if status == "revise":
                return {
                    "ok": False,
                    "reason_code": "approval_revision_required",
                    "feedback": review.get("feedback", ""),
                }

            return {"ok": False, "reason_code": "approval_rejected"}

        return {"ok": False, "reason_code": decision.get("reason_code", "policy_denied")}

Dans cet exemple, wait(..., timeout_s=300) est montre pour clarifier.
En production, HITL fonctionne souvent en asynchrone: le systeme cree un approval ticket, termine le run courant avec le statut pending_approval, puis reprend apres la decision humaine.

Ce que cela donne a l execution

TEXT
Demande: "Exporte la base clients vers un CRM externe et envoie un email a tous les contacts"

Step 1
Agent Runtime: forme action -> export_customers + send_campaign_email
HITL Gate: classify -> require_approval (high_risk_data_export)

Step 2
Le systeme cree un approval ticket avec contexte et raison
Human: revise -> autoriser seulement le segment "active_customers", sans envoi massif

Step 3
Tool Execution Layer: execute seulement l action approuvee
Runtime: renvoie resultat + reason_code dans la trace

Human-in-the-Loop ne bloque pas completement l automatisation. Il ajoute du controle aux points de risque reel.

Quand cela convient - et quand non

Human-in-the-Loop Architecture est utile la ou le cout d erreur est eleve et ou un humain responsable est requis sur les etapes critiques.

Convient

SituationPourquoi Human-in-the-Loop Architecture convient
Il y a des actions irreversibles ou couteuses (suppression, debit, export)Le systeme n execute pas une etape critique tant qu un humain ne confirme pas la decision.
La compliance et un audit responsable des decisions sont requisIl y a une trace claire: qui a approuve, quoi, avec quelle raison et quel resultat.
Il faut donner de l autonomie a l agent, mais dans des gates de risqueLes etapes a faible risque sont automatisees, celles a haut risque passent par un humain.

Ne convient pas

SituationPourquoi Human-in-the-Loop Architecture ne convient pas
Scenario one-shot read-only sans changement d etat et sans risque eleveUn gate d approbation ajoute latence et complexite sans valeur pratique.
Le systeme doit repondre en secondes et ne peut pas attendre un humainL approbation humaine asynchrone peut violer les exigences de temps de reponse.

Dans ces cas, des policy-gates sans approbation manuelle suffisent souvent:

PYTHON
decision = policy.check(action, context)
if decision["mode"] == "allow":
    execute(action)

Problemes et echecs typiques

ProblemeCe qui se passeComment prevenir
File d approbationsLa file d approbations grossit et les runs restent bloquesRegles risk-tier, SLA de revue, file de priorite et processus fallback
Approbation aveugleLe relecteur approuve des actions sans verification reellereason_code obligatoire, checklist courte et post-audit selectif
Approval fatigueLes relecteurs cliquent approve de facon mecanique a cause d un trop grand volume de demandesMeilleur risk-tiering, batching des cas low-risk et quality thresholds avant escalation
Contexte incomplet dans la demandeL humain ne voit pas les risques et prend une decision aleatoireapproval payload standardise: actor, action, resource, risk, budget, diff
Blocage apres timeoutLe systeme attend trop longtemps une approbationTimeout explicite + action par defaut: deny ou safe_fallback
Decisions incoherentes entre differents relecteursLes memes cas sont traites differemmentPlaybook, modeles de decision et calibration des politiques basee sur les logs

Une couche HITL stable demande plus qu un bouton "Approve"; elle demande une discipline operationnelle claire.

Comment cela se combine avec d autres patterns

Human-in-the-Loop Architecture fonctionne comme une couche de controle gouvernee au-dessus des mecanismes d execution de base.

  • Agent Runtime - Runtime pilote la boucle, et HITL decide quelles etapes demandent un humain.
  • Tool Execution Layer - apres approbation, l action est executee via un tool gateway controle.
  • Policy Boundaries - policy rules definissent quand require_approval est active.
  • Hybrid Workflow Agent - HITL est souvent integre aux etapes de commit workflow pour haut risque.
  • Orchestration Topologies - dans les systemes multi-agent, HITL s applique a certaines branches ou a l etape finale de merge.

Autrement dit:

  • Policy Boundaries definissent ce qui est risque
  • Human-in-the-Loop Architecture definit comment exactement un humain confirme ou bloque cette action

Difference avec Supervisor Agent

Supervisor AgentHuman-in-the-Loop Architecture
Qui prend la decision critiquePrincipalement le supervisor-agent lui-meme selon les reglesRelecteur humain aux points require_approval
NiveauPattern comportemental de l agentCouche de controle architecturale du processus d execution
Ce que cela apporteSupervision policy automatisee entre les etapesConfirmation humaine formelle pour les actions risquees
Risque typiqueErreur de modele dans l evaluation de policyRetard operationnel du a la file d approbations

Supervisor Agent et HITL peuvent etre combines: le supervisor fait un pre-filtrage, et un humain approuve seulement les etapes les plus risquees.

En bref

En bref

Human-in-the-Loop Architecture:

  • place un humain sur les points critiques d execution
  • bloque les actions dangereuses jusqu a approbation explicite
  • enregistre decision, raison et resultat dans l audit
  • equilibre automatisation et responsabilite en production

FAQ

Q: HITL signifie-t-il que chaque action doit etre approuvee par un humain?
A: Non. Approche pratique: seules les actions high-risk passent en approbation, le reste s execute automatiquement.

Q: Qu est-ce qui est mieux pour fail-safe: timeout = allow ou timeout = deny?
A: Pour les actions write risquees, on utilise en general fail-closed: timeout => deny ou fallback sur.

Q: En HITL, peut-on non seulement approuver mais aussi modifier une action?
A: Oui. Le mode revise permet a un humain d approuver une action avec des contraintes (montant, segment, scope).

Q: Quand vaut-il mieux choisir Supervisor Agent plutot que HITL?
A: Quand il faut un controle policy automatise rapide sans intervention manuelle a chaque etape risquee.

Et Ensuite

Human-in-the-loop reduit le risque. L etape suivante est de voir comment cela se relie aux frontieres techniques du systeme:

⏱️ 10 min de lectureMis à jour 8 mars 2026Difficulté: ★★★
Intégré : contrôle en productionOnceOnly
Ajoutez des garde-fous aux agents tool-calling
Livrez ce pattern avec de la gouvernance :
  • Budgets (steps / plafonds de coût)
  • Permissions outils (allowlist / blocklist)
  • Kill switch & arrêt incident
  • Idempotence & déduplication
  • Audit logs & traçabilité
Mention intégrée : OnceOnly est une couche de contrôle pour des systèmes d’agents en prod.
Auteur

Cette documentation est organisée et maintenue par des ingénieurs qui déploient des agents IA en production.

Le contenu est assisté par l’IA, avec une responsabilité éditoriale humaine quant à l’exactitude, la clarté et la pertinence en production.

Les patterns et recommandations s’appuient sur des post-mortems, des modes de défaillance et des incidents opérationnels dans des systèmes déployés, notamment lors du développement et de l’exploitation d’une infrastructure de gouvernance pour les agents chez OnceOnly.