diff --git a/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/README.md b/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/README.md new file mode 100644 index 0000000..0078197 --- /dev/null +++ b/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/README.md @@ -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 + +--- \ No newline at end of file