Human-in-the-loop (validation humaine)

IA / LLM 🟡 Mid

Définition

Point d'arrêt où l'agent suspend son exécution et attend une décision humaine : approuver une action irréversible, corriger un plan, fournir une information. Dans LangGraph, interrupt() met le graphe en pause, l'état est sauvé par le checkpointer, et Command({ résume }) reprend sur le même thread_id. Dans Claude Code, ce sont les demandes de permission avant chaque commande sensible.

Analogie

Le bon de commande qu'un stagiaire doit faire signer avant de passer un achat au-dessus de 500 €.

Exemple de code

import { interrupt, Command } from '@langchain/langgraph';

const refund = async (state: State) => {
  const decision = interrupt({                    // pause : l'état est persisté
    question: `Rembourser ${state.amount} € à ${state.customer} ?`,
  });
  if (decision !== 'approve') return { status: 'refused' };
  await payments.refund(state.orderId, state.amount);
  return { status: 'refunded' };
};

// 1er appel : s'arrête et renvoie __interrupt__
const r1 = await graph.invoke({ orderId }, { configurable: { thread_id: orderId } });
// Plus tard, après clic d'un humain : reprise sur le MÊME thread_id
const r2 = await graph.invoke(new Command({ resume: 'approve' }), { configurable: { thread_id: orderId } });

Cas d'usage

Paiements, envois d'e-mails, suppressions, déploiements : toute action coûteuse à annuler.

Anti-pattern

Demander confirmation pour tout, y compris les lectures : l'humain finit par tout valider sans regarder.
#ia#agents#securite#interview

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre