Que fait langgraph-interaction-humaine ?
À INVOQUER cette compétence lors de la mise en œuvre de schémas d'interaction humaine (Human-in-the-Loop), de pauses pour approbation, ou de gestion d'erreurs dans LangGraph. Couvre interrupt(), Command(resume=...), les flux d'approbation/validation, et la stratégie de gestion d'erreurs à 4 niveaux.
Mécanismes d'interruption
Utilisez interrupt() pour suspendre le graphe et attendre une saisie humaine :
from langgraph.types import interrupt
def human_review(state):
# Interrompt en attendant l'approbation
decision = interrupt({
"question": "Approuvez-vous cette opération ?",
"operation": state["pending_action"]
})
return {"approved": decision == "oui"}
Reprise avec Command
Utilisez Command(resume=...) pour reprendre un graphe interrompu avec la saisie humaine :
from langgraph.types import Command
# Dans le processus externe
thread.execute(thread_id, Command(resume="oui"))
Stratégie de gestion d'erreurs à 4 niveaux
- Reprise avec nouvelle tentative : Relancez le nœud en cas d'erreur transitoire (ex. timeout API).
- Remplacement de nœud : Fournissez une implémentation alternative via
Command(resume={"action": "use_fallback"}). - Retour à un point de contrôle : Revenez à un état antérieur du graphe pour corriger la saisie.
- Terminaison propre : Arrêtez l'exécution avec un message d'erreur approprié.
Exemple de flux d'approbation
def validation_node(state):
if not state["approved"]:
result = interrupt({
"type": "approval",
"data": state["action_data"]
})
if result.get("status") != "approved":
return {"error": "Action rejetée"}
# Continuer
Notes importantes
- Les interruptions sont persistées dans le graphe ; elles survivent aux redémarrages.
- Utilisez
Commandavec un thread ID unique pour une reprise correcte. - Les schémas d'approbation doivent inclure des validations de saisie (ex.
pydantic) pour la robustesse.