Brief IA

Building Human-In-The-Loop Agentic Workflows

💻 Code & Devvia Towards Data Science·Kenneth Leung·

Building Human-In-The-Loop Agentic Workflows

Building Human-In-The-Loop Agentic Workflows
En bref
1L'article explique comment établir des flux de travail agentiques avec intervention humaine dans LangGraph.
2L'approche HITL permet d'améliorer la précision des systèmes d'IA en intégrant le jugement humain.
3Ce modèle est essentiel pour des applications critiques où des décisions automatisées peuvent avoir des conséquences significatives.
💡Pourquoi c'est importantl'intégration de l'humain dans les processus d'IA augmente la fiabilité et l'acceptation des technologies d'IA dans divers secteurs.
📄
Article traduit en français

Construire des flux de travail agentiques avec intervention humaine

Introduction aux flux de travail agentiques avec intervention humaine

Les modèles de langage comme GPT-5.4 d'OpenAI et Opus 4.6 d'Anthropic ont démontré des capacités exceptionnelles dans l'exécution de tâches agentiques de longue durée.

En conséquence, nous observons une utilisation accrue des agents LLM dans des contextes individuels et d'entreprise pour accomplir des tâches complexes, telles que :

  • Réaliser des analyses financières
  • Construire des applications
  • Mener des recherches approfondies

Ces agents, qu'ils fassent partie d'une configuration hautement autonome ou d'un flux de travail prédéfini, peuvent exécuter des tâches en plusieurs étapes en utilisant des outils pour atteindre des objectifs avec une supervision humaine minimale.

Cependant, « minimale » ne signifie pas absence de supervision humaine. Au contraire, la révision humaine reste cruciale en raison de la nature probabiliste inhérente aux LLM et du potentiel d'erreurs. Ces erreurs peuvent se propager et se cumuler tout au long du flux de travail, surtout lorsque nous enchaînons de nombreux composants agentiques.

Exemple de flux de travail

Pour notre exemple, nous allons construire un flux de travail de génération de contenu pour les réseaux sociaux comme suit :

  1. L'utilisateur saisit un sujet d'intérêt (par exemple, « dernières nouvelles sur Anthropic »).
  2. Le nœud de recherche web utilise l'outil Tavily pour rechercher en ligne des articles correspondant au sujet.
  3. Le meilleur résultat de recherche est sélectionné et alimenté dans un LLM dans le nœud de création de contenu pour générer un post sur les réseaux sociaux.
  4. Dans le nœud de révision, il y a deux points de contrôle de révision humaine :
    • Présenter le contenu généré pour approbation, rejet ou modification par les humains.
    • Après approbation, le flux de travail déclenche l'outil API de Bluesky et demande une confirmation finale avant de le publier en ligne.

Concepts clés

Le mécanisme central derrière la configuration HITL dans LangGraph est le concept d'interruptions.

Les interruptions (en utilisant interrupt() et Command dans LangGraph) nous permettent de mettre en pause l'exécution du graphique à des points spécifiques, d'afficher certaines informations à l'humain et d'attendre leur input avant de reprendre le flux de travail.

  • Command est un objet polyvalent qui nous permet de mettre à jour l'état du graphique (update), de spécifier le nœud suivant à exécuter (goto), ou de capturer la valeur pour reprendre l'exécution du graphique (resume).

Voici à quoi ressemble le flux :

  1. Lorsqu'on atteint la fonction interrupt(), l'exécution se met en pause et la charge utile passée est affichée à l'utilisateur.
  2. Après la réponse de l'utilisateur, nous passons les valeurs de réponse au graphique pour reprendre l'exécution.
  3. La valeur de réponse dans resume est retournée dans la variable decision, que le nœud utilisera pour le reste de l'exécution du nœud et du flux de graphique suivant.

Les interruptions sont dynamiques et peuvent être placées n'importe où dans le code, contrairement aux points d'arrêt statiques, qui sont fixes avant ou après des nœuds spécifiques.

Code Walkthrough

Configuration initiale

Nous commençons par installer les dépendances requises et générer des clés API pour Bluesky, OpenAI, LangChain, LangGraph, et Tavily.

# requirements.txt
langchain-openai>=1.1.9
langgraph>=1.0.8
langgraph-checkpoint-sqlite>=3.0.3
tavily-python>=0.7.21
export OPENAI_API_KEY=your_openai_api_key
export TAVILY_API_KEY=your_tavily_api_key
export BLUESKY_HANDLE=yourname.bsky.social
export BLUESKY_APP_PASSWORD=your_bluesky_app_password

Définir l'état

Nous configurons l'état, qui est l'objet de données structuré partagé servant de mémoire centrale au graphique. Il inclut des champs qui capturent des informations clés, comme le contenu du post et le statut d'approbation.

Interruption au niveau du nœud

Nous avons mentionné précédemment que les interruptions peuvent se produire au niveau du nœud ou au sein des appels d'outils. Voyons comment cela fonctionne en configurant le nœud de révision humaine.

Le but du nœud de révision est de mettre en pause l'exécution et de présenter le contenu préliminaire à l'utilisateur pour révision.

Interruption au niveau de l'outil

Les interruptions peuvent également être définies au niveau de l'appel d'outil. Cela est démontré dans le prochain point de contrôle de révision humaine dans le nœud d'approbation avant que le contenu ne soit publié en ligne sur Bluesky.

Configuration du graphique avec un point de contrôle

Ensuite, nous connectons les nœuds dans un graphique pour compilation et introduisons un point de contrôle SQLite pour capturer des instantanés de l'état à chaque interruption.

Conclusion

Nous avons couvert les concepts d'interruptions, de Command, de points de contrôle et de threads. Pour une mise en œuvre complète, veuillez consulter le dépôt GitHub.

TwitterLinkedIn

Brief IA — Veille IA quotidienne

Toutes les innovations IA du monde entier, résumées et analysées automatiquement chaque jour.