# Tokens गिनना — Agent Loops, Stop Conditions और Token Budgets

Source: https://www.geekswithgeeks.com/hi/agent-loops/budget-counting

> Responses से usage पढ़ें और भेजने से पहले आकार का अनुमान लगाएँ।

## अंदाज़ा नहीं, माप

हर Claude API response में `usage` object होता है जिसमें `input_tokens` और `output_tokens` हैं; prompt caching के साथ वह cache बनाने और cache पढ़ने वाले tokens भी बताता है। अपने Budget को खिलाने के लिए इन्हें हर बारी जोड़ें। भेजने से पहले prompt जाँचने के लिए provider का token-counting endpoint उपयोग करें; मोटे अंदाज़े में अंग्रेज़ी text में लगभग 4 अक्षर प्रति token होते हैं, और हिंदी या कोड में अक्सर प्रति अक्षर ज़्यादा tokens लगते हैं।

## Budget कहाँ जाता है

Context window को system prompt, tools, इतिहास और reply बाँटते हैं। हर एक के लिए जगह सुरक्षित रखें।

![तीन हिस्से: स्थिर prompt, बढ़ता इतिहास, reply के लिए आरक्षित।](assets/figures/agent-loops/section-3-map.svg) — चित्र 3.1 — स्थिर prompt, बढ़ता इतिहास और reply के लिए आरक्षित जगह।

## Usage से budget पर शुल्क

`response` API का reply है। Input और output tokens अलग क़ीमतों पर बिल होते हैं, इसलिए उन्हें अलग रखें।

```python
u = response.usage
in_tokens, out_tokens = u.input_tokens, u.output_tokens
budget.charge(in_tokens + out_tokens)
metrics["input"] += in_tokens
metrics["output"] += out_tokens
```

## मोटा आकार अनुमान

प्रति token 4 अक्षर का त्वरित अनुमान guard rails के लिए ठीक है, बिलिंग के लिए नहीं। 1,200 अक्षर लगभग 300 tokens होते हैं।

```python
def rough_tokens(text: str) -> int:
    return len(text) // 4

print(rough_tokens("hello world " * 100))
```

Output:

```
300
```

**Quiz:** किसी call ने ठीक कितने tokens उपयोग किए, यह कहाँ मिलता है?

- [x] Response का usage object
- [ ] Prompt की अक्षर-लंबाई
- [ ] Model का नाम
- [ ] HTTP status code

*Answer:* Response का usage object. API हर response के लिए सटीक input और output token गिनती बताता है।
