पाठ 9 / 25

Tokens गिनना

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 के लिए आरक्षित।
चित्र 3.1 — स्थिर prompt, बढ़ता इतिहास और reply के लिए आरक्षित जगह।

Usage से budget पर शुल्क

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

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 होते हैं।

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

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

Output:

300

त्वरित जाँच: किसी call ने ठीक कितने tokens उपयोग किए, यह कहाँ मिलता है?

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

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