Claude Architect · पाठ

विस्तार-योग्यता के लिए 'other' वाले Enums

'other' मान के साथ एक विवरण फ़ील्ड जोड़िए।

पाठ 4, कुल 4 में से13 चरण

विस्तार-योग्यता के लिए 'other' वाले Enums, CoddyKit पर Claude Architect का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Claude Architect सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Claude Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बंद Enum की समस्या

Enum, सुव्यवस्थित संरचित आउटपुट की रीढ़ होते हैं। जब आप किसी फ़ील्ड को मानों के एक निश्चित समूह तक सीमित करते हैं — जैसे category का मान billing, technical या account में से एक होना — तो मॉडल मनमाने स्ट्रिंग नहीं बना सकता और आगे का कोड भरोसे के साथ अलग-अलग शाखाओं में काम कर सकता है।

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

विस्तारशीलता का पैटर्न: 'other' + विवरण

विशेषज्ञ वास्तुकारों के स्तर का समाधान विस्तारशीलता का पैटर्न है: enum में "other" मान जोड़ें और साथ में एक मुक्त-पाठ विवरण फ़ील्ड रखें, जिसे मॉडल तब भरता है जब वह other चुनता है।

इससे आपको एक साथ दो लाभ मिलते हैं:

  • मॉडल के पास जबरन गलत विकल्प चुनने के बजाय ईमानदार वैकल्पिक मार्ग होता है।
  • आप दर्ज कर लेते हैं कि अप्रत्याशित मामला वास्तव में क्या था — ऐसा मूल संकेत जिसे बाद में enum को विस्तृत करने के लिए खंगाला जा सकता है।

यह आपके वर्गीकरण-तंत्र की कमी को दूषित रिकॉर्ड के बजाय दर्ज और जाँचे जा सकने वाले डेटा-बिंदु में बदल देता है।

एक Schema जिसमें 'other' है

यह सहायता एजेंट के लिए एक वर्गीकरण उपकरण है। ध्यान दें कि enum में "other" शामिल है और खुले मामले के लिए साथ में category_detail स्ट्रिंग भी है।

क्योंकि tool_use + JSON Schema के माध्यम से संरचित आउटपुट enum को लागू करता है, मॉडल सूची से बाहर का कोई मान लौटा ही नहीं सकता — इसमें जानबूझकर रखा गया other सुरक्षा-मार्ग भी शामिल है।

classify_ticket = {
    "name": "classify_ticket",
    "description": "Classify a support ticket into one category.",
    "input_schema": {
        "type": "object",
        "properties": {
            "category": {
                "type": "string",
                "enum": ["billing", "technical", "account", "other"],
                "description": "Use 'other' ONLY when none of the named categories fit."
            },
            "category_detail": {
                "type": "string",
                "description": "Required when category is 'other': a short phrase naming the real category."
            }
        },
        "required": ["category"]
    }
}

विवरण को NOT अनिवार्य क्यों नहीं करना चाहिए

यहाँ Schema से जुड़ा सबसे महत्वपूर्ण निर्णय है: category_detail को वैकल्पिक रखें, कभी अनिवार्य नहीं।

संरचित आउटपुट का एक मूल नियम है कि किसी फ़ील्ड को केवल तभी अनिवार्य करें जब वह हमेशा मौजूद हो। विवरण फ़ील्ड केवल तब मौजूद होता है जब category का मान other हो — billing, technical और account टिकटों में यह अनुपस्थित रहता है।

यदि आप इसे required में डाल देंगे, तो मॉडल उन मामलों के लिए भी गढ़ी हुई विवरण स्ट्रिंग बनाएगा जिन्हें इसकी ज़रूरत नहीं है, ताकि Schema की शर्त पूरी हो सके। यानी ऐसी शर्त लागू करने के लिए आप मनगढ़ंत बातें पैदा करेंगे जिसकी वास्तव में आवश्यकता ही नहीं थी।

सशर्त आवश्यकता Prompt में रहती है

तो यह कैसे सुनिश्चित करें कि मॉडल other चुनने पर category_detail भरता ही है? यह निर्भरता सशर्त है, इसलिए इसे फ़ील्ड के विवरण और सिस्टम prompt में रखें — Schema की स्थिर required array में नहीं।

नियम को स्पष्ट रूप से लिखें। हर बार अस्पष्ट निर्देशों की तुलना में स्पष्ट मानदंड बेहतर होते हैं।

