प्रॉम्प्ट डिज़ाइन से जुड़ी रणनीतियां

प्रॉम्प्ट डिज़ाइन से उन लोगों को मदद मिलती है जो मशीन लर्निंग (एमएल) के इस्तेमाल का पहली बार इस्तेमाल कर रहे हैं. इससे, मॉडल का आउटपुट कम से कम खर्च करना पड़ता है. ध्यान से क्राफ़्ट करके, मॉडल में बदलाव किया जा सकता है, ताकि मनमुताबिक नतीजा मिल सके. प्रॉम्प्ट डिज़ाइन, इस्तेमाल के किसी खास उदाहरण के हिसाब से भाषा के मॉडल को बदलने का एक असरदार तरीका है.

भाषा के मॉडल, खास तौर पर बड़े लैंग्वेज मॉडल (एलएलएम) को बहुत सारे टेक्स्ट डेटा का इस्तेमाल करके ट्रेनिंग दी जाती है. ऐसा इसलिए किया जाता है, ताकि शब्दों के पैटर्न और उनके बीच के संबंधों को समझा जा सके. जब कुछ टेक्स्ट (प्रॉम्प्ट) दिया जाता है, तो भाषा मॉडल यह अनुमान लगा सकते हैं कि आगे क्या आने वाला है, जैसे कि एक बेहतर ऑटोकंप्लीट टूल किया जाने वाला टूल. इसलिए, प्रॉम्प्ट डिज़ाइन करते समय, उन अलग-अलग फ़ैक्टर पर ध्यान दें जो मॉडल पर आने वाले समय के हिसाब से अनुमान लगा सकते हैं.

हालांकि, प्रॉम्प्ट डिज़ाइन करने का कोई सही या गलत तरीका नहीं है, फिर भी कुछ सामान्य रणनीतियां हैं, जिनका इस्तेमाल करके मॉडल के जवाबों पर असर डाला जा सकता है. इस सेक्शन में, प्रॉम्प्ट डिज़ाइन से जुड़ी कुछ आम रणनीतियों के बारे में बताया गया है.

साफ़ तौर पर निर्देश दें

मॉडल के लिए निर्देश देने का मतलब है कि मॉडल को क्या करना है. यह रणनीति, मॉडल के व्यवहार को पसंद के मुताबिक बनाने का असरदार तरीका हो सकती है. पक्का करें कि आपने जो निर्देश दिए हैं वे साफ़ और कम शब्दों में लिखे हों.

इस प्रॉम्प्ट में टेक्स्ट का एक ब्लॉक होता है और मॉडल को इसके बारे में खास जानकारी देने के लिए कहा जाता है:

मॉडल में कम शब्दों में जवाब दिया गया था, लेकिन हो सकता है कि आपको जवाब इस तरह लिखना हो कि उसे आसानी से समझा जा सके. उदाहरण के लिए, इस प्रॉम्प्ट में जवाब लिखने के लिए निर्देश शामिल है. यह पांचवीं कक्षा के छात्र-छात्राओं के लिए आसान हो और समझ सकता है:

जवाब लिखने का निर्देश, ताकि पांचवीं क्लास के छात्र/छात्रा को यह समझ आ सके कि ऐसा जवाब मिला है जिसे समझना आसान है.

सारांश:

  • मॉडल को उसके व्यवहार को पसंद के मुताबिक बनाने के लिए निर्देश दें.
  • हर निर्देश साफ़ तौर पर और कम शब्दों में लिखें.

उदाहरण शामिल करें

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

ज़ीरो-शॉट बनाम कुछ शॉट में दिए गए प्रॉम्प्ट

नीचे दिया गया ज़ीरो-शॉट प्रॉम्प्ट, मॉडल से सबसे सही एक्सप्लेनेशन चुनने के लिए कहता है.

अगर आपके इस्तेमाल के उदाहरण के लिए मॉडल को कम शब्दों वाले जवाब देना ज़रूरी है, तो आप प्रॉम्प्ट में उदाहरण शामिल कर सकते हैं, जो कम शब्दों वाले जवाबों को प्राथमिकता देता है.

