Human-in-the-Loop через middleware: README.md
This commit is contained in:
@@ -0,0 +1,78 @@
|
|||||||
|
# Human‑in‑the‑Loop (HIL) через middleware на FastMCP
|
||||||
|
|
||||||
|
## Описание проекта
|
||||||
|
Проект демонстрирует принцип **Human‑in‑the‑Loop** (человек в потоке выполнения) при помощи простого HTTP‑сервера, реализованного на **FastMCP**.
|
||||||
|
Сервер имеет один эндпоинт `/process`. Перед выполнением запроса к этому эндпоинту пользователь должен подтвердить действие через консольный ввод (`yes`/`no`). Это позволяет показать, как можно вставлять ручное вмешательство в автоматический процесс без изменения бизнес‑логики.
|
||||||
|
|
||||||
|
## Предварительные требования
|
||||||
|
- Python 3.10+
|
||||||
|
- `pip` (или `pipx`) для установки зависимостей
|
||||||
|
|
||||||
|
> **Важно**: В данном примере не требуется внешних сервисов, таких как Ollama или Qdrant. Всё работает локально.
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
```bash
|
||||||
|
# Клонируйте репозиторий
|
||||||
|
git clone https://github.com/your-username/hil-fastmcp.git
|
||||||
|
cd hil-fastmcp
|
||||||
|
|
||||||
|
# Создайте виртуальное окружение (необязательно, но рекомендуется)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
|
||||||
|
|
||||||
|
# Установите зависимости
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск сервера
|
||||||
|
```bash
|
||||||
|
# Запускаем сервер из файла solution.py
|
||||||
|
python solution.py
|
||||||
|
```
|
||||||
|
После запуска вы увидите сообщение:
|
||||||
|
```
|
||||||
|
FastMCP server is running on http://127.0.0.1:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
## Пример использования
|
||||||
|
|
||||||
|
### 1. Отправка запроса к `/process`
|
||||||
|
```bash
|
||||||
|
curl -X POST http://127.0.0.1:8000/process \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"task":"example"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
После отправки запроса сервер выведет в консоль:
|
||||||
|
```
|
||||||
|
Do you want to proceed with the request? (yes/no):
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Подтверждение действия
|
||||||
|
- Введите `yes` и нажмите **Enter** → запрос выполнится, и клиент получит ответ:
|
||||||
|
```json
|
||||||
|
{"message":"Task processed successfully","task":"example"}
|
||||||
|
```
|
||||||
|
- Введите `no` → сервер вернёт ошибку 403:
|
||||||
|
```json
|
||||||
|
{"detail":"Action was not confirmed by the user."}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Структура проекта
|
||||||
|
```
|
||||||
|
├── solution.py # Основной код сервера с HIL‑middleware
|
||||||
|
└── requirements.txt # Список зависимостей (FastMCP)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Как это работает
|
||||||
|
1. **Middleware** intercepts every request to `/process`.
|
||||||
|
2. Он выводит запрос в консоль и ждёт ввода пользователя.
|
||||||
|
3. Если пользователь вводит `yes`, middleware пропускает запрос дальше к обработчику.
|
||||||
|
4. В противном случае возвращается HTTP‑ошибка 403.
|
||||||
|
|
||||||
|
Таким образом, человек имеет контроль над каждым выполнением запроса без необходимости менять логику самого эндпоинта.
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
MIT © 2026
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user