File size: 997 Bytes
8b9245c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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