नीचे दिए गए प्रॉम्प्ट में दो उदाहरण दिए गए हैं, जो छोटे एक्सप्लेनेशंस को प्राथमिकता देते हैं. जवाब में, आप देख सकते हैं कि उदाहरणों ने मॉडल को पहले दिए गए लंबे एक्सप्लेनेशन (एक्सप्लेनेशन 1) के बजाय, छोटे एक्सप्लेनेशन (एक्सप्लेनेशन2) को चुनने का निर्देश दिया है.

उदाहरणों की सही संख्या पता करना

सबसे बेहतर नतीजे पाने के लिए, प्रॉम्प्ट में दिए जाने वाले उदाहरणों की संख्या के साथ प्रयोग किया जा सकता है. PaLM जैसे मॉडल, अक्सर कुछ उदाहरणों का इस्तेमाल करके पैटर्न तय कर सकते हैं. हालांकि, आपको यह एक्सपेरिमेंट करना पड़ सकता है कि कितने उदाहरण से मनचाहे नतीजे मिल सकते हैं. BERT जैसे आसान मॉडल के लिए, आपको और उदाहरणों की ज़रूरत पड़ सकती है. इसी दौरान, अगर बहुत ज़्यादा उदाहरण शामिल किए जाते हैं, तो मॉडल, उदाहरणों के जवाब को ओवरफ़िट करना शुरू कर सकता है.

एंटीपैटर्न के बजाय पैटर्न दिखाने के लिए, उदाहरणों का इस्तेमाल करें

उदाहरण के तौर पर, जिस पैटर्न को फ़ॉलो करना है उसे दिखाने के लिए उदाहरणों का इस्तेमाल करना, उदाहरणों से बचने के लिए एक एंटीपैटर्न दिखाने से ज़्यादा असरदार है.

नेगेटिव पैटर्न:

पॉज़िटिव पैटर्न:

सारांश:

  • प्रॉम्प्ट में तुरंत जवाब देने के उदाहरण शामिल करने से, मॉडल को जवाब देने का तरीका जानने में मदद मिलती है.
  • जिन पैटर्न को फ़ॉलो करना है उनके उदाहरण देने के बजाय, पैटर्न के उदाहरणों से बचें.
  • शामिल किए जाने वाले प्रॉम्प्ट की संख्या डालकर देखें. मॉडल के आधार पर, कुछ उदाहरण मॉडल के व्यवहार को बदलने में असर नहीं डालते. बहुत ज़्यादा उदाहरणों की वजह से, मॉडल ज़रूरत से ज़्यादा फ़िट हो जाता है.

मॉडल को आंशिक इनपुट पूरा करने दें

जनरेटिव लैंग्वेज मॉडल, अपने-आप पूरा होने वाले एक बेहतर टूल की तरह काम करते हैं. जब कॉन्टेंट का कुछ हिस्सा दिया जाता है, तो मॉडल बाकी कॉन्टेंट दे सकता है या उसे जवाब के तौर पर कॉन्टेंट ही दे सकता है. ऐसा करते समय, अगर आप कोई उदाहरण या संदर्भ शामिल करते हैं, तो मॉडल उन उदाहरणों या संदर्भ को ध्यान में रख सकता है.

इस उदाहरण में, निर्देश और इकाई इनपुट के साथ प्रॉम्प्ट दिया गया है:

वैसे तो मॉडल ने निर्देश दिया था, फिर भी कभी-कभी सामान्य भाषा में निर्देश लिखना मुश्किल हो सकता है. इस मामले में, आप एक उदाहरण और एक रिस्पॉन्स प्रीफ़िक्स दे सकते हैं और मॉडल को इसे पूरा करने दें:

ध्यान दें कि आउटपुट से "वैफ़ल" कैसे बाहर रखे गए, क्योंकि यह कॉन्टेक्स्ट में एक मान्य फ़ील्ड के तौर पर शामिल नहीं किया गया था.

मॉडल को इसके रिस्पॉन्स को फ़ॉर्मैट करने का अनुरोध करें

जवाब को पूरा करने की रणनीति से भी, जवाब को फ़ॉर्मैट करने में मदद मिल सकती है. नीचे दिए गए उदाहरण में, मॉडल को निबंध की आउटलाइन तैयार करने का निर्देश दिया गया है:

