Spaces:
Running
Running
| """Graph safety agent.""" | |
| from __future__ import annotations | |
| from app.common.types import PolyGuardState | |
| from app.knowledge.ddi_knowledge import top_risky_pairs | |
| from app.models.graph.infer import infer_graph_risk | |
| class GraphSafetyAgent: | |
| name = "GraphSafetyAgent" | |
| def run(self, state: PolyGuardState) -> dict: | |
| drugs = [m.drug for m in state.patient.medications] | |
| risk = infer_graph_risk(drugs) | |
| top_pairs = top_risky_pairs(drugs) | |
| triples = [] | |
| if len(drugs) >= 3: | |
| triples = [ | |
| [drugs[i], drugs[i + 1], drugs[i + 2]] | |
| for i in range(min(2, len(drugs) - 2)) | |
| ] | |
| return { | |
| **risk, | |
| "top_dangerous_pairs": top_pairs[:5], | |
| "top_dangerous_triples": triples, | |
| "mechanism_tags": list(risk.get("side_effect_probs", {}).keys())[:5], | |
| } | |