लंबी AI चैट अधिक महँगी क्यों पड़ती है: API इतिहास फिर से भेजता है
AI चैट में हर नया संदेश पूरा इतिहास फिर से भेजता है, इसलिए हर टर्न पर इनपुट बढ़ता है। गणित देखें और लागत कम रखने के 3 तरीके जानें।

इस पृष्ठ पर
चैट के शुरुआती संदेश सस्ते होते हैं। पचासवाँ संदेश दसवें से काफ़ी ज़्यादा महँगा पड़ता है, भले ही आपने उतना ही टाइप किया हो। कुछ टूटा नहीं है: चैट API ऐसे ही काम करते हैं।
संक्षिप्त उत्तर#
मॉडल आपके पिछले अनुरोध याद नहीं रखता। OpenAI का दस्तावेज़ सीधे कहता है: "each text generation request is independent and stateless", और बहु-टर्न बातचीत के लिए आप अगले अनुरोध में पहले के संदेश और मॉडल का पिछला उत्तर शामिल करते हैं। Anthropic का Messages API भी यही पैटर्न बताता है: स्टेटलेस बहु-टर्न बातचीत, जहाँ पहले के टर्न messages पैरामीटर में भेजे जाते हैं।
तो किसी ऐप में जो चैट विंडो आप देखते हैं, वह ऐप द्वारा बनाया गया एक भ्रम है। उसके पीछे, हर नया संदेश एक नया अनुरोध होता है जो अब तक की पूरी बातचीत साथ ले जाता है। आप हर अनुरोध पर इनपुट टोकन के लिए भुगतान करते हैं, और इतिहास उस इनपुट का हिस्सा है। यदि आप इन शब्दों में नए हैं, तो पहले What is a token और Input vs output tokens पढ़ें।
OpenAI अपनी रिस्पॉन्स चेन के लिए बिलिंग पक्ष स्पष्ट रूप से बताता है: चेन में पहले के सभी इनपुट टोकन इनपुट टोकन के रूप में बिल किए जाते हैं। यही सिद्धांत किसी भी API पर लागू होता है जहाँ आप इतिहास स्वयं भेजते हैं: जो आप भेजते हैं, वही गिना जाता है।
काल्पनिक संख्याओं के साथ एक उदाहरण#
नीचे दी गई संख्याएँ एक शिक्षण उदाहरण हैं, कोई माप नहीं। मान लें कि आपका प्रत्येक संदेश लगभग 200 टोकन का है और प्रत्येक उत्तर लगभग 300 टोकन का। एक पूरा हुआ आदान-प्रदान इतिहास में 500 टोकन जोड़ता है।
तालिका को दाईं ओर स्क्रॉल करें →
| टर्न | फिर से भेजा गया पहले का इतिहास | नया संदेश | इस अनुरोध का इनपुट | आउटपुट |
|---|---|---|---|---|
| 1 | 0 | 200 | 200 | 300 |
| 5 | 500 × 4 = 2,000 | 200 | 2,200 | 300 |
| 10 | 500 × 9 = 4,500 | 200 | 4,700 | 300 |
| 20 | 500 × 19 = 9,500 | 200 | 9,700 | 300 |
उत्तर की लंबाई वही रहती है, लेकिन टर्न 20 का इनपुट टर्न 1 के इनपुट का लगभग पचास गुना है। आउटपुट नहीं बढ़ता; इनपुट बढ़ता है।
अब 20-टर्न चैट का कुल। इतिहास को 0, 1, 2 ... 19 बार उतने ही आदान-प्रदानों के रूप में फिर से भेजा जाता है, जो एक साधारण योग है:
- फिर से भेजे गए पुराने आदान-प्रदान: 500 × 190 = 95,000 टोकन (190 है 0 + 1 + 2 + ... + 19)।
- नए संदेश: 200 × 20 = 4,000 टोकन।
- चैट के लिए कुल इनपुट: 95,000 + 4,000 = 99,000 टोकन।
- कुल आउटपुट: 300 × 20 = 6,000 टोकन।
यदि मॉडल सब कुछ मुफ़्त में याद रखता, तो इनपुट केवल 200 × 20 = 4,000 टोकन होता। बाकी इतिहास का फिर से भेजा जाना है। टर्न की संख्या दोगुनी करने से इतिहास की लागत दोगुनी नहीं होती, वह लगभग चौगुनी हो जाती है, क्योंकि योग टर्न की संख्या के वर्ग के साथ बढ़ता है।
लाइव कीमतों पर इसकी लागत#
यहाँ वही 20-टर्न चैट (99,000 इनपुट, 6,000 आउटपुट) मौजूदा कीमतों पर है। तालिका लाइव है और टैरिफ़ बदलने पर अपडेट होती है; अंतिम कॉलम तुलना के लिए OpenRouter का संदर्भ मूल्य है।
| मॉडल | इनपुट $/1M | आउटपुट $/1M | लागत | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0022 | $0.0045 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0021 | $0.0056 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0059 | $0.0369 |
कुल 99,000 इनपुट और 6,000 आउटपुट टोकन। प्रति 1M टोकन की कीमतें वर्तमान हैं और हमारे टैरिफ के साथ बदलती रहती हैं; OpenRouter कॉलम समान कार्यभार के लिए संदर्भ कीमतें दिखाता है।
पाठ में त्वरित जाँच के लिए: MiniMax-M2.7 पर यह पूरी बातचीत $0.0059 की पड़ती है। ऐसी चैट के लिए, जहाँ इनपुट प्रमुख है, इनपुट कीमत सबसे ज़्यादा मायने रखती है: MiniMax-M2.7 पर यह OpenRouter के संदर्भ मूल्य से सस्ती है। प्रति 1M टोकन, MiniMax-M2.7 इनपुट के लिए $0.05 और आउटपुट के लिए $0.15 है।
इसे कम रखने के तीन तरीके#
1. विषय बदलने पर नई चैट शुरू करें#
सबसे सस्ता इतिहास खाली इतिहास है। यदि आपने किसी फ़ंक्शन को डीबग करना पूरा कर लिया और अब कोई रेसिपी चाहते हैं, तो नई चैट 9,700 के बजाय 200 टोकन भेजती है। किसी ऐप में यह एक बटन है; कोड में यह history = [] है। जब भी पहले का संदर्भ अगले प्रश्न में मदद न करे, तब ऐसा करें।
2. इतिहास को छाँटें#
केवल अंतिम कुछ संदेश रखें और बाकी हटा दें। मान लें आप अंतिम तीन आदान-प्रदान रखते हैं, तो इतिहास कभी 500 × 3 = 1,500 टोकन से अधिक नहीं होगा:
- टर्न 1-3 सामान्य रूप से बढ़ते हैं: 1,500 टोकन इतिहास के लिए 0 + 500 + 1,000।
- टर्न 4-20 में से प्रत्येक सीमित 1,500 ले जाता है: 1,500 × 17 = 25,500 टोकन।
- इतिहास कुल: 1,500 + 25,500 = 27,000 टोकन, साथ में 4,000 नए संदेशों के = 31,000 टोकन इनपुट।
यह उन्हीं 20 टर्न के लिए 99,000 के बजाय 31,000 है, और MiniMax-M2.7 पर यह $0.0025 की पड़ती है। छाँटने की कीमत यह है कि मॉडल चैट का शुरुआती हिस्सा भूल जाता है, इसलिए सिस्टम प्रॉम्प्ट और कोई भी तथ्य जो खोना नहीं चाहिए, उसे छाँटे गए हिस्से से बाहर रखें।
3. पुराने टर्न को सारांश से बदलें#
जब इतिहास लंबा हो जाए, तो मॉडल से एक बार उसका सारांश बनवाएँ, फिर पूरे पाठ के बजाय सारांश के साथ जारी रखें। ऊपर के उदाहरण में, नौ आदान-प्रदान 4,500 टोकन हैं; लगभग 300 टोकन का सारांश मुख्य बिंदुओं को आगे ले जाता है। सारांश लिखने के लिए आप एक अतिरिक्त अनुरोध का भुगतान करते हैं, और हर बाद का अनुरोध हल्का होता है। यह सादे छाँटने से अधिक अर्थ बनाए रखता है, थोड़े विवरण की कीमत पर।
संदर्भ विंडो एक अलग सीमा है: यह तय करती है कि एक अनुरोध में कितने टोकन हो सकते हैं, उत्तर सहित। इतिहास अंततः उस सीमा तक पहुँचेगा; Why does an AI answer stop mid-sentence? इसे समझाता है।
इसे अपने ही कोड में देखें#
रिस्पॉन्स में एक usage ऑब्जेक्ट होता है, इसलिए आप वृद्धि स्वयं देख सकते हैं। यह एक उदाहरण है: कुंजी बदलें और मॉडल आईडी CheapTokens दस्तावेज़ से लें, क्योंकि आईडी प्रदाताओं के बीच भिन्न होती हैं।
from openai import OpenAI
client = OpenAI(base_url='https://api.cheaptokens.dev/v1', api_key='YOUR_KEY')
system = {'role': 'system', 'content': 'You are a helpful assistant.'}
history = []
KEEP = 7 # new message + last 3 exchanges (6 messages); None keeps everything
def ask(text):
history.append({'role': 'user', 'content': text})
r = client.chat.completions.create(
model='MODEL_ID_FROM_DOCS',
messages=[system] + (history[-KEEP:] if KEEP else history),
)
answer = r.choices[0].message.content
history.append({'role': 'assistant', 'content': answer})
print(r.usage.prompt_tokens, r.usage.completion_tokens)
return answerask() को कई बार लगातार कॉल करें और prompt_tokens प्रिंट करें: KEEP = None के साथ यह हर टर्न पर बढ़ता है, KEEP = 7 के साथ यह स्थिर हो जाता है। जो एजेंट कई चरणों में लूप करते हैं, उन पर वही प्रभाव हर चरण पर लागू होता है; How to estimate the cost of an AI agent दिखाता है कि इसके लिए बजट कैसे बनाएँ।
लंबी चैट कहाँ चलाएँ#
लंबे संवाद और एजेंट लूप ठीक वही कार्यभार हैं जहाँ इनपुट की मात्रा प्रमुख होती है, इसलिए बड़ी संदर्भ विंडो और लंबे उत्तरों के लिए जगह दोनों मायने रखती हैं:
- MiniMax-M2.7: 180K संदर्भ, प्रति उत्तर अधिकतम 8,192 टोकन, इनपुट और आउटपुट दोनों OpenRouter के संदर्भ मूल्य से सस्ते।
- DeepSeek-V4-Flash: 380K संदर्भ, प्रति उत्तर अधिकतम 32,768 टोकन, आउटपुट OpenRouter के संदर्भ मूल्य से सस्ता।
CheapTokens में सभी मॉडलों के लिए एक ही बैलेंस है, प्रति मॉडल निश्चित मूल्य बिना पीक आवर्स के, और OpenAI Chat Completions तथा Anthropic Messages के साथ संगत API, इसलिए ऊपर का कोड बेस URL बदलकर काम करता है। बैलेंस टॉप अप करें और Your first API request with CheapTokens का पालन करके अपना पहला अनुरोध भेजें।



