बुनियादी बातेंशुरुआतीपाठ 46 मिनट का पाठ

टूल्स: मॉडल को हाथ देना

टूल कोई भी ऐसा बटन है जिसे दबाने की मॉडल को अनुमति है। यह देखने के लिए डायग्राम के हर हिस्से पर क्लिक करें कि भरोसा कहाँ बनता है और कहाँ टूटता है।

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

60 सेकंड में

टूल्स: मॉडल को हाथ देना

टूल कोई भी ऐसा बटन है जिसे दबाने की मॉडल को अनुमति है। यह देखने के लिए डायग्राम के हर हिस्से पर क्लिक करें कि भरोसा कहाँ बनता है और कहाँ टूटता है।

1/4
आसान शब्दों में
मॉडल अपने आप कुछ नहीं कर सकता। वह सिर्फ लिख सकता है। इसलिए हमने एक समझौता किया: अगर वह एक खास वाक्य लिखता है, तो एक सामान्य कंप्यूटर प्रोग्राम उसके लिए वह काम कर देगा। उस वाक्य को टूल कॉल कहते हैं।
किसी टूल के तीन हिस्से होते हैं: एक नाम, एक विवरण जिसे मॉडल यह तय करने के लिए पढ़ता है कि इसका इस्तेमाल कब करना है, और आर्ग्युमेंट्स का एक सेट जिसे उसे भरना होता है।
यहाँ इसका एक सरल और असली उदाहरण है:
हिस्साउदाहरणइसे कौन लिखता है
नामsend_emailडेवलपर
विवरण"ईमेल भेजता है। तब इस्तेमाल करें जब यूज़र किसी से संपर्क करने के लिए कहे।"डेवलपर — लेकिन मॉड्यूल 15 देखें
आर्ग्युमेंट्सto, subject, bodyमॉडल, रन टाइम पर
नतीजा"Sent, message id 8812"बाहरी दुनिया — गैर-भरोसेमंद

डायग्राम के किसी भी बॉक्स पर टैप करें

Humanthe real bossgoalThe modelwrites text onlytool callTool runnerordinary codedoes itThe real worldemail, money, files, DBresult textResultuntrusted!the red loop is the one attackers ride
इंसान

आप लक्ष्य तय करते हैं और, एक अच्छे सिस्टम में, आप जोखिम भरे कदमों को मंज़ूरी देते हैं। इस पूरी तस्वीर में सिर्फ आप ही हैं जिसे ज़िम्मेदार ठहराया जा सकता है। कभी भी ऐसा सिस्टम न बनाएं जो चुपके से आपको ही बाहर कर दे।

किसी भी बॉक्स पर क्लिक करें। इन पाँच हिस्सों में से चार भरोसेमंद हैं। नतीजे वाला तीर — जो बाहरी दुनिया से वापस आ रहा लाल डैश वाला तीर है — वहीं से हमले अंदर आते हैं।

टूल्स को इस आधार पर रैंक किया जाता है कि आपको कितना पछताना पड़ेगा

जोखिमटूल्समोटा नियम
कमकोई पब्लिक पेज पढ़ना, गणित के सवाल हल करना, समय देखनाइसे बेझिझक चलने दें
मध्यमप्राइवेट फ़ाइलें पढ़ना, डेटाबेस में खोजना, अंदरूनी दस्तावेज़ सर्च करनासब कुछ लॉग करें, दायरा सीमित रखें
ज़्यादाईमेल भेजना, सार्वजनिक रूप से पोस्ट करना, डेटाबेस में लिखना, कोड रन करनापहले किसी इंसान से पूछें
बहुत ज़्यादापैसे ट्रांसफर करना, डेटा डिलीट करना, अनुमतियाँ बदलना, डिप्लॉय करनाहर एक बार, पूरे विवरण के साथ, इंसान से पूछें
यह करें
पहले दिन से ही एक अच्छी आदत डालें: अपने टूल्स को पढ़ने वाले (read) और लिखने वाले (write) टूल्स में बांट लें। पढ़ने वाले टूल्स की अनुमति देना आसान है। लिखने वाले टूल्स में ही आपको अपनी पूरी सावधानी बरतनी होती है।

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

लैब

असली आर्ग्युमेंट वैलिडेशन वाली एक टूल रजिस्ट्री, और वह इंजेक्शन जिसे यह रोकती है।

~15 min

समस्या

