प्रॉम्पटिंग और प्रॉम्प्ट इंजीनियरिंग 2023 में सबसे अधिक मांग वाले कौशल हैं । बड़े भाषा मॉडल एलएलएम के तेजी से विकास ने एआई के इस नए अनुशासन का उदय देखा है जिसे प्रॉम्प्ट इंजीनियरिंग कहा जाता है। इस लेख में, आइए संक्षेप में देखें कि प्रॉम्प्टिंग क्या है, प्रॉम्प्ट इंजीनियर क्या करते हैं और प्रॉम्प्ट के विभिन्न तत्व जिनके साथ एक प्रॉम्प्ट इंजीनियर काम करता है।
प्रॉम्प्ट केवल वह इनपुट है जो आप "प्रशिक्षित" मॉडल को प्रदान करते हैं। जब मैं प्रशिक्षित मॉडल कहता हूं, तो मॉडल का वजन स्थिर या स्थिर होता है और संकेत प्रक्रिया के दौरान बदलने वाला नहीं है। अब आप पूछ सकते हैं कि यह अनुमान से किस प्रकार भिन्न है क्योंकि हम मशीन लर्निंग मॉडल पर मॉडल का प्रशिक्षण, तैनाती और अनुमान चला रहे हैं। मुद्दा यह है कि अनुमान के साथ, इनपुट तय हो गया है। हम इसे कभी नहीं बदलते हैं और जो भी मॉडल आउटपुट के रूप में देता है, हम उसे परिणाम के रूप में स्वीकार करते हैं। छवि वर्गीकरण को एक उदाहरण कार्य के रूप में सोचें।
हालाँकि, संकेत देने के साथ, आप एक इनपुट तक ही सीमित नहीं हैं। आप मॉडल के व्यवहार को बेहतर बनाने के लिए इनपुट को अपनी आवश्यकताओं के अनुसार बदल सकते हैं। आप मॉडल को सही उत्तर देने के इरादे से निर्देश दे रहे हैं। जब आप अनुमान लगाने के लिए मॉडल को स्वीकार करते हैं, तो संकेत के साथ, आप मॉडल की क्षमताओं और सीमाओं का अध्ययन कर रहे होते हैं।
इन इनपुटों को मौजूदा समस्या के अनुरूप डिजाइन करने या इंजीनियरिंग करने की कला ताकि आपकी सर्वोत्तम सेवा हो सके, एक बिल्कुल नए अनुशासन को जन्म देती है जिसे प्रॉम्प्ट इंजीनियरिंग कहा जाता है।
प्रॉम्प्ट इंजीनियरिंग में उतरने से पहले, आइए उदाहरणों के साथ प्रॉम्प्ट इंजीनियर करने की प्रेरणा या आवश्यकता को समझें। मान लीजिए कि मैं किसी दिए गए परिच्छेद को संक्षेप में प्रस्तुत करना चाहता हूं। इसलिए मैं इनपुट के रूप में विकिपीडिया से एक बड़ा अंश देता हूं और अंत में कहता हूं, " उपरोक्त पैराग्राफ को संक्षेप में प्रस्तुत करें "। एलएलएम से उत्तर प्राप्त करने के लिए प्रॉम्प्ट में सरल निर्देश प्रदान करने के इस तरीके को इंस्ट्रक्शन प्रॉम्प्टिंग के रूप में जाना जाता है।
आइए गणित के थोड़े अधिक जटिल मामले की ओर बढ़ते हैं और एलएलएम को दो संख्याओं को गुणा करने के लिए कहते हैं। आइए संकेत का प्रयास करें, " 2343*1232 क्या है"। हमें जो उत्तर मिलता है वह है " 23431232 ", जो स्पष्ट रूप से दो संख्याओं का गुणन नहीं है बल्कि दोनों को एक साथ रखा गया है।
अब मैं प्रॉम्प्ट को संशोधित करता हूं और अधिक विशिष्ट होने के लिए प्रॉम्प्ट में एक अतिरिक्त पंक्ति जोड़ता हूं, " 2343 को 1232 से गुणा करने पर क्या होता है। गुणा के बाद मुझे सटीक उत्तर दें "। अब हमें एलएलएम से सही उत्तर " 2886576 " मिलता है।
तो, स्पष्ट रूप से मॉडल के आउटपुट की गुणवत्ता प्रॉम्प्ट की गुणवत्ता से निर्धारित होती है। यहीं पर त्वरित इंजीनियरिंग काम आती है। एक प्रॉम्प्ट इंजीनियर का लक्ष्य एक मॉडल से आउटपुट की गुणवत्ता का आकलन करना और बेहतर आउटपुट प्राप्त करने के लिए प्रॉम्प्ट में सुधार के क्षेत्रों की पहचान करना है। इसलिए प्रॉम्प्ट इंजीनियरिंग एलएलएम को समझने और अच्छे प्रॉम्प्ट डिजाइन करने के इरादे से परीक्षण और त्रुटि द्वारा एलएलएम की क्षमताओं और सीमाओं का अध्ययन करने का एक उच्च प्रायोगिक अनुशासन है।
प्रॉम्प्ट को इंजीनियर या डिज़ाइन करने के लिए, हमें प्रॉम्प्ट के विभिन्न तत्वों को समझना होगा। एक प्रॉम्प्ट में निम्नलिखित में से कोई एक या अधिक तत्व शामिल हो सकते हैं।
संकेत ऐसे निर्देश हो सकते हैं जहां आप मॉडल से कुछ करने के लिए कहते हैं। हमारे उदाहरण में, हमने पाठ का एक विशाल भाग प्रदान किया और मॉडल से इसे सारांशित करने के लिए कहा।
संकेतों में वैकल्पिक रूप से आपकी बेहतर सेवा के लिए मॉडल का संदर्भ शामिल हो सकता है। उदाहरण के लिए, यदि मेरे पास अंग्रेजी विरासत स्थलों के बारे में प्रश्न हैं, तो मैं पहले एक संदर्भ प्रदान कर सकता हूं जैसे, "अंग्रेजी विरासत 400 से अधिक ऐतिहासिक स्मारकों, इमारतों और स्थानों की देखभाल करती है - विश्व प्रसिद्ध प्रागैतिहासिक स्थलों से लेकर भव्य मध्ययुगीन महल, रोमन किलों तक ..." और फिर मेरा प्रश्न पूछें, " सबसे बड़ा अंग्रेजी विरासत स्थल कौन सा है?" ”
प्रॉम्प्ट के भाग के रूप में, आप उस प्रारूप पर भी निर्देश दे सकते हैं जिसमें आप आउटपुट देखना चाहते हैं। और इसलिए एक प्रॉम्प्ट में वैकल्पिक रूप से एक आउटपुट संकेतक हो सकता है। उदाहरण के लिए, आप पूछ सकते हैं " मुझे इंग्लैंड में सभी अंग्रेजी विरासत स्थलों, उनके स्थान और विशेषता की एक सूची चाहिए।" मैं परिणाम सारणीबद्ध प्रारूप में चाहता हूं ।
या यदि आप और भी बेहतर प्रतिक्रिया चाहते हैं, तो आप इस सिंटैक्स के साथ वांछित प्रारूप दर्ज कर सकते हैं ताकि यह दर्शाया जा सके कि आप आउटपुट में कॉलम और पंक्तियाँ देखना चाहते हैं:
Desired format:
Company names: <comma_separated_list_of_sites>
Sites: -||-Location: -||-Speciality: -||-
एक प्रॉम्प्ट में एक या अधिक इनपुट डेटा शामिल हो सकता है जहां हम मॉडल से जो अपेक्षा की जाती है उसके लिए उदाहरण इनपुट प्रदान करते हैं। भावना वर्गीकरण के मामले में, इस संकेत पर एक नज़र डालें जहां हम अपने इरादे दिखाने के लिए उदाहरण प्रदान करना शुरू करते हैं और यह भी निर्दिष्ट करते हैं कि हम प्रतिक्रिया में कोई स्पष्टीकरण नहीं चाहते हैं:
Text: Today I saw a movie. It was amazing.
sentiment: Positive
Text: I don't very good after seeing that incident.
sentiment:
प्रॉम्प्ट में उदाहरण देने का यह तरीका वैसा ही है जैसे हम उदाहरण दिखाकर इंसानों को समझाते हैं। प्रॉम्प्टिंग दुनिया में इसे फ्यू-शॉट प्रॉम्प्टिंग कहा जाता है। हम कार्य के इनपुट और आउटपुट दोनों वाले उच्च गुणवत्ता वाले उदाहरण प्रदान करते हैं। इस तरह मॉडल समझ जाता है कि आप क्या चाहते हैं और इसलिए बेहतर प्रतिक्रिया देता है।
हमारे उदाहरण पर विस्तार करते हुए, यदि मैं किसी अनुच्छेद की भावना जानना चाहता हूं, तो केवल यह पूछने के बजाय, "परिच्छेद की भावना क्या है", मैं आउटपुट में संभावित वर्गों को कवर करने वाले कुछ उदाहरण प्रदान कर सकता हूं। इस मामले में सकारात्मक और नकारात्मक:
Text: Today I saw a movie. It was amazing.
sentiment: Positive
Text: I don't very good after seeing that incident.
sentiment: Negative
Text: Lets party this weekend to celebrate your anniversary.
sentiment: Positive
Text: Walking in that neighbourhood is quite dangerous.sentiment: Negative
Text: I love watching tennis all day long
sentiment:
और फिर मैं अपने द्वारा दर्ज किए गए अंतिम पाठ का जवाब देने के लिए मॉडल को छोड़ सकता हूं। आमतौर पर 5 से 8 उदाहरण कुछ-शॉट संकेत के लिए पर्याप्त होने चाहिए। जैसा कि आप अब तक अनुमान लगा सकते हैं, इस दृष्टिकोण का दोष यह है कि आपके प्रॉम्प्ट में बहुत सारे टोकन होंगे। यदि आप सरल शुरुआत करना चाहते हैं, तो आपको कोई उदाहरण देने की आवश्यकता नहीं है, बल्कि इस संकेत की तरह सीधे समस्या पर जाएं:
Text: I love watching tennis all day long
sentimet:
यह शून्य-शॉट प्रॉम्प्टिंग है जहां आप कोई उदाहरण नहीं देते हैं लेकिन फिर भी मॉडल से अपेक्षा करते हैं कि वह आपको उचित उत्तर दे। आमतौर पर प्रॉम्प्ट इंजीनियरिंग करते समय, आप शून्य-शॉट से शुरू करते हैं क्योंकि यह सरल है और प्रतिक्रिया के आधार पर, आप बेहतर प्रतिक्रिया प्राप्त करने के लिए उदाहरण प्रदान करके कुछ-शॉट पर आगे बढ़ते हैं।
यदि आप एलएलएम के साथ किसी विशेष विषय पर जाना चाहते हैं, तो आप उसे एक भूमिका सौंपकर सीधे किसी क्षेत्र में विशेषज्ञ बनने के लिए प्रेरित कर सकते हैं और इसे रोल प्रॉम्प्टिंग कहा जाता है।
आप आम तौर पर एलएलएम द्वारा निभाई जाने वाली विशेषज्ञ भूमिका के साथ संकेत शुरू करेंगे। फिर उसे क्या करना है इसके लिए निर्देशों का पालन करें। एक सरल उदाहरण के रूप में, भूमिका एलएलएम को एक कवि बनने के लिए कह सकती है और निर्देश सिर्फ एआई बाइट्स के बारे में एक कविता लिखने के लिए हो सकता है।
या एलएलएम को लिनक्स टर्मिनल के रूप में कार्य करने के लिए कहकर इसे थोड़ा और अधिक जटिल बनाया जा सकता है। और किसी फ़ाइल की पहली 10 पंक्तियों को एक अलग फ़ाइल में कॉपी करने और उसे सहेजने के लिए विशिष्ट निर्देश प्रदान करना। आप स्पष्ट रूप से कोई स्पष्टीकरण न देने का उल्लेख करके इसे आउटपुट में किसी अन्य पाठ को शामिल करने से भी रोक सकते हैं।
You are a poet.
Write a poem about AI Bites
Act as a linux terminalI want you to provide the shell command to read the contents of a file named "input.txt".Copy the first 10 lines to a different file with the name "new.txt" and save it.Do not give any explanations.
प्रॉम्प्ट के विभिन्न संभावित तत्वों को हम एलएलएम में इनपुट कर सकते हैं
इतना सब कहने के बाद, यदि आप चाहते हैं कि मैं प्रॉम्प्ट की संरचना को औपचारिक रूप दे दूं, तो मैं इस तरह काम करूंगा। यदि आपका संकेत किसी विशेष विषय के बारे में है तो संकेत आम तौर पर एक भूमिका से शुरू होता है जिसे मॉडल को निभाना होता है। फिर इसमें कोई भी निर्देश हो सकता है जो आप एलएलएम को देना चाहेंगे। इसके अलावा यदि आप एलएलएम को अतिरिक्त जानकारी प्रदान करना चाहते हैं, तो यह निर्देश के बाद भी जा सकता है।
इसके तुरंत बाद यदि आप कुछ-शॉट संकेत दे रहे हैं तो आप उच्च गुणवत्ता वाले उदाहरण प्रदान कर सकते हैं। इन उदाहरणों का अनुसरण किसी भी संदर्भ में किया जा सकता है जिसे आप मॉडल को प्रदान करना चाहते हैं। यदि आप कोई प्रश्न पूछना चाहते हैं और एक कार्य करना चाहते हैं, तो आप अपने प्रश्नों को अंत में शामिल कर सकते हैं
अब जब हमने देख लिया है कि प्रॉम्प्ट क्या होता है, तो यह और भी बेहतर होगा यदि हम जानें कि इन प्रॉम्प्टों को कैसे प्रारूपित किया जाए। उदाहरण के लिए, वांछित प्रारूप का स्पष्ट रूप से उल्लेख करना और फिर वास्तव में प्रारूप प्रदान करना बेहतर है।
Extract locations from the below textDesired format:Cities: <comma_separated_list_of_cities>Countries: <comma_separated_list_of_countries>Input: Although the exact age of Aleppo in Syria is unknown,an ancient temple discovered in the city dates to around 3,000 BC Excavations in the1990s unearthed evidence of 5,000 years of civilization,dating Beirut, which is now Lebanon's capital, to around 3,000 BC
इसी प्रकार इनपुट या संदर्भ के लिए यह बेहतर होगा कि इनपुट के बाद कोलन लगाया जाए और फिर अपना इनपुट प्रदान किया जाए।
उदाहरण प्रदान करते समय उन्हें इस उदाहरण की तरह कुछ हैश के साथ अलग करना बेहतर होता है।
Text: Today I saw a movie. It was amazing.sentiment: Positive
Text: I don't very good after seeing that incident.sentiment: Negative
Text: Lets party this weekend to celebrate your anniversary.sentiment: PositiveText: Walking in that neighbourhood is quite dangerous.sentiment: Negative
यदि आप इनपुट प्रदान कर रहे हैं, तो आप इसे इस उदाहरण की तरह उद्धरण चिह्नों में लपेट सकते हैं:
Text: """{text input here}"""
फिर स्टॉप सीक्वेंस नाम की कोई चीज़ होती है जो मॉडल को टेक्स्ट का मंथन बंद करने का संकेत देती है क्योंकि उसका आउटपुट समाप्त हो गया है। आप अपनी पसंद के किसी भी प्रतीक के साथ स्टॉप सीक्वेंस चुन सकते हैं। लेकिन नई लाइन यहां सामान्य विकल्प प्रतीत होती है।
Text: "Banana",
Output: "yellow \\n"
Text: "Tomato",
Output: "red \\n"
Text: "Apple",
Output: "red \\n"
यदि आप मान लें कि कोड जनरेशन के साथ काम कर रहे हैं, तो उस भाषा के अनुसार टिप्पणियाँ प्रदान करना बेहतर होगा जिसमें आप आउटपुट कोड देखना चाहते हैं।
/*
Get the name of the use as input and print it
*/
# get the name of the user as input and print it
यदि आपने इसे अब तक पढ़ा है, तो मुझे लगता है कि आपको या तो लेख पसंद आया होगा या आप एआई के बारे में उत्सुक होंगे। किसी भी तरह, आप प्रॉम्प्ट इंजीनियरिंग पर हमारा वीडियो क्यों नहीं देखते। प्रॉम्पटिंग के बारे में वीडियो की श्रृंखला में यह पहला वीडियो है। तो क्यों न सदस्यता लें और बने रहें!
प्रॉम्प्ट, प्रॉम्प्ट इंजीनियरिंग और उनके प्रकारों के बारे में सभी परिचय के साथ, हमने यहां केवल सतह को खंगाला है। उदाहरण के लिए, हम एलएलएम से किसी स्थिति के बारे में तर्क करने के लिए कैसे कह सकते हैं? संकेत देने के और भी उन्नत तरीके हैं जैसे विचार-श्रृंखला, आत्म-स्थिरता, सामान्य ज्ञान, आदि। आइए आगामी पोस्ट और वीडियो में उन पर एक नज़र डालें। कृपया अनुकूलित रहें!