टोकन, कॉन्टेक्स्ट विंडो और लागत
हर टर्न में पूरा इतिहास क्यों भेजा जाता है और इसकी लागत क्या है।
टोकन, कॉन्टेक्स्ट विंडो और लागत, CoddyKit पर Claude Architect का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Claude Architect सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Claude Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Claude की कोई स्मृति नहीं है
इस पाठ का सबसे महत्वपूर्ण विचार यह है: Claude एपीआई संवाद-चक्रों के बीच NO स्थिति रखता है।
मॉडल आपका पिछला संदेश याद नहीं रखता। हर एपीआई कॉल नए सिरे से शुरू होती है। फिर चैटबॉट को याद रखने वाला कैसे लगता है?
आप हर एक अनुरोध में पूरे वार्तालाप का इतिहास भेजते हैं। messages फ़ील्ड हर बार पूरी बातचीत, यानी आगे-पीछे के सभी संदेश, लेकर चलता है।
अनुरोध में क्या-क्या होता है
Claude एपीआई अनुरोध में कुछ प्रमुख फ़ील्ड होते हैं:
model— किस Claude मॉडल का उपयोग करना हैmax_tokens— उत्तर की लंबाई की सीमाsystem— सिस्टम प्रॉम्प्टmessages— हर संवाद-चक्र का FULL इतिहासtools/tool_choice— वैकल्पिक टूल विन्यास
ध्यान दें कि messages समय के साथ बढ़ता जाता है। संवाद-चक्र 1 में 1 संदेश भेजा जाता है। संवाद-चक्र 10 में पहले के सभी 19 संदेश और नया संदेश भेजा जाता है।
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="You are a support agent.",
messages=[
{"role": "user", "content": "My order is late."},
{"role": "assistant", "content": "I can help. What is your order ID?"},
{"role": "user", "content": "It's #4821."},
],
)टोकन क्या है
मॉडल अक्षरों या पूरे शब्दों को नहीं पढ़ते। वे टोकन पढ़ते हैं—टेक्स्ट के छोटे-छोटे खंड।
मोटे तौर पर, अंग्रेज़ी में एक टोकन लगभग 4 अक्षरों या लगभग 3/4 शब्द के बराबर होता है। "unhappiness" को "un", "happiness" में बाँटा जा सकता है। विराम-चिह्न और रिक्त स्थान भी गिने जाते हैं।
टोकन महत्वपूर्ण हैं क्योंकि आपको हर टोकन के लिए भुगतान करना पड़ता है और संदर्भ विंडो शब्दों में नहीं, टोकन में मापी जाती है।
इनपुट और आउटपुट टोकन
हर अनुरोध में टोकन की दो संख्याएँ होती हैं, जिनका बिल अलग-अलग तरीके से बनता है:
- इनपुट टोकन — आप जो कुछ भेजते हैं:
system+tools+messagesका पूरा इतिहास। - आउटपुट टोकन — मॉडल अपने उत्तर में जो उत्पन्न करता है।
आमतौर पर आउटपुट टोकन की प्रति टोकन लागत इनपुट टोकन से अधिक होती है। लेकिन क्योंकि हर संवाद-चक्र में पूरा इतिहास फिर भेजा जाता है, इसलिए लंबी बातचीत में इनपुट टोकन चुपचाप बहुत बढ़ जाते हैं।
संदर्भ विंडो
संदर्भ विंडो एक अनुरोध में मॉडल द्वारा संभाले जा सकने वाले टोकनों की अधिकतम संख्या है—इनपुट और आउटपुट दोनों को मिलाकर।
यदि आपका पूरा इतिहास और अनुरोधित max_tokens मिलकर विंडो की सीमा से अधिक हो जाएँ, तो अनुरोध विफल हो जाता है। विंडो एक कठोर सीमा है, सुझाव नहीं।
इसीलिए लंबे समय तक चलने वाली चैट और बड़े टूल आउटपुट अंततः सीमा तक पहुँच जाते हैं: बार-बार भेजा जाने वाला इतिहास लगातार सीमा की ओर बढ़ता रहता है।
इतिहास के साथ लागत बढ़ती है
क्योंकि हर संवाद-चक्र में पूरा इतिहास फिर भेजा जाता है, इसलिए लागत बातचीत के साथ रैखिक रूप से नहीं बढ़ती—वह उसकी लंबाई के वर्ग के लगभग अनुपात में बढ़ती है।
संवाद-चक्र 1 में कुछ टोकन का बिल बनता है। संवाद-चक्र 20 में पहले के सभी 19 संवाद-चक्र फिर से बिल किए जाते हैं, साथ में नया संवाद-चक्र भी। 10 संदेशों वाली चैट में उसके पूरे जीवनकाल में शुरुआती संदेशों का 10 बार फिर बिल बनता है।
आर्किटेक्ट के लिए इसका अर्थ है: जो एजेंट अपने इतिहास को कभी सीमित नहीं करता और बहुत अधिक बातचीत करता है, वह महँगा एजेंट है।
# Rough illustration of resent input growing each turn
history = []
for turn in range(1, 6):
history.append({"role": "user", "content": user_msg(turn)})
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=512,
messages=history, # ENTIRE history resent every turn
)
history.append({"role": "assistant", "content": resp.content})
print("turn", turn, "input_tokens", resp.usage.input_tokens)अनुकूलन से पहले मापें
हर प्रतिक्रिया में एक usage ऑब्जेक्ट होता है, जो input_tokens और output_tokens की जानकारी देता है। लागत के लिए यही आपका वास्तविक आधार है।
भेजने से पहले भी आप count_tokens कर सकते हैं, ताकि लागत का अनुमान लगा सकें और जाँच सकें कि आप विंडो की सीमा के भीतर हैं—पूरी जनरेशन के लिए भुगतान किए बिना।
व्यावहारिक नियम: उत्पादन परिवेश में टोकन उपयोग का मापन जोड़ें। कुल लागत के आँकड़े यह छिपा देते हैं कि कौन-सी बातचीत या टूल कॉल महँगी हैं।
count = client.messages.count_tokens(
model="claude-sonnet-4-5",
system="You are a support agent.",
messages=history,
)
print("input tokens before send:", count.input_tokens)
resp = client.messages.create(model="claude-sonnet-4-5", max_tokens=512, messages=history)
print("billed:", resp.usage.input_tokens, resp.usage.output_tokens)टूल आउटपुट संदर्भ को फुला देता है
एजेंट चक्रों में टूल के परिणाम इतिहास में जोड़ दिए जाते हैं और उसके बाद के हर संवाद-चक्र में फिर भेजे जाते हैं। यदि कोई विस्तृत टूल 5,000 टोकन वाला JSON डेटा लौटाता है, तो बातचीत के बाकी समय भी उसकी लागत जुड़ती रहती है।
समाधान है कि जोड़ने से पहले विस्तृत टूल आउटपुट को प्रासंगिक फ़ील्ड तक सीमित करें। जब मॉडल को केवल तीन फ़ील्ड चाहिए हों, तब पूरे एपीआई डेटा को संदर्भ में न रखें।
raw = lookup_order(order_id) # huge JSON
# Trim to what the model actually needs
tool_result = {
"order_id": raw["id"],
"status": raw["status"],
"eta": raw["estimated_delivery"],
}
history.append({
"role": "user",
"content": [{"type": "tool_result", "tool_use_id": tu_id,
"content": json.dumps(tool_result)}],
})बजट के भीतर रहने के लिए सारांश बनाएँ
लंबी बातचीत के लिए, इतिहास को छोटा रखने और विंडो की सीमा के भीतर रखने हेतु आप पुराने टर्न को एक संक्षिप्त क्रमिक सारांश से बदल सकते हैं।
लेकिन सावधान रहें: सारांश बनाने से संख्याएँ, प्रतिशत और तिथियाँ अस्पष्ट हो जाती हैं। मॉडल "refund of $482.10 on 2026-03-14" को "पिछली वसंत ऋतु में धनवापसी" के रूप में दोबारा लिख देता है।
आर्किटेक्ट का समाधान: लेन-देन संबंधी तथ्यों को एक अलग शब्दशः "case facts" खंड में निकालें और उसे सारांश के बाहर रखें, ताकि सटीक मान कभी धुंधले न हों।
बीच में खो जाना
बड़ी संदर्भ विंडो कोई मुफ़्त छूट नहीं है। मॉडल इनपुट के आरंभ और अंत पर सबसे अधिक ध्यान देते हैं और बीच पर सबसे कम। इसे "बीच में खो जाने" का प्रभाव कहते हैं।
इसलिए किसी विशाल इतिहास के बीच में महत्वपूर्ण निर्देश या तथ्य दबा देने पर उसके अनदेखे रह जाने का जोखिम होता है—भले ही उसे भेजने की पूरी कीमत आपने चुकाई हो।
मुख्य निर्देशों और वर्तमान कार्य को किनारों के पास रखें; भारी-भरकम मध्य भाग को छोटा करें।
गैर-अवरोधक कार्यों के लिए बैच एपीआई
लागत घटाने का एक उपाय है: Message Batches API। यह मानक अनुरोधों की तुलना में लगभग 50% सस्ता है और इसमें प्रसंस्करण के लिए 24 घंटे तक की अवधि मिलती है।
इसके समझौते हैं: विलंबता की कोई SLA नहीं है और बहु-टर्न टूल कॉलिंग समर्थित नहीं है। अनुरोधों को आपस में जोड़ने के लिए custom_id का उपयोग करें; केवल विफल अनुरोधों को फिर से भेजें।
रात भर चलने वाली रिपोर्ट और बड़े ऑडिट के लिए Batch का उपयोग करें। अवरोधक, समय-संवेदी या मर्ज से पहले की जाँचों के लिए इसका उपयोग कभी न करें—उनके परिणाम की प्रतीक्षा उपयोगकर्ता कर रहा होता है।
batch = client.messages.batches.create(requests=[
{"custom_id": "doc-001", "params": {
"model": "claude-sonnet-4-5", "max_tokens": 1024,
"messages": [{"role": "user", "content": classify(doc_1)}]}},
{"custom_id": "doc-002", "params": {
"model": "claude-sonnet-4-5", "max_tokens": 1024,
"messages": [{"role": "user", "content": classify(doc_2)}]}},
]) # ~50% cheaper, up to 24h, no latency SLAत्वरित जाँच
उत्पादन सहायता चैटबॉट की प्रत्येक बातचीत की लागत तेज़ी से बढ़ रही है, क्योंकि सत्र लंबे होते जा रहे हैं, जबकि उपयोगकर्ता का प्रत्येक उत्तर छोटा है। इसका मुख्य कारण क्या है और आर्किटेक्ट के स्तर पर सही समाधान क्या है?
पुनरावलोकन: टोकन, संदर्भ और लागत
मुख्य बातें:
- एपीआई कोई स्थिति नहीं रखता—आपको हर टर्न पर पूरा
messagesइतिहास फिर से भेजना पड़ता है। - बिलिंग प्रत्येक टोकन के आधार पर होती है, जिसे इनपुट (सिस्टम + टूल + इतिहास) और आउटपुट में बाँटा जाता है।
- संदर्भ विंडो इनपुट + आउटपुट की सीमा तय करती है; बार-बार भेजा गया इतिहास इस सीमा की ओर बढ़ता है और बातचीत की लंबाई के वर्ग के लगभग अनुपात में लागत बढ़ती है।
usageऔरcount_tokensसे मापें; टूल के विस्तृत आउटपुट को प्रासंगिक फ़ील्ड तक सीमित करें।- बजट के भीतर रहने के लिए सारांश बनाएँ, लेकिन सटीक संख्याओं और तिथियों को शब्दशः केस-तथ्य खंड में रखें; बीच में खो जाने के प्रभाव पर ध्यान दें।
- Batch API = केवल गैर-अवरोधक कार्यों के लिए लगभग 50% सस्ता—समय-संवेदी जाँचों के लिए कभी नहीं।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 26
- पाठ
- 104
अक्सर पूछे जाने वाले प्रश्न
क्या “टोकन, कॉन्टेक्स्ट विंडो और लागत” पाठ निःशुल्क है?
हाँ — Claude Architect अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “टोकन, कॉन्टेक्स्ट विंडो और लागत” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Claude Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“टोकन, कॉन्टेक्स्ट विंडो और लागत” में मैं क्या सीखूँगा?
हर टर्न में पूरा इतिहास क्यों भेजा जाता है और इसकी लागत क्या है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Claude Architect का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Claude Architect शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Claude Architect शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“टोकन, कॉन्टेक्स्ट विंडो और लागत” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Claude Architect पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Claude Architect पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Claude मॉडल परिवार
- API अनुरोध की संरचना
- रुकने के कारणों की व्याख्या
- टोकन, कॉन्टेक्स्ट विंडो और लागत