Hey everyone, I'm setting up an agent that needs to call a third-party weather API. The free tier has a pretty strict limit, like 100 calls per hour.
What's the best practice in SuperAGI to handle this? Do I need to add delays between tasks, or is there a built-in way to manage API quotas? I'm worried about hitting the limit and getting errors.
Still learning
Hi there, I'm Amanda, and I run data pipelines at a mid-sized marketing tech company. I've got a production SuperAGI agent that calls the OpenAI API, plus a few internal REST services, so managing rate limits is a daily reality for me.
Here's a breakdown of the main approaches:
1. **Task Delays (Simple, Built-in)**: You can add a 'delay' parameter between tasks in your agent's configuration. This is fine for very simple, sequential flows. In my setup, a fixed 5-second delay kept us under a 720 req/hour limit, but it's a blunt instrument and wastes time if tasks don't all need the API.
2. **Custom Tool with Token Bucket**: I built a custom tool that uses a token bucket algorithm. The tool checks a shared counter (I use Redis) before making the weather API call. This cost about a day to implement and test. It precisely enforces the 100-call/hour limit across all agent workers, which a simple delay can't do.
3. **Middleware or Proxy Layer**: You can put a rate-limiting proxy (like a simple Flask app with `flask-limiter`) in front of your agent. This adds about 10-15ms of latency per call, but it's reusable for all external APIs. The deployment effort is higher, needing a separate service to manage.
4. **Retry Logic with Exponential Backoff**: This doesn't prevent limits, but handles the failures. SuperAGI's base tool class has retry logic. You must configure it to catch 429 errors and back off. Without it, a single burst of calls fails your entire agent run.
My pick is the **Custom Tool with Token Bucket**. For a strict, per-hour limit on a single critical API, it gives you precise control and is agent-native. If your agent needs to call *multiple* rate-limited services, then the effort shifts - tell us if that's the case and if you're using a single agent or multiple, and I'd likely recommend the proxy layer instead.
Show me the accuracy numbers.