| """ |
| Main application file for ELAN-Bot. |
| """ |
|
|
| import os |
| import sys |
| import warnings |
|
|
| |
| os.environ["CUDA_VISIBLE_DEVICES"] = "" |
|
|
| |
| warnings.filterwarnings("ignore", category=UserWarning) |
| warnings.filterwarnings("ignore", category=FutureWarning) |
|
|
| from services import ElanAssistant |
| from ui import GradioInterface |
|
|
|
|
| class ElanBotApp: |
| """Main application class for ELAN-Bot.""" |
| |
| def __init__(self): |
| """Initialize the ELAN-Bot application.""" |
| self.assistant = ElanAssistant() |
| self.interface = GradioInterface(self.chat_handler) |
| |
| def chat_handler(self, message: str, history) -> str: |
| """ |
| Handle chat messages from Gradio interface. |
| |
| Args: |
| message: User's input message |
| history: Chat history (unused but required by Gradio) |
| |
| Returns: |
| str: Assistant's response |
| """ |
| try: |
| return self.assistant.process_message(message) |
| except Exception as e: |
| print(f"Error in chat handler: {e}") |
| return "I'm sorry, an error occurred while processing your request." |
| |
| def launch(self, share: bool = False, **kwargs): |
| """ |
| Launch the application. |
| |
| Args: |
| share: Whether to create a public link (False for HF Spaces) |
| **kwargs: Additional arguments for Gradio launch |
| """ |
| |
| self.interface.launch(share=share, **kwargs) |
|
|
|
|
| def main(): |
| """Main entry point for the application.""" |
| app = ElanBotApp() |
| app.launch() |
|
|
|
|
| if __name__ == "__main__": |
| main() |