mohammedff5642's picture
Update utils.py
5e40462 verified
Raw
History Blame Contribute Delete
991 Bytes
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())