File size: 800 Bytes
877add7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""Supervisor agent."""

from __future__ import annotations

from app.common.enums import DecisionMode
from app.common.types import PolyGuardState
from app.models.policy.uncertainty import estimate_uncertainty


class SupervisorAgent:
    name = "SupervisorAgent"

    def run(self, state: PolyGuardState, dosing_active: bool) -> dict:
        uncertainty = estimate_uncertainty(state)
        if uncertainty > 0.72:
            mode = DecisionMode.REVIEW
        elif state.sub_environment.value == "PRECISION_DOSING":
            mode = DecisionMode.DOSE_OPT
        elif dosing_active:
            mode = DecisionMode.DOSE_OPT
        else:
            mode = DecisionMode.REGIMEN_OPT
        return {"mode": mode.value, "uncertainty": uncertainty, "sub_environment": state.sub_environment.value}