sharktide's picture
download
raw
1.47 kB
from __future__ import annotations
from typing import Any, Dict, Optional
from shield.decision.scoring import decision_from_score
from shield.models.decisions import DECISION_ORDER
def choose_stronger_decision(first: str, second: str) -> str:
if DECISION_ORDER.get(second, 0) > DECISION_ORDER.get(first, 0):
return second
return first
def build_decision(
aggregate: Dict[str, Any],
llm_result: Optional[Dict[str, Any]] = None,
) -> Dict[str, Any]:
risk_score = int(aggregate.get("risk_score", 0))
confidence = float(aggregate.get("confidence", 0.0))
decision = decision_from_score(risk_score)
reasons = list(aggregate.get("reasons", []))
if llm_result:
llm_score = int(llm_result.get("risk_score", 0))
risk_score = max(risk_score, llm_score)
confidence = max(confidence, float(llm_result.get("confidence", 0.0)))
decision = choose_stronger_decision(decision_from_score(risk_score), str(llm_result.get("decision", decision)))
for reason in llm_result.get("reasons", []):
if isinstance(reason, str) and reason not in reasons:
reasons.append(reason)
else:
decision = decision_from_score(risk_score)
return {
"risk_score": max(0, min(100, risk_score)),
"confidence": round(max(0.0, min(1.0, confidence)), 2),
"decision": decision,
"recommended_action": decision,
"reasons": reasons[:12],
}

Xet Storage Details

Size:
1.47 kB
·
Xet hash:
ec5b4f599b8a50428c4d4ddf70274a633db7107bf1d83e7c11a455ff4ef1588a

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.