# 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))