Buckets:

MaximoLopezChenlo's picture
download
raw
5.63 kB
"""
AgentState — Shared state schema for the OncoAgent LangGraph execution.
Design principles (inspired by Claude Code + Hermes Agent):
- Immutable input: ``clinical_text`` is never mutated.
- Additive outputs: each node writes to its own isolated keys.
- Deterministic routing: ``routing_decision`` and ``selected_tier``
are set by the Router node using structured logic, never free text.
- Per-patient memory: ``patient_id`` isolates session history.
"""
from typing import TypedDict, Annotated, List, Dict, Any, Optional
import operator
from langchain_core.messages import BaseMessage
from langgraph.graph.message import add_messages
class AgentState(TypedDict):
"""
Represents the state of the LangGraph execution for OncoAgent.
Sections are ordered by the pipeline stage that writes them.
Keys prefixed with ``#`` comments indicate which node owns each group.
"""
# ------------------------------------------------------------------ #
# 0. Session & Patient Context #
# ------------------------------------------------------------------ #
patient_id: str # Unique patient profile ID
session_id: str # Current session identifier
user_tier_override: Optional[int] # Manual tier override (1 or 2, None = auto)
messages: Annotated[List[BaseMessage], add_messages] # Chat history
# ------------------------------------------------------------------ #
# 1. Input (Immutable — set once at invocation) #
# ------------------------------------------------------------------ #
clinical_text: str
# ------------------------------------------------------------------ #
# 2. Router Node #
# ------------------------------------------------------------------ #
routing_decision: str # "simple" | "complex" | "insufficient"
selected_tier: int # 1 (Qwen 3.5 9B) or 2 (Qwen 3.6 27B)
complexity_score: float # 0.0–1.0 complexity estimate
# ------------------------------------------------------------------ #
# 3. Ingestion Node (PHI clean + entity extraction) #
# ------------------------------------------------------------------ #
extracted_entities: Dict[str, Any]
phi_detected: bool
# ------------------------------------------------------------------ #
# 4. Corrective RAG Node #
# ------------------------------------------------------------------ #
rag_context: List[str]
rag_sources: List[str]
graph_rag_context: List[str] # Clinical Knowledge Graph results
api_evidence_context: List[str] # CIViC / ClinicalTrials.gov results
rag_confidence: float # Mean cross-encoder score (0–1)
rag_retrieval_count: int # Results that passed the distance gate
rag_grading_pass_count: int # Documents graded RELEVANT by CRAG
rag_query_rewrites: int # Number of query rewrites performed
# ------------------------------------------------------------------ #
# 5. Specialist Node (Tier-adaptive reasoning) #
# ------------------------------------------------------------------ #
clinical_recommendation: str
reasoning_trace: str # Chain-of-thought breakdown
# ------------------------------------------------------------------ #
# 6. Critic Node (Reflexion loop) #
# ------------------------------------------------------------------ #
critic_verdict: str # "PASS" | "FAIL"
critic_feedback: str # Specific issues for specialist retry
critic_attempts: int # Current iteration count (max 2)
# ------------------------------------------------------------------ #
# 7. HITL Gate #
# ------------------------------------------------------------------ #
acuity_level: str # "low" | "medium" | "high"
hitl_required: bool # True if clinician approval needed
hitl_approved: bool # Set by clinician via UI interrupt
# ------------------------------------------------------------------ #
# 8. Formatter Node (final output) #
# ------------------------------------------------------------------ #
formatted_recommendation: str # Markdown-formatted for Gradio
confidence_report: Dict[str, Any] # Full metrics (tier, RAG, critic iters)
source_citations: List[str] # Formatted bibliography
# ------------------------------------------------------------------ #
# 9. Fallback Node #
# ------------------------------------------------------------------ #
fallback_reason: str # Why the system fell back to safe mode
# ------------------------------------------------------------------ #
# 10. Safety (legacy compat + validator output) #
# ------------------------------------------------------------------ #
safety_status: str
is_safe: bool
# ------------------------------------------------------------------ #
# 11. Error accumulator (append-only via operator.add) #
# ------------------------------------------------------------------ #
errors: Annotated[List[str], operator.add]

Xet Storage Details

Size:
5.63 kB
·
Xet hash:
11419038275feb625ae5731b2385dd5d7a74ae9ac3a4638fcf429fdb8d451173

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