| import sys |
| from utils.logger import get_logger |
|
|
| logger = get_logger("sail.chat") |
|
|
| class ChatInterface: |
| def __init__(self, engine, settings): |
| self.engine = engine |
| self.settings = settings |
| self.history = [] |
|
|
| def run(self): |
| print("\n" + "="*60) |
| print(" SAIL v2 Interactive Chat") |
| print(" Type '/exit' to quit, '/help' for commands") |
| print("="*60 + "\n") |
|
|
| while True: |
| try: |
| user_input = input("USER > ").strip() |
| if not user_input: |
| continue |
| |
| if user_input.lower() == "/exit": |
| break |
| |
| if user_input.lower() == "/help": |
| print("\nCommands:") |
| print(" /exit - Quit") |
| print(" /clear - Clear history") |
| print(" /vram - Show VRAM usage\n") |
| continue |
| |
| if user_input.lower() == "/clear": |
| self.history = [] |
| print(" History cleared.") |
| continue |
|
|
| if user_input.lower() == "/vram": |
| print(f" VRAM: {self.engine.vram_usage()}") |
| continue |
|
|
| result = self.engine.generate(user_input, history=self.history) |
| print(f"\nSAIL [{result['expert_used']}] > {result['response']}\n") |
| |
| self.history.append({"user": user_input, "assistant": result['response']}) |
| if len(self.history) > self.settings.max_history_turns: |
| self.history.pop(0) |
|
|
| except KeyboardInterrupt: |
| break |
| except Exception as e: |
| logger.error(f"Chat error: {e}") |
| print(f" Error: {e}") |
|
|
| print("\nGoodbye!") |
|
|