system = (
    "Classify each ticket using the classify_ticket tool.\n"
    "Pick the most specific named category that fits.\n"
    "Choose 'other' ONLY when no named category applies. "
    "When you choose 'other', you MUST also provide category_detail "
    "as a short noun phrase naming the true category "
    "(e.g. 'partnership inquiry', 'legal request')."
)

tool_choice से संरचित आउटपुट बाध्य करना

यह सुनिश्चित करने के लिए कि मॉडल वर्गीकरण को गद्य के बजाय संरचित डेटा के रूप में लौटाए, टूल कॉल को बाध्य करें। tool_choice को {"type": "tool", "name": "classify_ticket"} पर सेट करने से क्लॉड ठीक उसी टूल का Schema द्वारा सत्यापित इनपुट भेजने के लिए बाध्य होता है।

यदि आपके पास कई निष्कर्षण टूल होते और आप केवल किसी एक संरचित कॉल की गारंटी चाहते, तो tool_choice: "any" काम करता; "auto" मॉडल को पाठ और टूल में से चुनने देता है। एकल बाध्य Schema के लिए टूल का नाम स्पष्ट रूप से दें।

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=512,
    system=system,
    tools=[classify_ticket],
    tool_choice={"type": "tool", "name": "classify_ticket"},
    messages=[{"role": "user", "content": ticket_text}],
)

परिणाम को सुरक्षित रूप से पढ़ना

उपभोग करने वाले हिस्से में enum के आधार पर शाखा चुनें। other समूह में आप category_detail पढ़ते हैं — और आपको इसके कभी-कभी अनुपस्थित होने की अपेक्षा रखनी चाहिए, क्योंकि यह वैकल्पिक है।

सुरक्षात्मक पहुँच (डिफ़ॉल्ट के रूप में खाली स्ट्रिंग) आपके कोड को वैध रूप से अनुपस्थित फ़ील्ड के प्रति मज़बूत रखती है; यही वह व्यवहार है जिसे आपने डिज़ाइन किया था।

block = next(b for b in resp.content if b.type == "tool_use")
result = block.input
category = result["category"]

if category == "other":
    detail = result.get("category_detail", "")
    log_uncategorized(ticket_text, detail)  # capture for later enum growth
else:
    route_to_queue(category)

'other' से enum को विस्तृत करना

विवरण फ़ील्ड केवल वैकल्पिक उपाय नहीं है — यह एक प्रतिक्रिया चक्र है। हर other रिकॉर्ड में ऐसे मामले का मनुष्य द्वारा पढ़ा जा सकने वाला लेबल होता है जिसे आपका वर्गीकरण-तंत्र पहचान नहीं पाया।

समय-समय पर उन विवरणों का समुच्चय बनाएँ। जब "partnership inquiry" जैसा समूह सप्ताह में 40 बार दिखाई दे, तो आपको अपना अगला प्रथम-श्रेणी enum मान मिल गया है। उसे मुक्त-पाठ से एक नामित श्रेणी में बदलें और आपका वर्गीकरणकर्ता अधिक सटीक हो जाएगा — अनुमान से नहीं, वास्तविक डेटा से संचालित।

प्रतिक्रिया के साथ पुनः प्रयास के साथ स्वाभाविक रूप से जुड़ता है

यह पैटर्न सत्यापन के साथ सहजता से काम करता है। यदि कोई परिणाम आपके सशर्त नियम का उल्लंघन करता है — मान लें category का मान other है, लेकिन category_detail खाली लौटा — तो यह एक संरचनात्मक त्रुटि है और प्रतिक्रिया के साथ पुनः प्रयास ऐसी ही त्रुटियों को ठीक करता है।

मॉडल को मूल टिकट, उसका अपना गलत आउटपुट और सटीक सत्यापन त्रुटि भेजें। महत्वपूर्ण बात यह है कि पुनः प्रयास इसलिए मदद करता है क्योंकि आवश्यक जानकारी (वास्तविक श्रेणी) स्रोत में मौजूद है। यदि जानकारी टिकट में अनुपस्थित होती, तो पुनः प्रयास मदद नहीं करता।

if result["category"] == "other" and not result.get("category_detail"):
    feedback = (
        "You returned category='other' but left category_detail empty. "
        "Re-classify and provide a short detail phrase."
    )
    # resend: original ticket + the bad output + this exact error

'other' कब नहीं जोड़ना चाहिए

