AI ऐप्लिकेशन्स को सुरक्षित करनामध्यमपाठ 1416 मिनट का पाठ

अनियंत्रित खपत: denial of wallet

हर मॉडल कॉल में पैसे खर्च होते हैं। सीमाओं के बिना, कोई एक हमलावर, एक बॉट या लूप में फंसा एक बग आपके बजट को खत्म कर सकता है या सभी के लिए वह फ़ीचर बंद करवा सकता है।

पाठ वीडियो में

60 सेकंड में

अनियंत्रित खपत: denial of wallet

हर मॉडल कॉल में पैसे खर्च होते हैं। सीमाओं के बिना, कोई एक हमलावर, एक बॉट या लूप में फंसा एक बग आपके बजट को खत्म कर सकता है या सभी के लिए वह फ़ीचर बंद करवा सकता है।

1/4
आसान शब्दों में
एक पार्क में पानी का एक मुफ्त नल है। अगर कोई एक व्यक्ति उससे पूरा टैंकर भर ले, तो दूसरों को कुछ नहीं मिलता और शहर को बिल भरना पड़ता है। एक AI फ़ीचर मीटर लगा हुआ नल है।
प्रत्येक मॉडल कॉल tokens का उपयोग करता है, जो टेक्स्ट के छोटे टुकड़े होते हैं जिन्हें मॉडल पढ़ता और लिखता है, और आम तौर पर आप दोनों के लिए भुगतान करते हैं। OWASP का LLM10 Unbounded Consumption बताता है कि क्या होता है जब उपयोग की कोई सीमा नहीं होती: भारी-भरकम बिल (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 keyKeys को सर्वर पर रखें; अपने बैकएंड से मॉडल को कॉल करें

सीमाओं की परतें (Layers of limits)

  1. 1

    प्रति अनुरोध (Per request)

    अधिकतम इनपुट साइज़, अधिकतम आउटपुट tokens, टाइमआउट, अधिकतम टूल स्टेप्स।
  2. 2

    प्रति उपयोगकर्ता (Per user)

    प्रति मिनट अनुरोध और प्रति दिन tokens, प्रति खाता।
  3. 3

    प्रति फ़ीचर (Per feature)

    प्रत्येक AI फ़ीचर के लिए एक मासिक बजट, जिसे अलग से ट्रैक किया जाए।
  4. 4

    पूरे संगठन के स्तर पर

    तय स्तरों पर खर्च के अलर्ट, और यदि आपका प्रोवाइडर सपोर्ट करता है तो एक हार्ड कैप (सख्त सीमा)।
  5. 5

    किल स्विच (Kill switch)

    फ़ीचर को तुरंत बंद करने या पिछले सुरक्षित तरीके पर लौटने का एक परखा हुआ उपाय।
Python: simple per-request and per-user budget checkspython
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) और सस्ते रास्ते

कई सवाल बार-बार पूछे जाते हैं: "आपके डिलीवरी चार्ज क्या हैं?" आम सवालों के जवाबों का एक कैश (cache) पैसे और समय दोनों बचाता है। लेकिन कैश कीज़ (cache keys) में ऐसी हर चीज़ शामिल होनी चाहिए जिससे जवाब या उसे देखने की अनुमति बदल सकती हो, जैसे कि टैनेंट और परमिशन स्कोप। एक लापरवाह कैश एक उपयोगकर्ता का निजी जवाब दूसरे को दिखा सकता है।
सावधान रहें
सिर्फ़ IP एड्रेस के आधार पर rate limits ठीक से काम नहीं करती हैं। भारत में कई मोबाइल यूज़र्स अपने नेटवर्क प्रोवाइडर के ज़रिए एक ही IP एड्रेस साझा करते हैं, इसलिए IP सीमा ईमानदार यूज़र्स को ब्लॉक कर सकती है, जबकि कोई बॉट नेटवर्क कई एड्रेस पर फैला हो सकता है। जहाँ तक हो सके अकाउंट के हिसाब से सीमा तय करें, और IP को केवल एक संकेत के रूप में इस्तेमाल करें।
नोट
कई मॉडल प्रोवाइडर यूसेज लिमिट्स, स्पेंड अलर्ट्स या अलग प्रोजेक्ट कीज़ की सुविधा देते हैं। देखें कि आपका प्रोवाइडर क्या देता है और उन्हें चालू करें। वे आपकी अपनी सीमाओं के नीचे एक सुरक्षा कवच हैं, उनका विकल्प नहीं।
यह करके देखें। किसी एक AI फ़ीचर के लिए पता करें: यह एक बार में सबसे बड़ा अनुरोध कितना कर सकता है, और एक उपयोगकर्ता एक दिन में अधिकतम कितना खर्च करवा सकता है? यदि आप इसका उत्तर नहीं दे सकते, तो यह आपका पहला काम है।

और देखें और पढ़ें

लैब

एक मुफ़्त AI फ़ीचर के लिए सीमाओं, अलर्ट्स और कार्रवाइयों के साथ एक पेज का लागत बजट।

~30 min

समस्या

