Files
homework-solutions/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware

HumanintheLoop (HIL) через middleware на FastMCP

Описание проекта

Проект демонстрирует принцип HumanintheLoop (человек в потоке выполнения) при помощи простого HTTP‑сервера, реализованного на FastMCP.
Сервер имеет один эндпоинт /process. Перед выполнением запроса к этому эндпоинту пользователь должен подтвердить действие через консольный ввод (yes/no). Это позволяет показать, как можно вставлять ручное вмешательство в автоматический процесс без изменения бизнес‑логики.

Предварительные требования

  • Python 3.10+
  • pip (или pipx) для установки зависимостей

Важно: В данном примере не требуется внешних сервисов, таких как Ollama или Qdrant. Всё работает локально.

Установка

# Клонируйте репозиторий
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

Запуск сервера

# Запускаем сервер из файла solution.py
python solution.py

После запуска вы увидите сообщение:

FastMCP server is running on http://127.0.0.1:8000

Пример использования

1. Отправка запроса к /process

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 → запрос выполнится, и клиент получит ответ:
{"message":"Task processed successfully","task":"example"}
  • Введите no → сервер вернёт ошибку 403:
{"detail":"Action was not confirmed by the user."}

Структура проекта

├── solution.py          # Основной код сервера с HILmiddleware
└── requirements.txt     # Список зависимостей (FastMCP)

Как это работает

  1. Middleware intercepts every request to /process.
  2. Он выводит запрос в консоль и ждёт ввода пользователя.
  3. Если пользователь вводит yes, middleware пропускает запрос дальше к обработчику.
  4. В противном случае возвращается HTTP‑ошибка 403.

Таким образом, человек имеет контроль над каждым выполнением запроса без необходимости менять логику самого эндпоинта.

Лицензия

MIT © 2026