प्रॉम्प्ट में आउटलाइन का फ़ॉर्मैट तय नहीं किया गया है, लेकिन मॉडल ने आपके लिए एक फ़ॉर्मैट चुना. मॉडल से किसी फ़ॉर्मैट में आउटलाइन बनाए रखने के लिए, उस टेक्स्ट को जोड़ा जा सकता है जो आउटलाइन की शुरुआत को दिखाता हो. मॉडल को आपके शुरू किए गए पैटर्न के हिसाब से पूरा करने दें.

सारांश:

  • अगर मॉडल के लिए इनपुट का कुछ हिस्सा इस्तेमाल किया जाता है, तो मॉडल उस इनपुट को पूरा करता है. यह इनपुट में मौजूद उदाहरण या कॉन्टेक्स्ट के आधार पर दिया जाता है.
  • सवाल के जवाब को आम बोलचाल की भाषा में बताने के बजाय, मॉडल पर पूरा इनपुट देना, कभी-कभी आसान होता है.
  • किसी सवाल का अधूरा जवाब जोड़ने से, मॉडल को आपकी पसंद के पैटर्न या फ़ॉर्मैट का पालन करने में मदद मिल सकती है.

काम की जानकारी जोड़ना

समस्या को हल करने के लिए, मॉडल को ज़रूरी निर्देश और जानकारी दी जा सकती है. इसके लिए, यह नहीं देखा जा सकता कि मॉडल में सभी ज़रूरी जानकारी मौजूद है.

इस उदाहरण में मॉडल से, राऊटर के लिए समस्या हल करने का दिशा-निर्देश देने के लिए कहा गया है:

जवाब में किसी आम समस्या को हल करने की जानकारी दी गई है, जो खास तौर पर राऊटर या एलईडी इंडिकेटर लाइटों की स्थिति के बारे में नहीं है.

किसी खास राऊटर के लिए, रिस्पॉन्स को पसंद के मुताबिक बनाने के लिए, राऊटर की समस्या हल करने वाली गाइड में निर्देश जोड़ा जा सकता है. यह गाइड, जवाब देते समय रेफ़रंस के तौर पर जोड़ सकती है.

सारांश:

  • प्रॉम्प्ट में वह जानकारी (कॉन्टेक्स्ट) शामिल करें जिसका इस्तेमाल आपको मॉडल रिस्पॉन्स जनरेट करते समय करना है.
  • मॉडल को निर्देश दें कि क्या करना है.

प्रीफ़िक्स जोड़ें

प्रीफ़िक्स ऐसा शब्द या वाक्यांश होता है जिसे प्रॉम्प्ट कॉन्टेंट में जोड़ा जाता है. इससे कई काम किए जा सकते हैं. हालांकि, यह इस बात पर निर्भर करता है कि प्रीफ़िक्स कहां लगाया गया है:

  • इनपुट प्रीफ़िक्स: मॉडल में इनपुट सिग्नल के ऐसे हिस्सों को जोड़ना जो इनपुट सिग्नल के शब्दों के हिसाब से काम के हों. उदाहरण के लिए, "अंग्रेज़ी:" और "फ़्रेंच:" प्रीफ़िक्स से दो अलग-अलग भाषाओं को तय करते हैं.
  • आउटपुट प्रीफ़िक्स: भले ही आउटपुट, मॉडल से जनरेट होता है, लेकिन प्रॉम्प्ट में आउटपुट के लिए प्रीफ़िक्स जोड़ा जा सकता है. आउटपुट प्रीफ़िक्स, मॉडल को इस बारे में जानकारी देता है कि रिस्पॉन्स के तौर पर क्या मिल सकता है. उदाहरण के लिए, आउटपुट प्रीफ़िक्स "JSON:" मॉडल को बताता है कि आउटपुट, JSON फ़ॉर्मैट में होना चाहिए.
  • प्रीफ़िक्स के उदाहरण: कुछ शॉट में, उदाहरणों में प्रीफ़िक्स जोड़ने से ऐसे लेबल मिलते हैं जिनका इस्तेमाल मॉडल, आउटपुट जनरेट करते समय कर सकता है. इससे आउटपुट कॉन्टेंट को पार्स करना आसान हो जाता है.

नीचे दिए गए उदाहरण में, इनपुट प्रीफ़िक्स "Text:" है और "इसका जवाब है:" आउटपुट प्रीफ़िक्स है.

अलग-अलग पैरामीटर वैल्यू के साथ प्रयोग करें

