test_bot / core /chat_interface.py
rohitchandra's picture
tract pdfs with git lfs
d6ea378
from abc import ABC, abstractmethod
from typing import Dict, List
class ChatInterface(ABC):
"""Abstract base class defining the core chat interface functionality.
This interface is designed to be flexible enough to support different
implementations across various assignments, from basic query handling
to complex information retrieval and tool usage.
"""
@abstractmethod
def initialize(self) -> None:
"""Initialize any models, tools, or components needed for chat processing.
This method should be called after instantiation to set up any necessary
components like language models, memory, tools, etc. This separation allows
for proper error handling during initialization and lazy loading of resources.
"""
pass
@abstractmethod
def process_message(self, message: str, chat_history: List[Dict[str, str]]) -> str:
"""Process a message and return a response.
This is the core method that all implementations must define. Different
implementations can handle the message processing in their own way, such as:
- Week 1: Query classification, basic tools, and memory
- Week 2: RAG, web search, and knowledge synthesis
- Week 3: Advanced tool calling and agentic behavior
Args:
message: The user's input message
chat_history: Optional list of previous chat messages, where each message
is a dict with 'role' (user/assistant) and 'content' keys
Returns:
str: The assistant's response
"""
pass