यह पैटर्न अनिश्चितता के बीच विस्तारशीलता के लिए है — टिकट श्रेणियों, दस्तावेज़ प्रकारों या आशय लेबल जैसी खुले-विश्व वाली वर्गीकरण प्रणालियों के लिए, जहाँ नए मामले आते रहेंगे।

वास्तव में बंद समूह में other न जोड़ें। priority फ़ील्ड के low / medium / high मान परिभाषा के अनुसार संपूर्ण हैं; वहाँ other जोड़ने से मॉडल को वास्तविक निर्णय से बचने का अवसर ही मिलेगा। यह वैकल्पिक मार्ग केवल उन enum के लिए रखें जिनमें सचमुच हर मान की पहले से कल्पना नहीं की जा सकती।

पूरा पैटर्न एक नज़र में

इन सभी हिस्सों को जोड़ने पर आपके पास एक छोटा और मज़बूत अनुबंध होगा:

  • नामित मानों और other वाला Enum — Schema बंद समूह को लागू करता है।
  • वैकल्पिक विवरण फ़ील्ड — कभी अनिवार्य नहीं, इसलिए मॉडल इसे गढ़ेगा नहीं।
  • Prompt + विवरण में सशर्त नियम रहता है: "other होने पर विवरण भरें"।
  • उपभोक्ता enum के आधार पर शाखा चुनता है और विवरण दर्ज करता है।
  • सत्यापन/पुनः प्रयास ऐसे विवरण को पकड़ता है जो नियम के अनुसार अनिवार्य है, लेकिन अनुपस्थित है।

यह स्पष्ट विभाजन है: Schema आकार की गारंटी देता है; prompt व्यवहार की; और चक्र उन बातों को दर्ज करता है जिनकी आपने पहले कल्पना नहीं की थी।

'other' फ़ील्ड डिज़ाइन की त्वरित जाँच

आप एक टिकट-वर्गीकरण टूल बना रहे हैं जिसके category enum में billing, technical, account और other शामिल हैं। आप एक category_detail स्ट्रिंग जोड़ते हैं जिसे मॉडल के other चुनने पर हर बार भरा जाना चाहिए। आप other वाले मामलों में category_detail भरने की आवश्यकता कैसे व्यक्त करेंगे?

पुनरावलोकन: विस्तारशील Enum

मुख्य बातें:

  • बंद enum उन इनपुटों का चुपचाप गलत वर्गीकरण करते हैं जिनकी उन्होंने कभी कल्पना नहीं की; other मान मॉडल को ईमानदार वैकल्पिक मार्ग देता है।
  • other के साथ मुक्त-पाठ विवरण फ़ील्ड रखें, ताकि अप्रत्याशित मामले का वास्तविक स्वरूप दर्ज हो सके।
  • विवरण फ़ील्ड को वैकल्पिक रखें — जो फ़ील्ड अनुपस्थित हो सकती है उसे कभी अनिवार्य न करें, वरना मॉडल उसे गढ़ देगा।
  • सशर्त नियम "other होने पर विवरण भरें" को स्थिर required array में नहीं, बल्कि prompt और फ़ील्ड विवरण में रखें।
  • दर्ज किए गए other विवरणों को खंगालकर समय के साथ वास्तविक प्रथम-श्रेणी मानों से enum को विस्तृत करें।
  • enum लागू करने के लिए tool_use + JSON Schema और संरचनात्मक उल्लंघनों के लिए प्रतिक्रिया के साथ पुनः प्रयास का उपयोग करें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
26
पाठ
104

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

क्या “विस्तार-योग्यता के लिए 'other' वाले Enums” पाठ निःशुल्क है?

हाँ — Claude Architect अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “विस्तार-योग्यता के लिए 'other' वाले Enums” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Claude Architect पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“विस्तार-योग्यता के लिए 'other' वाले Enums” में मैं क्या सीखूँगा?

'other' मान के साथ एक विवरण फ़ील्ड जोड़िए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Claude Architect का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Claude Architect शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Claude Architect शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“विस्तार-योग्यता के लिए 'other' वाले Enums” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Claude Architect पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Claude Architect पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. गारंटीकृत संरचना के लिए tool_use
  2. JSON स्कीमा डिज़ाइन करना
  3. आवश्यक बनाम वैकल्पिक/Nullable फ़ील्ड
  4. विस्तार-योग्यता के लिए 'other' वाले Enums
← Claude Architect पर वापस जाएँ