पाठ 19 / 31

न्यूनतम विशेषाधिकार, Allow-Lists और मानव अनुमोदन

Host में नीति लागू करें, मॉडल के बाहर।

मॉडल प्रस्तावित करता है, कोड निर्णय लेता है

नियम लागू करने के लिए अकेले मॉडल पर कभी निर्भर न रहें। "मॉडल X बुलाना चाहता है" और "X चलता है" के बीच host में नीति परत रखें: tools की allow-list, argument जाँचें (सीमाएँ, patterns, अनुमत hosts और folders), लिखने, हटाने, भुगतान और बाहरी संदेशों के लिए मानव अनुमोदन वाले जोखिम स्तर, दर और लागत सीमाएँ, और हर call का audit log। हर server को सिर्फ़ उतने credentials और scopes दें जितने चाहिए, केवल-पढ़ने वाले tools को प्राथमिकता दें, और जोखिम भरी शक्तियों के लिए अलग servers या accounts उपयोग करें। User को ठीक दिखाएँ कि क्या होगा ("X को body Y के साथ ईमेल भेजें?"), अस्पष्ट सार नहीं।

नीति परत, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। Reads पास होते हैं। अज्ञात tool अस्वीकृत है। Refund को अनुमोदन चाहिए; अनुमोदित होने पर वह 0 से 5000 की सीमा में अनुमत है, और अनुमोदित 90,000 का refund फिर भी argument जाँच से रुकता है।

ALLOWED = {
    "get_order_status": {"risk": "read",  "approval": False},
    "propose_refund":   {"risk": "write", "approval": True},
}

def authorize(tool, args, approved=False):
    spec = ALLOWED.get(tool)
    if spec is None:
        return False, "tool not on the allow-list"
    if spec["approval"] and not approved:
        return False, "needs human approval"
    if tool == "propose_refund" and not (0 < args.get("amount", 0) <= 5000):
        return False, "amount out of policy range"
    return True, "ok"

for call in [("get_order_status", {"order_id": "481516"}, False),
             ("delete_all", {}, False),
             ("propose_refund", {"amount": 300}, False),
             ("propose_refund", {"amount": 300}, True),
             ("propose_refund", {"amount": 90000}, True)]:
    print(call[0], call[1], "->", authorize(*call))

Output:

get_order_status {'order_id': '481516'} -> (True, 'ok')
delete_all {} -> (False, 'tool not on the allow-list')
propose_refund {'amount': 300} -> (False, 'needs human approval')
propose_refund {'amount': 300} -> (True, 'ok')
propose_refund {'amount': 90000} -> (False, 'amount out of policy range')

त्वरित जाँच: अनुमोदन जैसी नीति कहाँ लागू होनी चाहिए?

  • कहीं नहीं
  • सिर्फ़ system prompt में
  • सिर्फ़ मॉडल से विनम्रता से कहकर
  • Host के कोड में, मॉडल के बाहर
Answer

Host के कोड में, मॉडल के बाहर — कोड से लागू नियम injected पाठ से टाले नहीं जा सकते।