# Write your Python code here

from abc import ABC, abstractmethod

# -----------------------------
# Base Agent
# -----------------------------
class Agent(ABC):
    @abstractmethod
        def process(self, query):
                pass


                # -----------------------------
                # Specialized Agents
                # -----------------------------
                class AdmissionAgent(Agent):
                    def process(self, query):
                            return "Admission Agent: Admission starts in June. Required documents are 10th, 12th mark sheets and ID proof."


                            class ExamAgent(Agent):
                                def process(self, query):
                                        return "Exam Agent: Semester exams begin in December. Exam timetable will be announced on the portal."


                                        class FeesAgent(Agent):
                                            def process(self, query):
                                                    return "Fees Agent: The annual tuition fee is ₹50,000. Fees can be paid online or at the accounts office."


                                                    class ScholarshipAgent(Agent):
                                                        def process(self, query):
                                                                return "Scholarship Agent: Scholarships are available based on merit and family income."


                                                                # -----------------------------
                                                                # Intent Classifier
                                                                # -----------------------------
                                                                class IntentClassifier:

                                                                    def classify(self, query):
                                                                            query = query.lower()

                                                                                    if any(word in query for word in
                                                                                                   ["admission", "admit", "apply", "eligibility"]):
                                                                                                               return "admission"

                                                                                                                       elif any(word in query for word in
                                                                                                                                        ["exam", "test", "result", "hall ticket"]):
                                                                                                                                                    return "exam"

                                                                                                                                                            elif any(word in query for word in
                                                                                                                                                                             ["fee", "fees", "payment", "tuition"]):
                                                                                                                                                                                         return "fees"

                                                                                                                                                                                                 elif any(word in query for word in
                                                                                                                                                                                                                  ["scholarship", "financial aid", "grant"]):
                                                                                                                                                                                                                              return "scholarship"

                                                                                                                                                                                                                                      else:
                                                                                                                                                                                                                                                  return "unknown"


                                                                                                                                                                                                                                                  # -----------------------------
                                                                                                                                                                                                                                                  # Response Agent
                                                                                                                                                                                                                                                  # -----------------------------
                                                                                                                                                                                                                                                  class ResponseAgent:

                                                                                                                                                                                                                                                      def __init__(self):
                                                                                                                                                                                                                                                              self.agents = {
                                                                                                                                                                                                                                                                          "admission": AdmissionAgent(),
                                                                                                                                                                                                                                                                                      "exam": ExamAgent(),
                                                                                                                                                                                                                                                                                                  "fees": FeesAgent(),
                                                                                                                                                                                                                                                                                                              "scholarship": ScholarshipAgent()
                                                                                                                                                                                                                                                                                                                      }

                                                                                                                                                                                                                                                                                                                          def respond(self, intent, query):

                                                                                                                                                                                                                                                                                                                                  if intent in self.agents:
                                                                                                                                                                                                                                                                                                                                              return self.agents[intent].process(query)

                                                                                                                                                                                                                                                                                                                                                      return "Sorry, I couldn't understand your request."


                                                                                                                                                                                                                                                                                                                                                      # -----------------------------
                                                                                                                                                                                                                                                                                                                                                      # Main AI Agent System
                                                                                                                                                                                                                                                                                                                                                      # -----------------------------
                                                                                                                                                                                                                                                                                                                                                      class CollegeAIAgent:

                                                                                                                                                                                                                                                                                                                                                          def __init__(self):
                                                                                                                                                                                                                                                                                                                                                                  self.classifier = IntentClassifier()
                                                                                                                                                                                                                                                                                                                                                                          self.response_agent = ResponseAgent()

                                                                                                                                                                                                                                                                                                                                                                              def chat(self, query):
                                                                                                                                                                                                                                                                                                                                                                                      intent = self.classifier.classify(query)
                                                                                                                                                                                                                                                                                                                                                                                              print(f"Detected Intent: {intent}")
                                                                                                                                                                                                                                                                                                                                                                                                      response = self.response_agent.respond(intent, query)
                                                                                                                                                                                                                                                                                                                                                                                                              return response


                                                                                                                                                                                                                                                                                                                                                                                                              # -----------------------------
                                                                                                                                                                                                                                                                                                                                                                                                              # Run Program
                                                                                                                                                                                                                                                                                                                                                                                                              # -----------------------------
                                                                                                                                                                                                                                                                                                                                                                                                              if __name__ == "__main__":

                                                                                                                                                                                                                                                                                                                                                                                                                  bot = CollegeAIAgent()

                                                                                                                                                                                                                                                                                                                                                                                                                      print("===== College AI Agent =====")
                                                                                                                                                                                                                                                                                                                                                                                                                          print("Type 'exit' to quit.\n")

                                                                                                                                                                                                                                                                                                                                                                                                                              while True:
                                                                                                                                                                                                                                                                                                                                                                                                                                      user_input = input("You: ")

                                                                                                                                                                                                                                                                                                                                                                                                                                              if user_input.lower() == "exit":
                                                                                                                                                                                                                                                                                                                                                                                                                                                          print("Bot: Thank you!")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      break

                                                                                                                                                                                                                                                                                                                                                                                                                                                                              reply = bot.chat(user_input)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      print("Bot:", reply)