फ़ीचर: लगभग 20,000 छात्रों वाले कॉलेज के लिए एक मुफ़्त परीक्षा-तैयारी चैटबॉट। एक काल्पनिक कीमत का उपयोग करें जिसे आप स्पष्ट रूप से लिखें, उदाहरण के लिए "₹X प्रति दस लाख इनपुट tokens और ₹Y प्रति दस लाख आउटपुट tokens"। वास्तविक कीमतें न खोजें और न ही उनका दावा करें।

  1. सामान्य उपयोग का अनुमान लगाएं: प्रति छात्र प्रति दिन प्रश्न, प्रति प्रश्न इनपुट और आउटपुट tokens। अपने अनुमान लिखें।
  2. अपने अनुमानों से अपेक्षित मासिक लागत की गणना करें।
  3. सीमाएं तय करें: प्रति अनुरोध (इनपुट, आउटपुट, टाइमआउट), प्रति उपयोगकर्ता प्रति दिन, और एक मासिक फ़ीचर बजट।
  4. बजट के 50%, 80% और 100% पर अलर्ट सेट करें, और लिखें कि प्रत्येक पर क्या होगा (किसे सूचित किया जाएगा, क्या बदलाव होंगे)।
  5. किल स्विच का विवरण दें: इसे कौन दबा सकता है और छात्रों को क्या दिखाई देगा।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1परीक्षा का सप्ताह आता है और असली उपयोग तीन गुना हो जाता है। महीने के 20वें दिन आपका 80% वाला अलर्ट ट्रिगर हो जाता है। आप क्या करेंगे, और आपको क्या योजना बनानी चाहिए थी?दिखाएं

पहले डेटा देखें: क्या कई छात्र इसे सामान्य रूप से इस्तेमाल कर रहे हैं, या कुछ खाते बहुत ज़्यादा इस्तेमाल कर रहे हैं? यदि उपयोग वास्तविक है, तो पहले से तय प्रतिक्रिया चुनें: आसान सवालों के लिए सस्ता मॉडल, छोटे जवाब, आम सवालों की कैशिंग, या फिर बजट के मालिक से मंज़ूरी लेकर बजट बढ़ाना। अच्छी योजना में परीक्षा जैसे मौकों पर आने वाली भीड़ का पहले से अंदाज़ा लगाया जाता है और उनके लिए बजट व सीमाएं पहले से तय की जाती हैं।

Q2कॉल-दर-कॉल आउटपुट सीमा समान होने के बावजूद, एक एजेंट लूप की लागत सामान्य चैट से बहुत अधिक क्यों हो सकती है?दिखाएं

क्योंकि हर स्टेप एक अलग कॉल होती है, और हर कॉल बढ़ते हुए संदर्भ (context) को दोबारा भेजती है: निर्देश, पुरानी बातचीत और टूल्स के परिणाम। इनपुट tokens हर स्टेप के साथ बढ़ते जाते हैं। दस या पचास स्टेप्स की लागत एक सामान्य जवाब से कहीं अधिक हो सकती है। स्टेप्स, कुल समय और प्रति कार्य कुल लागत पर लगाई गई सीमाएं ही इसे रोकती हैं।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

token क्या है?

टेक्स्ट का एक छोटा सा टुकड़ा, जो अक्सर किसी शब्द का एक हिस्सा होता है। मॉडल टेक्स्ट को tokens के रूप में पढ़ते और लिखते हैं, और अधिकांश प्रोवाइडर इनपुट और आउटपुट tokens के आधार पर कीमत तय करते हैं। अलग-अलग भाषाओं के टेक्स्ट में एक ही अर्थ के लिए अलग-अलग संख्या में tokens लग सकते हैं।

हम असली यूज़र्स को परेशान किए बिना सीमाएं कैसे तय करें?

पहले मापें। देखें कि सामान्य यूज़र्स वास्तव में कितना भेजते और प्राप्त करते हैं, फिर सीमाएं उससे काफी ऊपर रखें। सीमा समाप्त होने पर स्पष्ट संदेश दें, और यदि वास्तव में कोई ज़रूरत हो तो और कोटा मांगने का विकल्प दें।

क्या AI जवाबों के लिए कैशिंग (caching) सुरक्षित है?

सार्वजनिक, गैर-व्यक्तिगत जवाबों के लिए, आम तौर पर हाँ। किसी भी व्यक्तिगत या अनुमति-आधारित (permissioned) चीज़ के लिए, कैश की (cache key) में उपयोगकर्ता या परमिशन स्कोप को शामिल करें, या कैश न करें। इसके अलावा, जब उनके सोर्स दस्तावेज़ बदलें तो कैश्ड जवाबों को भी हटा (clear) दें।

क्या एजेंट्स के लिए समय सीमा होनी चाहिए?

हाँ। एजेंट्स लूप में फंस सकते हैं, बार-बार कोशिश कर सकते हैं और कई बार टूल्स को कॉल कर सकते हैं। अधिकतम स्टेप्स की संख्या, अधिकतम कुल समय और प्रति कार्य अधिकतम लागत तय करें। जब कोई सीमा समाप्त हो जाए, तो हमेशा कोशिश करते रहने के बजाय रुकें और रिपोर्ट करें।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें