Добавлен README.md

This commit is contained in:
2026-05-28 11:18:05 +00:00
parent 639e601929
commit a9bac27f6d
+118 -2
View File
@@ -1,3 +1,119 @@
# human-in-the-loop-cherez-middleware
# HumanintheLoop Middleware Demo
Решение: Human-in-the-Loop через middleware
This repository contains a minimal **LangChain** agent that demonstrates how to pause execution at every tool call and ask the user for approval or rejection before continuing.
The core of this behaviour is provided by `HumanInTheLoopMiddleware`, which automatically injects a confirmation step into the agents workflow.
> ⚠️ The example uses the opensource **Ollama** LLM backend.
> If you dont have Ollama installed, follow the instructions in the *Prerequisites* section.
---
## Table of Contents
- [Description](#description)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Running the Demo](#running-the-demo)
- [Example Interaction](#example-interaction)
---
## Description
`solution.py` implements a LangChain agent that:
1. **Creates** an LLM chain using `ChatOllama`.
2. **Wraps** it with a `MemorySaver` checkpoint for state persistence.
3. **Adds** the `HumanInTheLoopMiddleware`, which:
- Intercepts every tool call,
- Prints the intended action to the terminal (via `rich`),
- Prompts the user for `"approve"` or `"reject"`,
- Resumes execution based on the response.
This pattern is useful when you want a human operator to supervise or validate each step of an automated workflow, without having to manually interrupt the agent.
---
## Prerequisites
| Item | Version | Notes |
|------|---------|-------|
| Python | ≥ 3.10 | Tested with 3.11 |
| pip | | Standard package installer |
| **Ollama** | Latest | Install from https://ollama.ai/ and run `ollama serve` before starting the demo. |
| **OpenAIcompatible model** | e.g., `llama2:7b` | Pull via `ollama pull llama2:7b`. |
> **Tip:** If you prefer a different LLM, replace `ChatOllama` with any LangChain-compatible LLM (e.g., OpenAI, Anthropic).
---
## Installation
```bash
# 1. Clone the repo
git clone https://github.com/your-username/human-in-the-loop-demo.git
cd human-in-the-loop-demo
# 2. Create a virtual environment (optional but recommended)
python -m venv .venv
source .venv/bin/activate # On Windows: .\.venv\Scripts\activate
# 3. Install dependencies
pip install --upgrade pip
pip install langchain langgraph langchain-ollama rich
```
> **Note:**
> `langgraph` is required for the checkpointing and middleware support.
---
## Running the Demo
```bash
# Make sure Ollama server is running:
# ollama serve
# Run the agent script
python solution.py
```
You will be prompted to enter a question. The agent will then:
1. Generate a plan.
2. For each tool call, pause and display the intended action.
3. Await your `"approve"` or `"reject"` input before proceeding.
---
## Example Interaction
```text
$ python solution.py
Enter your question: What is the capital of France?
[Agent] Thinking...
[HumanInTheLoopMiddleware] Tool call planned: "search" with query "capital of France"
Approve? (yes/no): yes
[Agent] Executing tool...
Result: Paris
[Agent] Continuing...
Final answer: The capital of France is Paris.
```
If you type `no` instead of `yes`, the agent will skip that tool call and attempt to continue with its plan, potentially leading to a different outcome.
---
## Customization
- **Different tools** Add more tools via `@tool` decorators or by passing a list to `create_agent`.
- **Custom prompt** Modify the middlewares confirmation message by subclassing `HumanInTheLoopMiddleware`.
- **Persist state** The `MemorySaver` checkpoint can be swapped for a database-backed store if you need longterm persistence.
---
Happy experimenting! 🚀