किसी मॉडल को भेजे जाने वाले हर कॉल में पैरामीटर वैल्यू होती हैं, जो यह कंट्रोल करती हैं कि मॉडल कैसे रिस्पॉन्स जनरेट करता है. यह मॉडल अलग-अलग पैरामीटर वैल्यू के लिए अलग-अलग नतीजे जनरेट कर सकता है. टास्क के लिए सबसे अच्छे वैल्यू पाने के लिए, अलग-अलग पैरामीटर वैल्यू के साथ प्रयोग करें. अलग-अलग मॉडल के लिए उपलब्ध पैरामीटर अलग-अलग हो सकते हैं. सबसे आम पैरामीटर ये हैं:

  • ज़्यादा से ज़्यादा आउटपुट टोकन
  • तापमान
  • टॉप-के
  • टॉप-पी

ज़्यादा से ज़्यादा आउटपुट टोकन

जवाब के तौर पर जनरेट किए जा सकने वाले टोकन की ज़्यादा से ज़्यादा संख्या. एक टोकन में करीब चार वर्ण होते हैं. 100 टोकन करीब 60-80 शब्दों के होते हैं.

छोटे जवाबों के लिए कम वैल्यू और लंबे जवाबों के लिए ज़्यादा वैल्यू तय करें.

तापमान

तापमान का इस्तेमाल, जवाब जनरेट करने के दौरान सैंपलिंग के लिए किया जाता है. topP और topK को लागू करने पर, इस तापमान को सैंपल के तौर पर इस्तेमाल किया जाता है. तापमान से टोकन चुनने में रैंडमनेस का लेवल कंट्रोल होता है. कम तापमान ऐसे संकेतों के लिए अच्छा होता है जिन्हें तय करने वाले और कम विस्तार से जवाब देने की ज़रूरत होती है. वहीं, ज़्यादा तापमान पर अलग-अलग तरह के या क्रिएटिव नतीजे मिल सकते हैं. 0 तापमान डिटरमिनिस्टिक होता है. इसका मतलब है कि सबसे ज़्यादा संभावना वाले रिस्पॉन्स को हमेशा चुना जाता है.

ज़्यादातर मामलों में, तापमान 0.2 से शुरू करके देखें. अगर मॉडल बहुत सामान्य, बहुत छोटा रिस्पॉन्स देता है या मॉडल, फ़ॉलबैक रिस्पॉन्स देता है, तो तापमान बढ़ाकर देखें.

टॉप-के

टॉप-K में, आउटपुट के लिए मॉडल चुनने का तरीका बदलता है. 1 के टॉप-K का मतलब है कि मॉडल की शब्दावली में मौजूद सभी टोकन में, चुना गया अगला टोकन सबसे ज़्यादा है. इसे ग्रीडी डिकोडिंग भी कहा जाता है. वहीं, 3 के टॉप-K का मतलब है कि तापमान का इस्तेमाल करके, अगले तीन संभावित टोकन में से अगले टोकन को चुना जाता है.

टोकन चुनने के हर चरण के लिए, सबसे ज़्यादा संभावना वाले टॉप-K टोकन का सैंपल लिया जाता है. इसके बाद, टॉप-पी के हिसाब से टोकन को और फ़िल्टर किया जाता है. साथ ही, तापमान सैंपलिंग का इस्तेमाल करके चुने गए आखिरी टोकन के हिसाब से, टोकन फ़िल्टर किए जाते हैं.

ज़्यादा रैंडम रिस्पॉन्स के लिए कम वैल्यू और ज़्यादा रैंडम रिस्पॉन्स के लिए ज़्यादा वैल्यू तय करें. डिफ़ॉल्ट टॉप-K 40 है.

टॉप-पी

टॉप-P, मॉडल के आउटपुट के लिए टोकन चुनने का तरीका बदलता है. सबसे ज़्यादा (टॉप-K देखें) से लेकर सबसे कम संभावना तक, टोकन चुने जाते हैं. ऐसा तब तक किया जाता है, जब तक कि उनकी प्रॉबबिलिटी का योग, टॉप-P वैल्यू के बराबर न हो जाए. उदाहरण के लिए, अगर टोकन A, B, और C की संभावना 0.3, 0.2, और 0.1 है और टॉप-P वैल्यू 0.5 है, तो मॉडल तापमान का इस्तेमाल करके अगले टोकन के तौर पर A या B चुनेगा और C को कैंडिडेट के तौर पर शामिल नहीं करेगा.

