# Rate Limits, Concurrency और Timeouts — Claude API / OpenAI API की बुनियाद

Source: https://www.geekswithgeeks.com/hi/llm-apis/r-limits

> कोटा के भीतर रहें और प्रतीक्षा का समय सीमित करें।

## Requests और tokens पर कोटा

Providers **प्रति मिनट requests** और **प्रति मिनट tokens** सीमित करते हैं (मॉडल और account स्तर के अनुसार input और output के लिए अलग), और कभी-कभी समवर्ती requests भी। इन्हें पार करने पर **429** मिलता है। अच्छे clients: बचा कोटा देखने को **rate-limit headers** पढ़ते हैं, काम **queue** करते हैं और **concurrency** सीमित रखते हैं (1,000 requests एक साथ दागने की जगह worker pool), batch jobs को समय में फैलाते हैं, और ग़ैर-ज़रूरी बड़े काम के लिए provider का **batch** interface उपयोग करते हैं (आम तौर पर सस्ता)। हर call पर **timeouts** रखें (SDKs के configurable डिफ़ॉल्ट हैं, और generation वैध रूप से समय ले सकती है, ख़ासकर लंबे outputs के लिए), और user-सामने के अनुरोध के लिए समग्र **deadline** भी, ताकि धीमी calls ढेर होकर आपके threads खत्म न करें।

## Worker-pool पैटर्न (उदाहरण)

सीमित concurrency आपको rate limit के नीचे रखती है। यहाँ चलाया नहीं गया क्योंकि यह असली API बुलाएगा।

```python
from concurrent.futures import ThreadPoolExecutor

def summarise(doc):
    return client.messages.create(model=MODEL, max_tokens=200, timeout=30,
                                  messages=[{"role": "user", "content": f"Summarise: {doc}"}])

with ThreadPoolExecutor(max_workers=4) as pool:      # at most 4 requests in flight
    results = list(pool.map(summarise, documents))
```

## Rate-limit headers पढ़ें

बचे-कोटा headers आपको 429 मिलने से पहले धीमा होने देते हैं।

**Quiz:** सारे requests एक साथ भेजने की जगह concurrency क्यों सीमित करें?

- [ ] Tokens मुफ़्त करने के लिए
- [ ] क्योंकि HTTP इसे मना करता है
- [x] Rate limits के नीचे रहने और 429 errors की दीवार से बचने के लिए
- [ ] Keys से बचने के लिए

*Answer:* Rate limits के नीचे रहने और 429 errors की दीवार से बचने के लिए. सीमित समानांतरता कोटा मानती है और भार सहज रखती है।
