शून्य, एक और कुछ-शॉट
उदाहरणों की संख्या चुनना।
शून्य, एक और कुछ-शॉट, CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह AI प्रॉम्प्ट इंजीनियरिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
उदाहरणों का विस्तार
उदाहरणों की संख्या से तात्पर्य उन लेबलयुक्त प्रदर्शनों की संख्या से है, जिन्हें वास्तविक प्रश्न से पहले प्रॉम्प्ट में रखा जाता है। शून्य-उदाहरण विधि पूरी तरह मॉडल के पूर्व-प्रशिक्षित पूर्वानुमानों पर निर्भर करती है; कुछ-उदाहरण विधि भारों में कोई बदलाव किए बिना, अनुमान के समय मॉडल को कार्य-विशिष्ट छोटे वितरण के आधार पर ढालती है।
इसे संदर्भ में सीखना (ICL) कहते हैं: ट्रांसफ़ॉर्मर उदाहरणों को अनुक्रम का हिस्सा मानता है और उन पर अप्रत्यक्ष रूप से मेटा-लर्निंग से सीखा गया एक प्रकार का प्रतिगमन करता है। k का चुनाव (उदाहरणों की संख्या) ऐसा अतिपरिमिति है, जिसे आप प्रयोगों से निर्धारित करते हैं; यह पहले से तय सर्वोत्तम प्रचलन नहीं है।
from dataclasses import dataclass
@dataclass
class ICLConfig:
k: int # number of demonstrations
selection: str # 'static' | 'dynamic'
order: str # 'random' | 'similarity' | 'curriculum'
# Zero-shot is simply k=0
cfg = ICLConfig(k=0, selection='static', order='random')ज़ीरो-शॉट कब बेहतर होता है
ज़ीरो-शॉट को तब प्राथमिकता दें, जब कार्य पूर्व-प्रशिक्षण में अच्छी तरह समाहित हो (सारांशण, अनुवाद, सामान्य वर्गीकरण) और उदाहरण आउटपुट के प्रारूप को पक्षपाती बना सकते हों। निर्देश-समायोजित मॉडलों के लिए, स्पष्ट निर्देश और आउटपुट स्कीमा अक्सर उन उदाहरणों से बेहतर होते हैं, जो शैली को सूक्ष्म रूप से एक दिशा में बाँध देते हैं।
ज़ीरो-शॉट टोकन लागत और विलंबता को भी न्यूनतम रखता है तथा बहुसंख्यक-लेबल पक्षपात से बचाता है, जिसमें मॉडल आपके उदाहरणों में सबसे अधिक बार आने वाली श्रेणी का अनुमान जरूरत से ज्यादा लगाता है।
# Zero-shot with explicit schema beats vague few-shot
PROMPT = (
'Classify sentiment as POSITIVE, NEGATIVE, or NEUTRAL.\n'
'Respond with only the label.\n\n'
'Text: ' + user_text + '\nLabel:'
)प्रारूप के आधार के रूप में वन-शॉट
वन-शॉट तब बहुत उपयोगी होता है, जब कार्य वैचारिक रूप से स्पष्ट हो, लेकिन आउटपुट प्रारूप असामान्य या सख्त हो। एक अकेला उदाहरण सही संरचना (जेएसओएन कुंजियाँ, विभाजक, अक्षर-रूप) को गद्य-विवरण की तुलना में कहीं अधिक विश्वसनीय ढंग से सिखाता है।
जब आप टोकन खर्च किए बिना या अनेक उदाहरणों से आने वाले लेबल-वितरण के झुकाव का जोखिम उठाए बिना संरचना को सीमित करना चाहते हों, तब वन-शॉट का उपयोग करें।
ONE_SHOT = (
'Extract entities as JSON.\n\n'
'Input: Apple released the iPhone in Cupertino.\n'
'Output: {"org": ["Apple"], "product": ["iPhone"], "loc": ["Cupertino"]}\n\n'
'Input: ' + query + '\nOutput:'
)फ्यू-शॉट और k का वक्र
k के सापेक्ष प्रदर्शन शायद ही कभी एकरूप ढंग से बढ़ता है। उदाहरणों के संदर्भ में जगह भरने, ध्यान को बाँटने और सक्रिय क्वेरी को मॉडल के हालिया-ध्यान केंद्र से दूर धकेलने पर प्रदर्शन आमतौर पर बढ़ता है, फिर स्थिर हो जाता है और अंततः घटता है।
अलग रखे गए समूह पर k को {1, 2, 4, 8, 16} में अनुभवजन्य रूप से जाँचें। सर्वोत्तम k कार्य की जटिलता, उदाहरण की लंबाई और मॉडल के प्रभावी संदर्भ-उपयोग पर निर्भर करता है, जो आमतौर पर उसकी घोषित संदर्भ-सीमा से बहुत कम होता है।
def sweep_k(eval_set, candidates, ks=(1,2,4,8,16)):
results = {}
for k in ks:
acc = evaluate(build_prompt(candidates[:k]), eval_set)
results[k] = acc
return max(results, key=results.get)ICL क्यों काम करता है: अप्रत्यक्ष अनुमान
शोध ICL को मॉडल द्वारा किए जाने वाले अप्रत्यक्ष बायज़ियन अनुमान के रूप में प्रस्तुत करता है: उदाहरण उस गुप्त कार्य-अवधारणा को खोजने में सहायता करते हैं, जिसे मॉडल ने पूर्व-प्रशिक्षण के दौरान पहले ही सीख लिया है। उदाहरण कार्यों पर पश्च-प्रायिकता को सीमित करने वाले प्रमाण की तरह काम करते हैं, नए ज्ञान की तरह नहीं।
इससे एक प्रतिकूल लगने वाली बात स्पष्ट होती है: उदाहरणों में गलत लेबल होने पर भी काफी सटीकता बनी रह सकती है, क्योंकि प्रमुख संकेत प्रारूप और लेबल-क्षेत्र होते हैं, न कि इनपुट और लेबल के बीच का संबंध।
# Min, Lyu et al. (2022): label correctness matters less than
# - the input distribution
# - the label space (which classes exist)
# - the format / structure
# Implication: invest in representative inputs + valid label setटोकन बजट और लागत के समझौते
हर शॉट संदर्भ और धन खर्च करता है। लंबे उदाहरणों के साथ चार उदाहरण क्वेरी से कई गुना बड़े हो सकते हैं। प्रति-सटीकता-अंक लागत का माप निकालें: यदि k=8, k=4 की तुलना में दोगुने टोकन पर 0.5% लाभ देता है, तो उत्पादन में k=4 बेहतर है।
अधिक मात्रा में अनुरोधों वाले कार्यप्रवाहों के लिए, स्थिर उदाहरण-खंड की प्रॉम्प्ट-कैशिंग को प्राथमिकता दें, ताकि बार-बार दिए जाने वाले उदाहरणों का शुल्क लिया जाए और उन्हें केवल एक बार संसाधित किया जाए।
def cost_efficiency(acc_by_k, tokens_by_k, price_per_1k):
return {
k: acc_by_k[k] / (tokens_by_k[k] / 1000 * price_per_1k)
for k in acc_by_k
}
# Pick the k maximizing accuracy per dollar, not raw accuracyबहुसंख्यक-लेबल और स्थिति-पक्षपात
फ्यू-शॉट प्रॉम्प्ट में छिपे हुए पक्षपात होते हैं। बहुसंख्यक-लेबल पक्षपात मॉडल को उदाहरणों में सबसे अधिक बार आने वाली श्रेणी की ओर झुकाता है। हालिया-प्रभाव पक्षपात अंतिम उदाहरण को जरूरत से ज्यादा महत्व देता है। सामान्य-टोकन पक्षपात अक्सर दिखाई देने वाले टोकनों को प्राथमिकता देता है।
संदर्भ-आधारित अंशांकन जैसी अंशांकन तकनीकें विषय-वस्तु से मुक्त इनपुट (उदाहरण के लिए, N/A टोकन) पर मॉडल की पूर्व-प्रायिकता का अनुमान लगाती हैं और उससे भाग देकर उसे हटा देती हैं, जिससे फ्यू-शॉट वर्गीकारकों की स्थिरता बहुत बढ़ जाती है।
# Contextual calibration (Zhao et al. 2021)
p_cf = model_probs(prompt_with_input('N/A')) # content-free prior
W = 1.0 / p_cf # diagonal correction
def calibrated(probs):
return normalize(W * probs)उदाहरण-समूह का संतुलन
बहुसंख्यक-लेबल पक्षपात का प्रतिकार करने के लिए, उदाहरणों में श्रेणियों को संतुलित रखें और उनका क्रम बदलते रहें। k=4 वाले द्विआधारी वर्गीकरण में 3:1 के बजाय 2 सकारात्मक और 2 नकारात्मक उदाहरण लें तथा उनका क्रम बदल दें।
उत्पादन कार्यों के लिए, महत्वपूर्ण आयामों (लंबाई, भाव-शैली, कठिनाई) के आधार पर संतुलन रखें, ताकि मॉडल उस एक ही शैली में सीमित न हो जाए, जिसे उसने सबसे अधिक बार देखा है।
import random
def balanced_demos(pool, k, label_fn):
by_label = {}
for ex in pool:
by_label.setdefault(label_fn(ex), []).append(ex)
per = k // len(by_label)
picks = [e for lst in by_label.values() for e in random.sample(lst, per)]
random.shuffle(picks)
return picksफ्यू-शॉट बनाम फ़ाइन-ट्यूनिंग
जब कार्य बार-बार बदलता हो, डेटा कम हो या आप समायोजित मॉडल को अपने सर्वर पर चला न सकते हों, तब फ्यू-शॉट सही साधन है। फ़ाइन-ट्यूनिंग तब बेहतर होती है, जब आपके पास हजारों उदाहरण हों, प्रति-अनुरोध न्यूनतम विलंबता चाहिए या आप प्रारूप को मॉडल में स्थायी रूप से शामिल करना चाहते हों, ताकि प्रॉम्प्ट छोटे रहें।
उत्पादन में अपनाया जाने वाला एक सामान्य मार्ग यह है: फ्यू-शॉट से प्रारंभिक नमूना बनाएँ, सफल निष्पादन-क्रम एकत्र करें, फिर उन्हें फ़ाइन-ट्यूनिंग में संक्षिप्त रूप से शामिल करें, ताकि उदाहरणों के टोकन पूरी तरह हटाए जा सकें।
# Decision heuristic
if num_labeled < 500 or task_volatility == 'high':
strategy = 'few-shot ICL'
elif latency_budget_ms < 200 or prompt_token_cost_dominant:
strategy = 'fine-tune + zero-shot'
else:
strategy = 'few-shot now, distill later'तर्क कार्यों को शॉट से अधिक की आवश्यकता होती है
बहु-चरणीय तर्क के लिए, केवल उत्तरों वाले साधारण फ्यू-शॉट युग्म हानिकारक हो सकते हैं: मॉडल ऐसा उत्तर देना सीखता है, जिसे वह उचित नहीं ठहरा सकता। फ्यू-शॉट को विचार-श्रृंखला वाले उदाहरणों के साथ जोड़ें, जो केवल अंतिम लेबल नहीं, बल्कि तर्क-क्रम भी दिखाते हों।
शॉट की संख्या तर्क की गहराई के साथ मिलकर असर डालती है; अंकगणित और तर्क संबंधी मानकों पर अक्सर k=2 उच्च-गुणवत्ता वाले विचार-श्रृंखला उदाहरण, केवल उत्तर वाले k=8 उदाहरणों से बेहतर होते हैं।
COT_SHOT = (
'Q: A shop had 23 apples, used 20, bought 6 more. How many now?\n'
'A: Start 23, minus 20 leaves 3, plus 6 is 9. Answer: 9\n\n'
'Q: ' + question + '\nA:'
)k के लिए मूल्यांकन-परीक्षण ढाँचा
शॉट चुनने को परीक्षण-ढाँचे से समर्थित अनुभवजन्य खोज मानें। एक सत्यापन-समूह अलग रखें, कई यादृच्छिक बीजों से उदाहरणों के क्रम को नियंत्रित करें और औसत तथा प्रसरण दर्ज करें, क्योंकि केवल क्रम बदलने से ही फ्यू-शॉट सटीकता कई अंकों तक बदल सकती है।
हर k के टोकन-गणना और विलंबता दर्ज करें, ताकि अंतिम चयन केवल सटीकता नहीं, बल्कि पूरे उद्देश्य को बेहतर बनाए।
def harness(pool, val, ks, seeds=5):
report = {}
for k in ks:
accs = []
for s in range(seeds):
demos = balanced_demos(pool, k, label_fn)
accs.append(evaluate(build_prompt(demos), val))
report[k] = (mean(accs), stdev(accs))
return reportत्वरित जाँच
शॉट चयन और ICL के पक्षपात की अपनी समझ जाँचें।
पुनरावलोकन
मुख्य बातें:
kसमायोजित किया जा सकने वाला अतिपरामीटर है; इसे अलग-अलग मानों पर जाँचें और बढ़ने-स्थिर होने-घटने वाले वक्र पर ध्यान दें।- ज़ीरो-शॉट प्रसिद्ध कार्यों के लिए उपयुक्त है; वन-शॉट सख्त प्रारूपों का आधार बनाता है; फ्यू-शॉट कार्य-वितरण के आधार पर मॉडल को ढालता है।
- ICL पूर्व-प्रशिक्षित कार्य को खोजकर काम करता है, इसलिए लेबल की शुद्धता की तुलना में प्रारूप और लेबल-क्षेत्र अधिक प्रभावशाली होते हैं।
- संतुलन, क्रम-परिवर्तन और संदर्भ-आधारित अंशांकन से बहुसंख्यक-लेबल, हालिया-प्रभाव और सामान्य-टोकन पक्षपात का प्रतिकार करें।
- प्रति-धनराशि सटीकता को बेहतर बनाएँ, तर्क कार्यों को विचार-श्रृंखला उदाहरणों के साथ जोड़ें और स्थिर फ्यू-शॉट प्रॉम्प्ट को फ़ाइन-ट्यूनिंग में संक्षिप्त रूप से शामिल करें।
एआई शिक्षक के साथ AI प्रॉम्प्ट इंजीनियरिंग सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 53
- पाठ
- 199
अक्सर पूछे जाने वाले प्रश्न
क्या “शून्य, एक और कुछ-शॉट” पाठ निःशुल्क है?
हाँ — AI प्रॉम्प्ट इंजीनियरिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “शून्य, एक और कुछ-शॉट” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“शून्य, एक और कुछ-शॉट” में मैं क्या सीखूँगा?
उदाहरणों की संख्या चुनना। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI प्रॉम्प्ट इंजीनियरिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या AI प्रॉम्प्ट इंजीनियरिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“शून्य, एक और कुछ-शॉट” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस AI प्रॉम्प्ट इंजीनियरिंग पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर AI प्रॉम्प्ट इंजीनियरिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- शून्य, एक और कुछ-शॉट
- प्रभावी उदाहरण तैयार करना
- उदाहरणों का क्रम और नवीनता
- गतिशील कुछ-शॉट चयन