Human‑in‑the‑Loop (HITL) with LangGraph
This repository contains a minimal example of how to implement a Human‑in‑the‑Loop interruption in a LangGraph workflow.
The graph consists of a single node that triggers an interrupt, presents a question to the user via a console menu (questionary), receives the answer, and then resumes execution.
📦 Project Overview
- Purpose: Demonstrate how to pause a LangGraph flow for human input and resume it afterward.
- Key Components:
main.py: The only script – builds the graph, defines the interrupt handler, and runs the workflow.- Uses LangGraph for state management and interruption handling.
- Uses questionary to display a CLI menu and capture user responses.
⚙️ Prerequisites
| Dependency | Minimum Version |
|---|---|
| Python | 3.10+ |
| LangGraph | Latest (pip install langgraph) |
| questionary | Latest (pip install questionary) |
Note
: No external services (Ollama, Qdrant, etc.) are required for this demo.
📥 Installation
# Clone the repository
git clone https://github.com/your-username/hitl-langgraph.git
cd hitl-langgraph
# Create a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate # On Windows: .\.venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
requirements.txt contains:
langgraph>=0.1.0
questionary>=2.0.0
🚀 Running the Example
The project has a single executable file: main.py.
python main.py
What Happens?
-
The graph starts and immediately triggers an interrupt.
-
A console menu appears:
❓ What is your favorite programming language? 1) Python 2) JavaScript 3) Rust 4) Go -
After you select an option, the workflow resumes and prints a confirmation message.
📄 Example Output
$ python main.py
❓ What is your favorite programming language?
1) Python
2) JavaScript
3) Rust
4) Go
> 1
You selected: Python
Workflow finished.
Feel free to modify the question or options in main.py to suit your own use case.
📚 Further Reading
Happy hacking!