Spaces:
Sleeping
Sleeping
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): | |
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 user intent and correctly routes the query with all | |
necessary context (file_context, chat_history, etc.) to the | |
correct specialist agent. | |
""" | |
query_lower = query.lower() | |
# 1. Viva Agent (High priority) | |
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 | |
if any(cmd in query_lower for cmd in ["drug", "medicine", "medication", "side effect", "dosage"]): | |
return self.drug_info_agent.process_query(query, file_context, chat_history) | |
# 5. Default to Academic Agent | |
return self.academic_agent.process_query(query, file_context, chat_history) |