Files

78 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HumanintheLoop (HIL) через middleware на FastMCP
## Описание проекта
Проект демонстрирует принцип **HumanintheLoop** (человек в потоке выполнения) при помощи простого 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
---