Spaces:
Running on Zero
Running on Zero
| import time | |
| from smolagents import CodeAgent, ActionStep | |
| class RateLimiter: | |
| """ | |
| Counts API calls and sleeps for a fixed number of seconds once a | |
| call threshold is reached, then resets the counter. | |
| """ | |
| def __init__(self, calls_per_wait: int = 10, seconds_to_wait: int = 60): | |
| self.calls_per_wait = calls_per_wait | |
| self.seconds_to_wait = seconds_to_wait | |
| self._call_count = 0 | |
| def increment_and_sleep_if_needed(self, memory_step: ActionStep, agent: CodeAgent): | |
| """ | |
| Increments the call counter, and once it reaches the configured | |
| threshold, sleeps for the configured duration and resets the counter. | |
| """ | |
| self._call_count += 1 | |
| if self._call_count >= self.calls_per_wait: | |
| print( | |
| f"Call count reached {self.calls_per_wait}, " | |
| f"sleeping for {self.seconds_to_wait} seconds" | |
| ) | |
| time.sleep(self.seconds_to_wait) | |
| self._call_count = 0 |