Spaces:
Sleeping
Sleeping
| """ | |
| MediGuard AI — Rewrite Query Node | |
| Reformulates the user query to improve retrieval recall. | |
| """ | |
| from __future__ import annotations | |
| import logging | |
| from typing import Any | |
| from src.services.agents.prompts import REWRITE_SYSTEM | |
| logger = logging.getLogger(__name__) | |
| def rewrite_query_node(state: dict, *, context: Any) -> dict: | |
| """Rewrite the original query for better retrieval.""" | |
| original = state.get("query", "") | |
| patient_context = state.get("patient_context", "") | |
| if context.tracer: | |
| context.tracer.trace(name="rewrite_query_node", metadata={"query": original}) | |
| user_msg = f"Original query: {original}" | |
| if patient_context: | |
| user_msg += f"\n\nPatient context: {patient_context}" | |
| try: | |
| response = context.llm.invoke( | |
| [ | |
| {"role": "system", "content": REWRITE_SYSTEM}, | |
| {"role": "user", "content": user_msg}, | |
| ] | |
| ) | |
| rewritten = response.content.strip() | |
| if not rewritten: | |
| rewritten = original | |
| except Exception as exc: | |
| logger.warning("Rewrite LLM failed: %s — keeping original query", exc) | |
| rewritten = original | |
| return {"rewritten_query": rewritten} | |