टूल्स: मॉडल को हाथ देना
टूल कोई भी ऐसा बटन है जिसे दबाने की मॉडल को अनुमति है। यह देखने के लिए डायग्राम के हर हिस्से पर क्लिक करें कि भरोसा कहाँ बनता है और कहाँ टूटता है।
60 सेकंड में
टूल्स: मॉडल को हाथ देना
टूल कोई भी ऐसा बटन है जिसे दबाने की मॉडल को अनुमति है। यह देखने के लिए डायग्राम के हर हिस्से पर क्लिक करें कि भरोसा कहाँ बनता है और कहाँ टूटता है।
| हिस्सा | उदाहरण | इसे कौन लिखता है |
|---|---|---|
| नाम | send_email | डेवलपर |
| विवरण | "ईमेल भेजता है। तब इस्तेमाल करें जब यूज़र किसी से संपर्क करने के लिए कहे।" | डेवलपर — लेकिन मॉड्यूल 15 देखें |
| आर्ग्युमेंट्स | to, subject, body | मॉडल, रन टाइम पर |
| नतीजा | "Sent, message id 8812" | बाहरी दुनिया — गैर-भरोसेमंद |
डायग्राम के किसी भी बॉक्स पर टैप करें
आप लक्ष्य तय करते हैं और, एक अच्छे सिस्टम में, आप जोखिम भरे कदमों को मंज़ूरी देते हैं। इस पूरी तस्वीर में सिर्फ आप ही हैं जिसे ज़िम्मेदार ठहराया जा सकता है। कभी भी ऐसा सिस्टम न बनाएं जो चुपके से आपको ही बाहर कर दे।
टूल्स को इस आधार पर रैंक किया जाता है कि आपको कितना पछताना पड़ेगा
| जोखिम | टूल्स | मोटा नियम |
|---|---|---|
| कम | कोई पब्लिक पेज पढ़ना, गणित के सवाल हल करना, समय देखना | इसे बेझिझक चलने दें |
| मध्यम | प्राइवेट फ़ाइलें पढ़ना, डेटाबेस में खोजना, अंदरूनी दस्तावेज़ सर्च करना | सब कुछ लॉग करें, दायरा सीमित रखें |
| ज़्यादा | ईमेल भेजना, सार्वजनिक रूप से पोस्ट करना, डेटाबेस में लिखना, कोड रन करना | पहले किसी इंसान से पूछें |
| बहुत ज़्यादा | पैसे ट्रांसफर करना, डेटा डिलीट करना, अनुमतियाँ बदलना, डिप्लॉय करना | हर एक बार, पूरे विवरण के साथ, इंसान से पूछें |
और देखें और पढ़ें
लैब
असली आर्ग्युमेंट वैलिडेशन वाली एक टूल रजिस्ट्री, और वह इंजेक्शन जिसे यह रोकती है।
समस्या
send_email कॉल करवाने की कोशिश करे, और पुष्टि करें कि आपका वैलिडेशन इसे रोकता है।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आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1आपका वैलिडेशन रिफंड को ₹5,000 तक सीमित करता है। एक इंजेक्ट किया गया एजेंट एक घंटे में ₹4,999 के 400 रिफंड जारी कर देता है। क्या आपका नियंत्रण बेकार था?दिखाएं
Q2मॉडल से मान्य आर्ग्युमेंट्स देने के लिए कहने के बजाय टूल रनर में आर्ग्युमेंट्स को वैलिडेट क्यों करें?दिखाएं
{"amount": 999999} भेज देगा कि वह आपके नियमों का पालन कर रहा है। सामान्य कोड में किए गए वैलिडेशन से बहस नहीं की जा सकती, और उसका टेस्ट भी किया जा सकता है।अक्सर पूछे जाने वाले सवाल
क्या मॉडल कोई ऐसा टूल बना सकता है जो मौजूद ही नहीं है?
वह कोशिश कर सकता है। वह transfer_funds के लिए कॉल लिख देगा, भले ही आपने ऐसा कभी बनाया ही न हो। एक सही टूल रनर अनजान टूल नामों को तुरंत खारिज कर देता है। अगर आपका रनर उन्हें किसी जेनेरिक निष्पादक (executor) के पास भेज देता है, तो आपके सिस्टम में एक बड़ी कमी है।
क्या होगा अगर मॉडल आर्ग्युमेंट्स में कुछ भी बेतुका लिख दे?
तो आपके टूल को उसे खारिज कर देना चाहिए। हर आर्ग्युमेंट की ऐसे जाँच करें जैसे वह इंटरनेट पर किसी अजनबी से आया हो — क्योंकि असल में, वह वहीं से आया है। टाइप की जाँच, रेंज, अनुमति-सूचियाँ (allow-lists), और अधिकतम सीमाएँ तय करें।
क्या MCP एक टूल है?
MCP (Model Context Protocol) किसी एजेंट में टूल्स के पूरे सेट को जोड़ने का एक मानक तरीका है, जैसे क्षमताओं के लिए एक USB पोर्ट। बहुत उपयोगी है, और सप्लाई-चेन का एक असली जोखिम भी, क्योंकि अब आप किसी और के टूल विवरण पर भरोसा कर रहे हैं। मॉड्यूल 15।
क्या टूल के नतीजे यूज़र को दिखाए जाने चाहिए?
आदर्श रूप से हाँ, कम से कम लॉग में तो ज़रूर। छिपे हुए टूल आउटपुट की वजह से ही बुरी चीज़ें छिप जाती हैं। अगर कोई इंसान कभी यह नहीं देखता कि वापस क्या आया, तो उसके साथ आए नुकसानदेह निर्देश पर किसी का ध्यान नहीं जाएगा।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।