Удалить solutions/69a86305c46fd26feae6bcaa_Human-in-the-Loop_через_middleware/solution.py
This commit is contained in:
@@ -1,55 +0,0 @@
|
|||||||
# 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))
|
|
||||||
Reference in New Issue
Block a user