Human-in-the-loop (interrupt / resume): README.md
This commit is contained in:
@@ -0,0 +1,103 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```text
|
||||||
|
langgraph>=0.1.0
|
||||||
|
questionary>=2.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Running the Example
|
||||||
|
|
||||||
|
The project has a single executable file: `main.py`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### What Happens?
|
||||||
|
|
||||||
|
1. The graph starts and immediately triggers an interrupt.
|
||||||
|
2. A console menu appears:
|
||||||
|
|
||||||
|
```
|
||||||
|
❓ What is your favorite programming language?
|
||||||
|
1) Python
|
||||||
|
2) JavaScript
|
||||||
|
3) Rust
|
||||||
|
4) Go
|
||||||
|
```
|
||||||
|
|
||||||
|
3. After you select an option, the workflow resumes and prints a confirmation message.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Example Output
|
||||||
|
|
||||||
|
```text
|
||||||
|
$ 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
|
||||||
|
|
||||||
|
- [LangGraph Documentation](https://langgraph.org/docs/)
|
||||||
|
- [questionary Docs](https://github.com/tmbo/questionary)
|
||||||
|
|
||||||
|
Happy hacking!
|
||||||
Reference in New Issue
Block a user