लैब 3 वाले एजेंट को लें। हर टूल के लिए एक स्कीमा जोड़ें — आर्ग्युमेंट के नाम, प्रकार, रेंज, अनुमति-सूचियाँ — और निष्पादित करने से पहले किसी भी ऐसी कॉल को खारिज कर दें जो वैलिडेशन में फेल हो जाए। फिर एक ऐसा टूल नतीजा लिखें जो एजेंट से आपके चुने हुए पते पर send_email कॉल करवाने की कोशिश करे, और पुष्टि करें कि आपका वैलिडेशन इसे रोकता है।
शुरुआती कोडpython
from dataclasses import dataclass
from typing import Callable

@dataclass
class Tool:
    name: str
    run: Callable
    validate: Callable[[dict], str | None]   # returns an error, or None

def refund_validate(args):
    if not isinstance(args.get("amount"), (int, float)):
        return "amount must be a number"
    if not 0 < args["amount"] <= 5000:
        return "amount must be between 0 and 5000"
    if not args.get("order_id", "").startswith("ORD-"):
        return "order_id must look like ORD-xxxx"
    return None
Google Colab खोलें ↗इस कोड के लिए आपके अपने सेटअप की ज़रूरत है (एक मॉडल, एक GPU या अतिरिक्त पैकेज)। इसे Google Colab में चलाएं: File → Upload notebook।

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

कठिन सवाल

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

Q1आपका वैलिडेशन रिफंड को ₹5,000 तक सीमित करता है। एक इंजेक्ट किया गया एजेंट एक घंटे में ₹4,999 के 400 रिफंड जारी कर देता है। क्या आपका नियंत्रण बेकार था?दिखाएं
यह ज़रूरी था लेकिन काफी नहीं था। प्रति-कॉल वैलिडेशन केवल एक कार्रवाई को सीमित करता है; यह कुल मिलाकर होने वाले असर के बारे में कुछ नहीं कहता। आपको एक दूसरे, अलग नियंत्रण की ज़रूरत है: टूल रनर में लागू की गई एक रेट लिमिट और प्रति रन व प्रति घंटे खर्च की कुल सीमा। यह इसका सामान्य ढांचा है — प्रति-कार्रवाई सीमाएं और समय-सीमा की सीमाएं स्वतंत्र नियंत्रण हैं, और हमलावर उसी ओर रुख करते हैं जिसे आपने नहीं बनाया है।
Q2मॉडल से मान्य आर्ग्युमेंट्स देने के लिए कहने के बजाय टूल रनर में आर्ग्युमेंट्स को वैलिडेट क्यों करें?दिखाएं
क्योंकि मॉडल वह हिस्सा है जिस पर आप भरोसा नहीं कर सकते। उससे प्यार से कहना सिर्फ एक अनुरोध है; रनर असली नियम लागू करता है। साफ तौर पर कहें तो: एक इंजेक्टेड मॉडल यह समझाते हुए भी खुशी-खुशी {"amount": 999999} भेज देगा कि वह आपके नियमों का पालन कर रहा है। सामान्य कोड में किए गए वैलिडेशन से बहस नहीं की जा सकती, और उसका टेस्ट भी किया जा सकता है।

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

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

क्या मॉडल कोई ऐसा टूल बना सकता है जो मौजूद ही नहीं है?

वह कोशिश कर सकता है। वह transfer_funds के लिए कॉल लिख देगा, भले ही आपने ऐसा कभी बनाया ही न हो। एक सही टूल रनर अनजान टूल नामों को तुरंत खारिज कर देता है। अगर आपका रनर उन्हें किसी जेनेरिक निष्पादक (executor) के पास भेज देता है, तो आपके सिस्टम में एक बड़ी कमी है।

क्या होगा अगर मॉडल आर्ग्युमेंट्स में कुछ भी बेतुका लिख दे?

तो आपके टूल को उसे खारिज कर देना चाहिए। हर आर्ग्युमेंट की ऐसे जाँच करें जैसे वह इंटरनेट पर किसी अजनबी से आया हो — क्योंकि असल में, वह वहीं से आया है। टाइप की जाँच, रेंज, अनुमति-सूचियाँ (allow-lists), और अधिकतम सीमाएँ तय करें।

क्या MCP एक टूल है?

MCP (Model Context Protocol) किसी एजेंट में टूल्स के पूरे सेट को जोड़ने का एक मानक तरीका है, जैसे क्षमताओं के लिए एक USB पोर्ट। बहुत उपयोगी है, और सप्लाई-चेन का एक असली जोखिम भी, क्योंकि अब आप किसी और के टूल विवरण पर भरोसा कर रहे हैं। मॉड्यूल 15।

क्या टूल के नतीजे यूज़र को दिखाए जाने चाहिए?

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

पाठ का टेस्ट

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

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