अनियंत्रित खपत: denial of wallet
हर मॉडल कॉल में पैसे खर्च होते हैं। सीमाओं के बिना, कोई एक हमलावर, एक बॉट या लूप में फंसा एक बग आपके बजट को खत्म कर सकता है या सभी के लिए वह फ़ीचर बंद करवा सकता है।
60 सेकंड में
अनियंत्रित खपत: denial of wallet
हर मॉडल कॉल में पैसे खर्च होते हैं। सीमाओं के बिना, कोई एक हमलावर, एक बॉट या लूप में फंसा एक बग आपके बजट को खत्म कर सकता है या सभी के लिए वह फ़ीचर बंद करवा सकता है।
खपत नियंत्रण से बाहर कैसे हो जाती है
| पैटर्न | उदाहरण | नियंत्रण (Control) |
|---|---|---|
| बहुत बड़े इनपुट | चैट में पूरी किताब या बहुत बड़ी फ़ाइल पेस्ट करना | इनपुट साइज़ की सीमाएं; मॉडल को कॉल करने से पहले tokens गिनना |
| बहुत बड़े आउटपुट | "1,00,000 शब्दों की कहानी लिखो" | हर कॉल पर एक maximum output token सेटिंग |
| लूप (Loops) | एक एजेंट बार-बार टूल्स को कॉल करता है; हर एरर पर दोबारा कोशिश करता है | Maximum steps, maximum time, और backoff के साथ retry सीमाएं |
| बहुत सारे अनुरोध (Requests) | एक स्क्रिप्ट आपके मुफ़्त चैटबॉट पर लगातार अनुरोध भेजती रहती है | साइन-इन, प्रति खाता rate limits, बॉट सुरक्षा |
| मुफ़्त सामान्य उपयोग | लोग आपके दुकान वाले बॉट को एक मुफ़्त ऑल-परपस AI की तरह इस्तेमाल करते हैं | बॉट को मुख्य विषय तक सीमित रखें; प्रति उपयोगकर्ता कोटा तय करें |
| महंगे डिफ़ॉल्ट्स | हर सवाल के लिए सबसे बड़ा मॉडल और 20 रीट्रिव किए गए टुकड़े (chunks) | काम के हिसाब से मॉडल चुनें; रीट्रिव किए गए टुकड़ों की संख्या सीमित करें |
| खुली छूटी 'keys' (Exposed keys) | मोबाइल ऐप या वेब पेज के अंदर मॉडल की API key | Keys को सर्वर पर रखें; अपने बैकएंड से मॉडल को कॉल करें |
सीमाओं की परतें (Layers of limits)
- 1
प्रति अनुरोध (Per request)
अधिकतम इनपुट साइज़, अधिकतम आउटपुट tokens, टाइमआउट, अधिकतम टूल स्टेप्स। - 2
प्रति उपयोगकर्ता (Per user)
प्रति मिनट अनुरोध और प्रति दिन tokens, प्रति खाता। - 3
प्रति फ़ीचर (Per feature)
प्रत्येक AI फ़ीचर के लिए एक मासिक बजट, जिसे अलग से ट्रैक किया जाए। - 4
पूरे संगठन के स्तर पर
तय स्तरों पर खर्च के अलर्ट, और यदि आपका प्रोवाइडर सपोर्ट करता है तो एक हार्ड कैप (सख्त सीमा)। - 5
किल स्विच (Kill switch)
फ़ीचर को तुरंत बंद करने या पिछले सुरक्षित तरीके पर लौटने का एक परखा हुआ उपाय।
MAX_INPUT_CHARS = 8_000
MAX_OUTPUT_TOKENS = 800
DAILY_TOKENS_PER_USER = 50_000
REQUEST_TIMEOUT_S = 30
MAX_AGENT_STEPS = 6
class BudgetExceeded(Exception):
pass
def check_budget(user_id: str, text: str, usage) -> None:
if len(text) > MAX_INPUT_CHARS:
raise BudgetExceeded("message too long")
if usage.tokens_today(user_id) >= DAILY_TOKENS_PER_USER:
raise BudgetExceeded("daily limit reached, try tomorrow")
def after_call(user_id: str, tokens_used: int, usage) -> None:
usage.add(user_id, tokens_used) # record real usage from the API responseकैशिंग (Caching) और सस्ते रास्ते
और देखें और पढ़ें
लैब
एक मुफ़्त AI फ़ीचर के लिए सीमाओं, अलर्ट्स और कार्रवाइयों के साथ एक पेज का लागत बजट।
समस्या
फ़ीचर: लगभग 20,000 छात्रों वाले कॉलेज के लिए एक मुफ़्त परीक्षा-तैयारी चैटबॉट। एक काल्पनिक कीमत का उपयोग करें जिसे आप स्पष्ट रूप से लिखें, उदाहरण के लिए "₹X प्रति दस लाख इनपुट tokens और ₹Y प्रति दस लाख आउटपुट tokens"। वास्तविक कीमतें न खोजें और न ही उनका दावा करें।
- सामान्य उपयोग का अनुमान लगाएं: प्रति छात्र प्रति दिन प्रश्न, प्रति प्रश्न इनपुट और आउटपुट tokens। अपने अनुमान लिखें।
- अपने अनुमानों से अपेक्षित मासिक लागत की गणना करें।
- सीमाएं तय करें: प्रति अनुरोध (इनपुट, आउटपुट, टाइमआउट), प्रति उपयोगकर्ता प्रति दिन, और एक मासिक फ़ीचर बजट।
- बजट के 50%, 80% और 100% पर अलर्ट सेट करें, और लिखें कि प्रत्येक पर क्या होगा (किसे सूचित किया जाएगा, क्या बदलाव होंगे)।
- किल स्विच का विवरण दें: इसे कौन दबा सकता है और छात्रों को क्या दिखाई देगा।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1परीक्षा का सप्ताह आता है और असली उपयोग तीन गुना हो जाता है। महीने के 20वें दिन आपका 80% वाला अलर्ट ट्रिगर हो जाता है। आप क्या करेंगे, और आपको क्या योजना बनानी चाहिए थी?दिखाएं
पहले डेटा देखें: क्या कई छात्र इसे सामान्य रूप से इस्तेमाल कर रहे हैं, या कुछ खाते बहुत ज़्यादा इस्तेमाल कर रहे हैं? यदि उपयोग वास्तविक है, तो पहले से तय प्रतिक्रिया चुनें: आसान सवालों के लिए सस्ता मॉडल, छोटे जवाब, आम सवालों की कैशिंग, या फिर बजट के मालिक से मंज़ूरी लेकर बजट बढ़ाना। अच्छी योजना में परीक्षा जैसे मौकों पर आने वाली भीड़ का पहले से अंदाज़ा लगाया जाता है और उनके लिए बजट व सीमाएं पहले से तय की जाती हैं।
Q2कॉल-दर-कॉल आउटपुट सीमा समान होने के बावजूद, एक एजेंट लूप की लागत सामान्य चैट से बहुत अधिक क्यों हो सकती है?दिखाएं
क्योंकि हर स्टेप एक अलग कॉल होती है, और हर कॉल बढ़ते हुए संदर्भ (context) को दोबारा भेजती है: निर्देश, पुरानी बातचीत और टूल्स के परिणाम। इनपुट tokens हर स्टेप के साथ बढ़ते जाते हैं। दस या पचास स्टेप्स की लागत एक सामान्य जवाब से कहीं अधिक हो सकती है। स्टेप्स, कुल समय और प्रति कार्य कुल लागत पर लगाई गई सीमाएं ही इसे रोकती हैं।
अक्सर पूछे जाने वाले सवाल
token क्या है?
टेक्स्ट का एक छोटा सा टुकड़ा, जो अक्सर किसी शब्द का एक हिस्सा होता है। मॉडल टेक्स्ट को tokens के रूप में पढ़ते और लिखते हैं, और अधिकांश प्रोवाइडर इनपुट और आउटपुट tokens के आधार पर कीमत तय करते हैं। अलग-अलग भाषाओं के टेक्स्ट में एक ही अर्थ के लिए अलग-अलग संख्या में tokens लग सकते हैं।
हम असली यूज़र्स को परेशान किए बिना सीमाएं कैसे तय करें?
पहले मापें। देखें कि सामान्य यूज़र्स वास्तव में कितना भेजते और प्राप्त करते हैं, फिर सीमाएं उससे काफी ऊपर रखें। सीमा समाप्त होने पर स्पष्ट संदेश दें, और यदि वास्तव में कोई ज़रूरत हो तो और कोटा मांगने का विकल्प दें।
क्या AI जवाबों के लिए कैशिंग (caching) सुरक्षित है?
सार्वजनिक, गैर-व्यक्तिगत जवाबों के लिए, आम तौर पर हाँ। किसी भी व्यक्तिगत या अनुमति-आधारित (permissioned) चीज़ के लिए, कैश की (cache key) में उपयोगकर्ता या परमिशन स्कोप को शामिल करें, या कैश न करें। इसके अलावा, जब उनके सोर्स दस्तावेज़ बदलें तो कैश्ड जवाबों को भी हटा (clear) दें।
क्या एजेंट्स के लिए समय सीमा होनी चाहिए?
हाँ। एजेंट्स लूप में फंस सकते हैं, बार-बार कोशिश कर सकते हैं और कई बार टूल्स को कॉल कर सकते हैं। अधिकतम स्टेप्स की संख्या, अधिकतम कुल समय और प्रति कार्य अधिकतम लागत तय करें। जब कोई सीमा समाप्त हो जाए, तो हमेशा कोशिश करते रहने के बजाय रुकें और रिपोर्ट करें।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।