MyPharmaAI / agents /router_agent.py
Ajey95
Fix: chat_history addition
fc88e67
raw
history blame
2.27 kB
# agents/router_agent.py
import re
from .academic_agent import AcademicAgent
from .drug_info_agent import DrugInfoAgent
from .mnemonic_agent import MnemonicAgent
from .quiz_agent import QuizAgent
from .viva_agent import VivaAgent
class RouterAgent:
def __init__(self, gemini_model=None):
"""
Initializes the router and all specialist agents.
"""
self.academic_agent = AcademicAgent(gemini_model)
self.drug_info_agent = DrugInfoAgent(gemini_model)
self.mnemonic_agent = MnemonicAgent(gemini_model)
self.quiz_agent = QuizAgent(gemini_model)
self.viva_agent = VivaAgent(gemini_model)
def route_query(self, query: str, file_context: str, viva_state: dict, chat_history: list):
"""
Determines the user's intent and routes the query with all necessary
context to the correct specialist agent.
"""
query_lower = query.lower()
# --- Intent Detection Logic ---
# 1. Viva Agent (High priority for session commands)
if viva_state and viva_state.get('active'):
return self.viva_agent.process_query(query, file_context, viva_state)
if any(cmd in query_lower for cmd in ["viva", "interview", "start viva"]):
return self.viva_agent.process_query(query, file_context, viva_state)
# 2. Mnemonic Agent
if any(cmd in query_lower for cmd in ["mnemonic", "memory aid", "remember"]):
return self.mnemonic_agent.process_query(query, file_context, chat_history)
# 3. Quiz Agent
if any(cmd in query_lower for cmd in ["quiz", "test me", "flashcard"]):
return self.quiz_agent.process_query(query, file_context, chat_history)
# 4. Drug Info Agent
drug_keywords = ["drug", "medicine", "medication", "side effect", "dosage"]
specific_drugs = r'\b(paracetamol|ibuprofen|metformin|aspirin|amoxicillin)\b'
if any(cmd in query_lower for cmd in drug_keywords) or re.search(specific_drugs, query_lower):
return self.drug_info_agent.process_query(query, file_context, chat_history)
# 5. Default to Academic Agent for general queries
return self.academic_agent.process_query(query, file_context, chat_history)