From 563cc603b8bd09975319b620641c16d1fec5f4d2 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Tue, 26 May 2026 08:56:11 +0000 Subject: [PATCH] =?UTF-8?q?Human-in-the-Loop=20=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=20middleware:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20solution.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solution.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/solution.py diff --git a/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/solution.py b/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/solution.py new file mode 100644 index 0000000..e4b7a7b --- /dev/null +++ b/solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/solution.py @@ -0,0 +1,55 @@ +# Human-in-the-Loop Middleware +# +# В этом примере реализован простой middleware, который позволяет +# вставлять человека в цикл обработки запросов. Он может быть использован +# в веб‑приложениях, чат‑ботах и других системах, где требуется +# ручная проверка или подтверждение. + +from typing import Callable, Any, Dict + +class HumanInTheLoopMiddleware: + """ + Middleware, который вызывает функцию‑обработчик для + каждого запроса. Если обработчик возвращает ``False`` + (или ``None``), запрос считается отклонённым и + передаётся в ручную обработку. + """ + + def __init__(self, handler: Callable[[Dict[str, Any]], bool]): + self.handler = handler + + def __call__(self, request: Dict[str, Any]) -> Dict[str, Any]: + # Предварительная проверка + approved = self.handler(request) + if not approved: + # Запрос отправляется в ручную обработку + # В реальном проекте здесь может быть вызов внешнего сервиса + # или отправка письма/сообщения в чат. + return { + "status": "pending", + "reason": "human review required", + "original": request, + } + # Если проверка пройдена – продолжаем обработку + return { + "status": "approved", + "original": request, + } + +# Пример простого обработчика, который проверяет наличие ключа "approve" +# в запросе. Если ключ отсутствует – запрос отклоняется. + +def simple_handler(request: Dict[str, Any]) -> bool: + return request.get("approve", False) + +# Пример использования +if __name__ == "__main__": + middleware = HumanInTheLoopMiddleware(simple_handler) + + # Запрос, который будет отклонён + req1 = {"id": 1, "data": "test"} + print(middleware(req1)) + + # Запрос, который будет одобрен + req2 = {"id": 2, "data": "test", "approve": True} + print(middleware(req2))