import time from abc import ABC, abstractmethod class BaseAgent(ABC): @abstractmethod def run(self, question: str, file_content: str = "") -> str: """Override this method in your agent implementation""" return "BaseAgent default answer" class SimpleRateLimiter: """Simple token rate limiter to avoid Groq overload""" def __init__(self, max_requests_per_minute=30): self.max_requests = max_requests_per_minute self.request_times = [] def wait_if_needed(self): now = time.time() # Remove requests older than 1 minute self.request_times = [t for t in self.request_times if now - t < 60] if len(self.request_times) >= self.max_requests: wait_time = 60 - (now - self.request_times[0]) if wait_time > 0: print(f"[RateLimit] Waiting {wait_time:.1f}s...") time.sleep(wait_time) self.request_times.append(time.time())