ज़्यादा रैंडम रिस्पॉन्स के लिए कम वैल्यू और ज़्यादा रैंडम रिस्पॉन्स के लिए ज़्यादा वैल्यू तय करें. डिफ़ॉल्ट टॉप-पी 0.95 है.

तुरंत दोहराने की रणनीतियां

प्रॉम्प्ट डिज़ाइन, बार-बार इस्तेमाल की जाने वाली एक प्रोसेस है. इसमें, आपको लगातार मनचाहा जवाब पाने के लिए, कुछ बार दोहराना पड़ता है. इस सेक्शन में कुछ ऐसी चीज़ों के बारे में जानकारी दी गई है जिन्हें अपने प्रॉम्प्ट के हिसाब से दोहराया जाता है.

अलग-अलग वाक्यांशों का इस्तेमाल करें

अपने प्रॉम्प्ट में अलग-अलग शब्दों या वाक्यांशों का इस्तेमाल करने पर, मॉडल से अलग-अलग जवाब मिलते हैं. भले ही, सभी का मतलब एक ही हो. अगर आपको प्रॉम्प्ट से उम्मीद के मुताबिक नतीजे नहीं मिल रहे हैं, तो इसे अलग से बोलकर देखें.

मिलते-जुलते टास्क पर स्विच करें

अगर मॉडल को किसी टास्क के लिए दिए गए निर्देशों का पालन करने में समस्या आ रही है, तो उसे एक ऐसे टास्क के लिए निर्देश दें जिससे वही नतीजा मिलता हो.

यह प्रॉम्प्ट, मॉडल को पहले से तय की गई कैटगरी का इस्तेमाल करके, किताब को किसी कैटगरी में बांटने के बारे में बताता है.

जवाब सही है, लेकिन मॉडल विकल्पों की सीमा के अंदर नहीं रहा. इसके अलावा, आपके पास यह भी चुनने का विकल्प होता है कि जवाब के तौर पर सिर्फ़ एक विकल्प दिया जाए, न कि पूरे वाक्य में. इस स्थिति में, निर्देशों को एक से ज़्यादा विकल्प वाले सवाल के तौर पर फिर से समझा जा सकता है. साथ ही, मॉडल को एक विकल्प चुनने के लिए कहा जा सकता है.

प्रॉम्प्ट कॉन्टेंट का क्रम बदलना

प्रॉम्प्ट में कॉन्टेंट के क्रम की वजह से कभी-कभी रिस्पॉन्स पर असर पड़ सकता है. कॉन्टेंट का क्रम बदलकर देखें और देखें कि इससे जवाब पर क्या असर पड़ता है.

Version 1:
[examples]
[context]
[input]

Version 2:
[input]
[examples]
[context]

Version 3:
[examples]
[input]
[context]

फ़ॉलबैक जवाब

जब प्रॉम्प्ट या रिस्पॉन्स, सुरक्षा फ़िल्टर को ट्रिगर करता है, तब मॉडल से मिलने वाला रिस्पॉन्स, फ़ॉलबैक रिस्पॉन्स होता है. फ़ॉलबैक रिस्पॉन्स का एक उदाहरण यह है कि "मैं इसमें आपकी मदद नहीं कर सकता, क्योंकि मेरे पास सिर्फ़ एक लैंग्वेज मॉडल है."

अगर मॉडल, फ़ॉलबैक रिस्पॉन्स के साथ जवाब देता है, तो तापमान बढ़ाकर देखें.

ऐसा करने से बचें

  • तथ्यों पर आधारित जानकारी जनरेट करने के लिए, मॉडल का इस्तेमाल करने से बचें.
  • इसका इस्तेमाल गणित और लॉजिक से जुड़े सवालों पर ध्यान से करें.

अगले चरण

  • प्रॉम्प्ट डिज़ाइन के बारे में अच्छी तरह से समझने के बाद, Google AI Studio का इस्तेमाल करके अपने प्रॉम्प्ट लिखने की कोशिश करें.
  • मल्टीमोडल प्रॉम्प्ट के बारे में जानने के लिए, मल्टीमॉडल कॉन्सेप्ट की खास जानकारी देखें.