Skip to content

Latest commit

 

History

History
616 lines (421 loc) · 45.6 KB

File metadata and controls

616 lines (421 loc) · 45.6 KB

उन्नत प्रम्प्टहरू सिर्जना गर्दै

उन्नत प्रम्प्टहरू सिर्जना गर्दै

अघिल्लो अध्यायबाट केही सिकाइहरूलाई पुनः सम्झौं:

प्रम्प्ट इन्जिनियरिङ भनेको मोडेललाई थप सान्दर्भिक उत्तरहरूतर्फ मार्गदर्शन गर्ने प्रक्रिया हो जसले थप उपयोगी निर्देशनहरू वा सन्दर्भ प्रदान गर्दछ।

प्रम्प्ट लेख्न दुई चरणहरू छन्: प्रम्प्ट निर्माण गर्ने, सान्दर्भिक सन्दर्भ प्रदान गरेर, र अप्टिमाइजेसन, जसले प्रम्प्टलाई क्रमिक रूपमा सुधार गर्ने तरिका हो।

यस बिन्दुमा, हामीसँग प्रम्प्ट लेख्ने आधारभूत समझ छ, तर हामी अझ गहिरो जान आवश्यक छ। यस अध्यायमा, तपाईं विभिन्न प्रम्प्टहरू प्रयास गर्नेबाट सुरु गरेर किन एउटा प्रम्प्ट अर्को भन्दा राम्रो छ भन्ने कुरा बुझ्न जान्नुहुनेछ। तपाईंले केही आधारभूत प्रविधिहरू अनुसरण गर्दै प्रम्प्टहरू निर्माण गर्ने तरिका सिक्नुहुनेछ जुन कुनै पनि LLM मा लागू गर्न सकिन्छ।

परिचय

यस अध्यायमा, हामी निम्न विषयहरू समेट्नेछौं:

  • विभिन्न प्रविधिहरूलाई तपाईंको प्रम्प्टहरूमा लागू गरेर प्रम्प्ट इन्जिनियरिङको ज्ञान विस्तार गर्नुहोस्।
  • तपाईंको प्रम्प्टहरूलाई विभिन्न आउटपुटमा कन्फिगर गर्नुहोस्।

सिकाइका लक्ष्यहरू

यो पाठ पूरा गरेपछि, तपाईं सक्षम हुनुहुनेछ:

  • प्रम्प्ट इन्जिनियरिङ प्रविधिहरू लागू गर्नुहोस् जसले तपाईंको प्रम्प्टहरूको परिणाम सुधार गर्दछ।
  • प्रम्प्टिङ गर्नुहोस् जुन विविध वा निर्धारणात्मक हो।

प्रम्प्ट इन्जिनियरिङ

प्रम्प्ट इन्जिनियरिङ भनेको प्रम्प्टहरू सिर्जना गर्ने प्रक्रिया हो जसले चाहिएको परिणाम उत्पादन गर्दछ। प्रम्प्ट इन्जिनियरिङ भनेको केवल पाठ प्रम्प्ट लेख्ने कुरा मात्र होइन। प्रम्प्ट इन्जिनियरिङ भनेको इन्जिनियरिङ अनुशासन होइन, यो प्रविधिहरूको सेट हो जुन तपाईंले चाहिएको परिणाम प्राप्त गर्न लागू गर्न सक्नुहुन्छ।

प्रम्प्टको एउटा उदाहरण

आउनुहोस्, यस्तो आधारभूत प्रम्प्टलाई हेरौं:

भूगोलमा १० प्रश्नहरू उत्पन्न गर्नुहोस्।

यस प्रम्प्टमा, तपाईं वास्तवमा विभिन्न प्रम्प्ट प्रविधिहरूको सेट लागू गर्दै हुनुहुन्छ।

यसलाई टुक्रा-टुक्रामा विभाजन गरौं।

  • सन्दर्भ, तपाईंले निर्दिष्ट गर्नुभएको छ कि यो "भूगोल"को बारेमा हुनुपर्छ।
  • आउटपुट सीमित गर्नुहोस्, तपाईंले १० भन्दा बढी प्रश्नहरू चाहनुहुन्न।

साधारण प्रम्प्टिङको सीमाहरू

तपाईंले चाहेको परिणाम प्राप्त गर्न सक्नुहुन्छ वा सक्नुहुन्न। तपाईंको प्रश्नहरू उत्पन्न हुनेछ, तर भूगोल ठूलो विषय हो र तपाईंले चाहेको कुरा प्राप्त गर्न सक्नुहुन्न निम्न कारणहरूका कारण:

  • ठूलो विषय, तपाईंलाई थाहा छैन कि यो देशहरू, राजधानीहरू, नदीहरू आदिको बारेमा हुनेछ।
  • ढाँचा, यदि तपाईंले प्रश्नहरूलाई निश्चित तरिकामा ढाँचा बनाउन चाहनुभएको भए के हुन्छ?

जस्तो कि तपाईं देख्न सक्नुहुन्छ, प्रम्प्टहरू सिर्जना गर्दा विचार गर्न धेरै कुरा छन्।

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

प्रम्प्टिङका प्रविधिहरू

पहिले, हामीले बुझ्न आवश्यक छ कि प्रम्प्टिङ LLM को एक उत्पन्न गुण हो जसको अर्थ यो मोडेलमा निर्मित सुविधा होइन तर बरु केही हो जुन हामी मोडेल प्रयोग गर्दा पत्ता लगाउँछौं।

LLM लाई प्रम्प्ट गर्नका लागि हामीले प्रयोग गर्न सक्ने केही आधारभूत प्रविधिहरू छन्। आउनुहोस्, तिनीहरूलाई अन्वेषण गरौं।

  • शून्य-शट प्रम्प्टिङ, यो प्रम्प्टिङको सबैभन्दा आधारभूत रूप हो। यो एकल प्रम्प्ट हो जसले LLM लाई केवल यसको प्रशिक्षण डाटाको आधारमा प्रतिक्रिया अनुरोध गर्दछ।
  • थोरै-शट प्रम्प्टिङ, यो प्रकारको प्रम्प्टिङले LLM लाई १ वा बढी उदाहरणहरू प्रदान गरेर मार्गदर्शन गर्दछ जसमा यसले आफ्नो प्रतिक्रिया उत्पन्न गर्न भर पर्न सक्छ।
  • चेन-ऑफ-थट, यो प्रकारको प्रम्प्टिङले LLM लाई समस्या चरणहरूमा विभाजन गर्न सिकाउँछ।
  • उत्पन्न ज्ञान, प्रम्प्टको प्रतिक्रियालाई सुधार गर्न, तपाईं आफ्नो प्रम्प्टमा थप तथ्यहरू वा ज्ञान प्रदान गर्न सक्नुहुन्छ।
  • कमदेखि धेरै, चेन-ऑफ-थट जस्तै, यो प्रविधि समस्या समाधान गर्न चरणहरूको श्रृंखला तोड्ने बारे हो र त्यसपछि यी चरणहरू क्रमबद्ध रूपमा प्रदर्शन गर्न सोध्नुहोस्।
  • आफै सुधार गर्नुहोस्, यो प्रविधि LLM को आउटपुटको आलोचना गर्ने र त्यसपछि यसलाई सुधार गर्न सोध्ने बारे हो।
  • मायुटिक प्रम्प्टिङ। यहाँ तपाईंले चाहनुभएको कुरा भनेको LLM उत्तर सही छ भनेर सुनिश्चित गर्नु हो र तपाईं यसलाई उत्तरका विभिन्न भागहरू व्याख्या गर्न सोध्नुहुन्छ। यो आफै सुधार गर्ने एक प्रकार हो।

शून्य-शट प्रम्प्टिङ

यो शैलीको प्रम्प्टिङ धेरै सरल छ, यसमा एकल प्रम्प्ट समावेश छ। यो प्रविधि सम्भवतः तपाईंले LLM को बारेमा सिक्न सुरु गर्दा प्रयोग गरिरहनुभएको छ। यहाँ एउटा उदाहरण छ:

  • प्रम्प्ट: "अल्जेब्रा के हो?"
  • उत्तर: "अल्जेब्रा गणितको एउटा शाखा हो जसले गणितीय प्रतीकहरू र ती प्रतीकहरूलाई हेरफेर गर्ने नियमहरूको अध्ययन गर्दछ।"

थोरै-शट प्रम्प्टिङ

यो शैलीको प्रम्प्टिङले अनुरोधसँगै केही उदाहरणहरू प्रदान गरेर मोडेललाई मद्दत गर्दछ। यसमा एकल प्रम्प्ट र थप कार्य-विशिष्ट डाटा समावेश छ। यहाँ एउटा उदाहरण छ:

  • प्रम्प्ट: "शेक्सपियरको शैलीमा कविता लेख्नुहोस्। यहाँ शेक्सपियरियन सोननेट्सका केही उदाहरणहरू छन्: सोननेट १८: 'के म तिमीलाई गर्मीको दिनसँग तुलना गरौं? तिमी धेरै सुन्दर र धेरै शान्त छौ...' सोननेट ११६: 'साँचो मनहरूको विवाहमा बाधा नआओस्। प्रेम प्रेम होइन जुन परिवर्तन हुँदा परिवर्तन हुन्छ...' सोननेट १३२: 'तिम्रा आँखाहरू मलाई मनपर्छ, र तिनीहरूले मलाई दया गर्दै, तिम्रो हृदयले मलाई तिरस्कारले पीडा दिन्छ,...' अब, चन्द्रमाको सुन्दरताको बारेमा एक सोननेट लेख्नुहोस्।"
  • उत्तर: "आकाशमा, चन्द्रमा नरम चम्किन्छ, चाँदीको प्रकाशमा जसले यसको कोमल कृपा प्रदान गर्दछ,..."

उदाहरणहरूले LLM लाई चाहिएको आउटपुटको सन्दर्भ, ढाँचा वा शैली बुझ्न मद्दत गर्दछ। तिनीहरूले मोडेललाई विशिष्ट कार्य बुझ्न र थप सटीक र सान्दर्भिक प्रतिक्रियाहरू उत्पन्न गर्न मद्दत गर्छन्।

चेन-ऑफ-थट

चेन-ऑफ-थट एकदम रोचक प्रविधि हो किनभने यो LLM लाई चरणहरूको श्रृंखलाबाट लैजाने बारे हो। विचार भनेको LLM लाई केहि गर्न कसरी बुझ्ने तरिकामा निर्देशन दिनु हो। निम्न उदाहरणलाई विचार गर्नुहोस्, चेन-ऑफ-थटको साथ र बिना:

- प्रम्प्ट: "एलिससँग ५ वटा स्याउ छन्, ३ वटा स्याउ फाल्छिन्, २ वटा बबलाई दिन्छिन् र बबले एउटा फिर्ता दिन्छ, एलिससँग कति स्याउ छन्?"
- उत्तर: ५

LLM ले ५ उत्तर दिन्छ, जुन गलत छ। सही उत्तर १ स्याउ हो, गणना अनुसार (५ -३ -२ + १ = १)।

त्यसैले हामीले LLM लाई यो सही गर्न कसरी सिकाउन सक्छौं?

आउनुहोस्, चेन-ऑफ-थट प्रयास गरौं। चेन-ऑफ-थट लागू गर्दा:

  1. LLM लाई समान उदाहरण दिनुहोस्।
  2. गणना देखाउनुहोस्, र यसलाई सही रूपमा गणना गर्ने तरिका देखाउनुहोस्।
  3. मूल प्रम्प्ट प्रदान गर्नुहोस्।

यसरी:

  • प्रम्प्ट: "लिसासँग ७ वटा स्याउ छन्, १ स्याउ फाल्छिन्, ४ स्याउ बार्टलाई दिन्छिन् र बार्टले एउटा फिर्ता दिन्छ: ७ -१ = ६ ६ -४ = २ २ +१ = ३
    एलिससँग ५ वटा स्याउ छन्, ३ वटा स्याउ फाल्छिन्, २ वटा बबलाई दिन्छिन् र बबले एउटा फिर्ता दिन्छ, एलिससँग कति स्याउ छन्?" उत्तर: १

ध्यान दिनुहोस् कि हामीले अर्को उदाहरण, एक गणना र त्यसपछि मूल प्रम्प्टको साथमा उल्लेखनीय रूपमा लामो प्रम्प्ट लेख्छौं र हामी सही उत्तर १ मा पुग्छौं।

जस्तो कि तपाईं देख्न सक्नुहुन्छ, चेन-ऑफ-थट एकदम शक्तिशाली प्रविधि हो।

उत्पन्न ज्ञान

धेरै पटक जब तपाईं प्रम्प्ट निर्माण गर्न चाहनुहुन्छ, तपाईंले आफ्नो कम्पनीको डाटा प्रयोग गरेर गर्न चाहनुहुन्छ। तपाईं चाहनुहुन्छ कि प्रम्प्टको एक भाग कम्पनीबाट हो र अर्को भाग तपाईंलाई चासो भएको वास्तविक प्रम्प्ट हुनुपर्छ।

उदाहरणको रूपमा, यदि तपाईं बीमा व्यवसायमा हुनुहुन्छ भने तपाईंको प्रम्प्ट यसरी देखिन सक्छ:

{{company}}: {{company_name}}
{{products}}:
{{products_list}}
Please suggest an insurance given the following budget and requirements:
Budget: {{budget}}
Requirements: {{requirements}}

माथि, तपाईंले देख्न सक्नुहुन्छ कि प्रम्प्ट टेम्प्लेट प्रयोग गरेर निर्माण गरिएको छ। टेम्प्लेटमा केही भेरिएबलहरू छन्, {{variable}} द्वारा जनाइएको, जुन कम्पनी API बाट वास्तविक मानहरूद्वारा प्रतिस्थापित गरिनेछ।

यहाँ एउटा उदाहरण छ कि भेरिएबलहरू कम्पनीको सामग्रीबाट प्रतिस्थापित भएपछि प्रम्प्ट कस्तो देखिन सक्छ:

Insurance company: ACME Insurance
Insurance products (cost per month):
- Car, cheap, 500 USD
- Car, expensive, 1100 USD
- Home, cheap, 600 USD
- Home, expensive, 1200 USD
- Life, cheap, 100 USD

Please suggest an insurance given the following budget and requirements:
Budget: $1000
Requirements: Car, Home, and Life insurance

यो प्रम्प्टलाई LLM मार्फत चलाउँदा यस्तो प्रतिक्रिया उत्पन्न हुनेछ:

Given the budget and requirements, we suggest the following insurance package from ACME Insurance:
- Car, cheap, 500 USD
- Home, cheap, 600 USD
- Life, cheap, 100 USD
Total cost: $1,200 USD

जस्तो कि तपाईं देख्न सक्नुहुन्छ, यसले लाइफ इन्सुरेन्स पनि सुझाव दिन्छ, जुन यसले गर्नु हुँदैन। यो परिणामले संकेत गर्दछ कि हामीले प्रम्प्टलाई स्पष्ट बनाउन परिवर्तन गर्न आवश्यक छ। केही परीक्षण र त्रुटि पछि, हामी निम्न प्रम्प्टमा पुग्छौं:

Insurance company: ACME Insurance
Insurance products (cost per month):
- type: Car, cheap, cost: 500 USD
- type: Car, expensive, cost: 1100 USD
- type: Home, cheap, cost: 600 USD
- type: Home, expensive, cost: 1200 USD
- type: Life, cheap, cost: 100 USD

Please suggest an insurance given the following budget and requirements:
Budget: $1000 restrict choice to types: Car, Home

ध्यान दिनुहोस् कि प्रकारलागत थप्नु र प्रतिबन्ध शब्द प्रयोग गर्नुले LLM लाई हामी के चाहन्छौं भनेर बुझ्न मद्दत गर्दछ।

अब हामीलाई निम्न प्रतिक्रिया प्राप्त हुन्छ:

Given the budget and requirements, we suggest the Car, Cheap insurance product which costs 500 USD per month.

यस उदाहरणको उद्देश्य भनेको देखाउनु थियो कि हामी उत्पन्न ज्ञान जस्तो आधारभूत प्रविधि प्रयोग गरिरहेका भए पनि, हामीले चाहिएको परिणाम प्राप्त गर्न अधिकांश अवस्थामा प्रम्प्टलाई अझै अनुकूलित गर्न आवश्यक छ।

कमदेखि धेरै

कमदेखि धेरै प्रम्प्टिङको विचार भनेको ठूलो समस्यालाई उपसमस्याहरूमा विभाजन गर्नु हो। यसरी, तपाईंले LLM लाई ठूलो समस्या "जित्न" कसरी मद्दत गर्ने मार्गदर्शन गर्नुहुन्छ। डाटा विज्ञानको लागि राम्रो उदाहरण हुन सक्छ जहाँ तपाईं LLM लाई यसरी समस्या विभाजन गर्न सोध्न सक्नुहुन्छ:

प्रम्प्ट: डाटा विज्ञान ५ चरणमा कसरी प्रदर्शन गर्ने?

तपाईंको एआई सहायकले यसरी उत्तर दिनेछ:

  1. डाटा सङ्कलन गर्नुहोस्
  2. डाटा सफा गर्नुहोस्
  3. डाटा विश्लेषण गर्नुहोस्
  4. डाटा प्लट गर्नुहोस्
  5. डाटा प्रस्तुत गर्नुहोस्

आफै सुधार गर्नुहोस्, परिणामहरूको आलोचना गर्नुहोस्

जेनेरेटिभ एआईहरू र LLM हरूसँग, तपाईंले आउटपुटमा विश्वास गर्न सक्नुहुन्न। तपाईंले यसलाई प्रमाणित गर्न आवश्यक छ। आखिर, LLM ले तपाईंलाई के भन्नु पर्छ भन्ने सम्भावित कुरा मात्र प्रस्तुत गर्दैछ, सही कुरा होइन। त्यसैले, LLM लाई आफैलाई आलोचना गर्न सोध्नु राम्रो विचार हो, जसले हामीलाई आफै सुधार गर्ने प्रविधिमा पुर्‍याउँछ।

यसले काम गर्ने तरिका भनेको तपाईंले निम्न चरणहरू अनुसरण गर्नु हो:

  1. LLM लाई समस्या समाधान गर्न सोध्ने प्रारम्भिक प्रम्प्ट
  2. LLM उत्तर दिन्छ
  3. तपाईं उत्तरको आलोचना गर्नुहुन्छ र एआईलाई सुधार गर्न सोध्नुहुन्छ
  4. LLM फेरि उत्तर दिन्छ, यस पटक आलोचना विचार गर्दै र यसले पाएको समाधानहरू सुझाव दिन्छ

तपाईंले यो प्रक्रिया जति चाहनुहुन्छ त्यति पटक दोहोर्याउन सक्नुहुन्छ।

यहाँ यो प्रविधि प्रयोग गरेर एउटा उदाहरण छ:

प्रम्प्ट: "प्रोडक्ट्स र कस्टमर्स रुटहरू भएको एक Python वेब एपीआई सिर्जना गर्नुहोस्"

AI उत्तर:

import flask
app = Flask(__name__)

@app.route('/products')
def products():
    return 'Products'

@app.route('/customers')
def customers():
    return 'Customers'

प्रम्प्ट: माथिको कोडको ३ सुधार सुझाव दिनुहोस्

AI उत्तर:

Sure, here are three suggestions to improve the code:

Import the correct module: The first line should import Flask instead of flask. The correct import statement should be from flask import Flask.

Add a main function: Add a if __name__ == '__main__': block to the end of the file to run the application when the file is executed.

Use f-strings: Use f-strings to format the return statements in the route functions. For example, return 'Products' can be changed to return f'This is the {request.path} page'.
from flask import Flask, request

app = Flask(__name__)

@app.route('/products')
def products():
    return f'This is the {request.path} page'

@app.route('/customers')
def customers():
    return f'This is the {request.path} page'

if __name__ == '__main__':
    app.run()

जस्तो कि तपाईं देख्न सक्नुहुन्छ, माथिको AI प्रतिक्रिया पहिलो सुझाइएको कोडलाई सुधार गर्दैछ पहिलो उत्तरको आलोचना गर्ने धन्यवाद।

मायुटिक प्रम्प्टिङ

मायुटिक प्रम्प्टिङ एक प्रविधि हो जुन आफै सुधार गर्ने जस्तै छ तर यो LLM लाई आफैलाई व्याख्या गर्न सोध्ने बारे हो। उद्देश्य भनेको LLM को आउटपुटमा असंगतता कम गर्नु हो ताकि यो सही उत्तरमा पुग्न सुनिश्चित होस्। अनुसरण गर्नको लागि कार्यप्रवाह यस्तो छ:

  1. LLM लाई प्रश्नको उत्तर दिन सोध्नुहोस्
  2. उत्तरको प्रत्येक भागको लागि, LLM लाई यसलाई थप गहिराइमा व्याख्या गर्न सोध्नुहोस्।
  3. यदि असंगतता छन् भने, असंगत भागहरूलाई अस्वीकार गर्नुहोस्।

२ र ३ लाई दोहोर्याउनुहोस् जबसम्म तपाईंले सबै भागहरूलाई हेर्नु भएको छैन र तपाईं उत्तरमा सन्तुष्ट हुनुहुन्छ।

यहाँ एउटा उदाहरण प्रम्प्ट छ:

प्रम्प्ट: महामारीलाई कम गर्न संकट योजना कसरी सिर्जना गर्ने ५ चरणहरूमा? LLM उत्तर:

1. Identify the risks
1. Identify the stakeholders
1. Identify the resources
1. Identify the actions
1. Identify the communication channels

यसले ५ चरणहरू पहिचान गरेको छ, तर के हामी यो सही हो भनेर निर्धारण गर्न सक्छौं? आउनुहोस्, LLM लाई प्रत्येक चरण व्याख्या गर्न सोधौं:

प्रम्प्ट: पहिलो चरणलाई थप विवरणमा व्याख्या गर्नुहोस्, महामारीसँग सम्बन्धित जोखिमहरू के हुन्?

The risks are the following:

- Loss of life
- Loss of business
- Loss of reputation
- Loss of customers
- Loss of employees

यस बिन्दुमा, हामी LLM सही छ भनेर सुनिश्चित गर्न चाहन्छौं त्यसैले हामी यसलाई पहिलो जोखिमलाई थप विवरणमा व्याख्या गर्न सोध्छौं र आशा गर्दछौं कि यो माथिको उत्तरसँग असंगत छैन:

प्रम्प्ट: महामारीमा, सबैभन्दा ठूलो जोखिम के हो र किन?

The biggest risk is loss of life because it's the most important thing to protect.

महामारीमा दुई सबैभन्दा ठूलो जोखिमहरू के हुन्?

The two biggest risks are loss of life and loss of business.

यस बिन्दुमा, LLM सुसंगत छ र "जीवन" र "व्यवसाय"लाई शीर्ष दुई जोखिमहरूका रूपमा उल्लेख गर्दछ। अब हामी अर्को चरणमा अगाडि बढ्न सक्छौं र पर्याप्त आत्मविश्वास महसुस गर्न सक्छौं। यद्यपि, हामीले LLM लाई अन्धाधुन्ध विश्वास गर्नु हुँदैन, हामीले सधैं आउटपुटलाई प्रमाणित गर्नुपर्छ।

तपाईंको आउटपुट फरक बनाउनुहोस्

LLM हरू स्वाभाविक रूपमा गैर-निर्धारणात्मक हुन्छन्, जसको अर्थ तपाईंले एउटै प्रम्प्ट चलाउँदा प्रत्येक पटक फरक परिणामहरू प्राप्त गर्नुहुनेछ। निम्न प्रम्प्टलाई प्रयास गर्नुहोस्:

"Python वेब एपीआईको लागि कोड उत्पन्न गर्नुहोस्"

# Import necessary modules
import flask
from flask import request, jsonify

# Create a Flask app
app = flask.Flask(__name__)

# Create a route for the API
@app.route('/api', methods=['GET'])
def api():
    # Get the data from the request
    data = request.args

    # Process the data
    result = process_data(data)

    # Return the result as JSON
    return jsonify(result)

# Function to process the data
def process_data(data):
    # Do something with the data
    result = data + 1

    # Return the result
    return result

# Run the app
if __name__ == '__main__':
    app.run()

उही प्रम्प्ट फेरि चलाउँदा अलि फरक प्रतिक्रिया उत्पन्न हुन्छ:

#import necessary packages
import flask
from flask import request, jsonify

#create the Flask application
app = flask.Flask(__name__)
app.config["DEBUG"] = True

#create a list of books
books = [
    {'id': 0,
     'title': 'A Fire Upon the Deep',
     'author': 'Vernor Vinge',
     'first_sentence': 'The coldsleep itself was dreamless.',
     'year_published': '1992'},
    {'id': 1,
     'title': 'The Ones Who Walk Away From Omelas',
     'author': 'Ursula K. Le Guin',
     'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.',
     'published': '1973'},
    {'id': 2,
     'title': 'Dhalgren',
     'author': 'Samuel R. Delany',
     'first_sentence': 'to wound the autumnal city.',
     'published': '1975'}
]

#create an endpoint for the API
@app.route('/', methods=['GET'])
def home():
    return '''<h1>Books API</h1>
<p>A prototype API for retrieving books.</p>'''

#create an endpoint to return all books
@app.route('/api/v1/resources/books/all', methods=['GET'])
def api_all():
    return jsonify(books)

#create an endpoint to return a single book
@app.route('/api/v1/resources/books', methods=['GET'])
def api_id():
    #check if an ID was provided as part of the URL
    #if ID is provided, assign it to a variable
    #if no ID is provided, display an error
    if 'id' in request.args:
        id = int(request.args['id'])
    else:
        return "Error: No id field provided. Please specify an id."

    #create an empty list for our results
    results = []

    #loop through the data and match results that fit the requested ID
    #IDs are unique, but other fields might return many results
    for book in books:
        if book['id'] == id:
            results.append(book)

    #use the jsonify function from Flask to convert our list of
    #Python dictionaries to the JSON format
    return jsonify(results)

app.run()

त्यसो भए फरक आउटपुट समस्या हो?

तपाईं के गर्न खोज्दै हुनुहुन्छ भन्ने कुरामा निर्भर गर्दछ। यदि तपाईंलाई विशिष्ट प्रतिक्रिया चाहिन्छ भने यो समस्या हो। यदि तपाईं "भूगोलमा कुनै पनि ३ प्रश्नहरू उत्पन्न गर्नुहोस्" जस्तो फरक आउटपुट ठीक छ भने, यो समस्या होइन।

तापक्रम प्रयोग गरेर तपाईंको आउटपुट फरक बनाउनुहोस्

ठीक छ, त्यसो भए हामीले आउटपुटलाई थप पूर्वानुमान योग्य बनाउन सीमित गर्न चाह्यौं, अर्थात् थप निर्धारणात्मक। हामीले यो कसरी गर्ने?

तापक्रम ० देखि १ सम्मको मान हो, जहाँ ० सबैभन्दा निर्धारणात्मक हो र १ सबैभन्दा फरक। डिफल्ट मान ०.७ हो। आउनुहोस्, तापक्रमलाई ०.१ मा सेट गरेर उही प्रम्प्टको दुई रनमा के हुन्छ हेर्नुहोस्:

"Python वेब एपीआईको लागि कोड उत्पन्न गर्नुहोस्"

#import necessary libraries
import flask
from flask import request, jsonify

#create an instance of the Flask class
app = flask.Flask(__name__)

#create an endpoint for the API
@app.route('/api/v1/endpoint', methods=['GET'])
def api_endpoint():
    #get the request data
    data = request.get_json()

    #process the data
    result = process_data(data)

    #return the result
    return jsonify(result)

#function to process the data
def process_data(data):
    #process the data
    result = {'result': 'success'}

    #return the result
    return result

#run the Flask app
if __name__ == '__main__':
    app.run()

प्रम्प्ट फेरि चलाउँदा हामीलाई यस्तो परिणाम प्राप्त हुन्छ:

#import necessary libraries
import flask
from flask import request, jsonify

#create a Flask app
app = flask.Flask(__name__)

#create a route for the API
@app.route('/api', methods=['GET'])
def api_call():
    #get the data from the request
    data = request.get_json()

    #process the data
    result = process_data(data)

    #return the result
    return jsonify(result)

#define the process_data function
def process_data(data):
    #do something with the data
    result = data + 1

    #return the result
    return result

#run the app
if __name__ == '__main__':
    app.run()

यी दुई आउटपुटहरू बीचमा केवल सानो फरक छ। यस पटक विपरीत गरौं, तापक्रमलाई ०.९ मा सेट गरौं:

# Import necessary libraries
import flask
from flask import request, jsonify

# Create a Flask app
app = flask.Flask(__name__)

# Create a route for the API
@app.route('/api', methods=['GET'])
def api_call():
    # Get the data from the request
    data = request.args

    # Process the data
    result = process_data(data)

    # Return the result
    return jsonify(result)

# Function to process the data
def process_data(data):
    # Do something with the data
    result = data + 1

    # Return the result
    return result

# Run the app
if __name__ == '__main__':
    app.run()

र ताप जस्तो तपाईंले देख्न सक्नुहुन्छ, नतिजाहरू धेरै फरक छन्।

ध्यान दिनुहोस्, तपाईंले नतिजा फरक पार्न सक्ने थप प्यारामिटरहरू परिवर्तन गर्न सक्नुहुन्छ, जस्तै top-k, top-p, repetition penalty, length penalty र diversity penalty तर यी पाठ्यक्रमको दायराभन्दा बाहिर छन्।

राम्रो अभ्यासहरू

तपाईंले चाहेको नतिजा प्राप्त गर्न धेरै अभ्यासहरू लागू गर्न सक्नुहुन्छ। तपाईंले prompting धेरै प्रयोग गर्दै जाँदा आफ्नो शैली पत्ता लगाउनुहुनेछ।

हामीले समेटेका प्रविधिहरूको अतिरिक्त, LLM लाई prompting गर्दा विचार गर्नुपर्ने केही राम्रो अभ्यासहरू छन्।

यहाँ केही राम्रो अभ्यासहरू विचार गर्न सकिन्छ:

  • सन्दर्भ निर्दिष्ट गर्नुहोस्। सन्दर्भ महत्त्वपूर्ण छ, जति धेरै तपाईं डोमेन, विषय आदि जस्ता कुरा निर्दिष्ट गर्न सक्नुहुन्छ, त्यति राम्रो।
  • नतिजा सीमित गर्नुहोस्। यदि तपाईंलाई निश्चित संख्याका वस्तुहरू वा निश्चित लम्बाइ चाहिन्छ भने, यसलाई निर्दिष्ट गर्नुहोस्।
  • के र कसरी दुवै निर्दिष्ट गर्नुहोस्। तपाईंले के चाहनुहुन्छ र कसरी चाहनुहुन्छ भन्ने कुरा उल्लेख गर्न सम्झनुहोस्, उदाहरणका लागि "Create a Python Web API with routes products and customers, divide it into 3 files"।
  • टेम्प्लेटहरू प्रयोग गर्नुहोस्। प्रायः, तपाईं आफ्नो कम्पनीको डेटा प्रयोग गरेर आफ्नो prompts समृद्ध बनाउन चाहनुहुन्छ। यसका लागि टेम्प्लेटहरू प्रयोग गर्नुहोस्। टेम्प्लेटहरूमा परिवर्तन गर्न सकिने भेरिएबलहरू हुन्छन् जसलाई वास्तविक डेटा संग प्रतिस्थापन गर्न सकिन्छ।
  • सही वर्तनी लेख्नुहोस्। LLMs ले तपाईंलाई सही उत्तर दिन सक्छ, तर यदि तपाईंले सही वर्तनी लेख्नुभयो भने, तपाईंले अझ राम्रो उत्तर प्राप्त गर्नुहुनेछ।

असाइनमेन्ट

यहाँ Python मा कोड छ जसले Flask प्रयोग गरेर साधारण API निर्माण गर्ने देखाउँछ:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello():
    name = request.args.get('name', 'World')
    return f'Hello, {name}!'

if __name__ == '__main__':
    app.run()

GitHub Copilot वा ChatGPT जस्ता AI सहायक प्रयोग गर्नुहोस् र "self-refine" प्रविधि लागू गरेर कोड सुधार गर्नुहोस्।

समाधान

कृपया कोडमा उपयुक्त prompts थपेर असाइनमेन्ट समाधान गर्ने प्रयास गर्नुहोस्।

Tip

सुधार गर्न सोध्ने prompt बनाउनुहोस्, सुधारहरूको संख्या सीमित गर्नु राम्रो विचार हो। तपाईंले सुधारलाई विशेष तरिकामा सोध्न पनि सक्नुहुन्छ, उदाहरणका लागि architecture, performance, security आदि।

Solution

ज्ञान जाँच

किन म chain-of-thought prompting प्रयोग गर्नेछु? मलाई १ सही उत्तर र २ गलत उत्तर देखाउनुहोस्।

  1. LLM लाई समस्या समाधान गर्न सिकाउन।
  2. B, LLM लाई कोडमा त्रुटिहरू पत्ता लगाउन सिकाउन।
  3. C, LLM लाई विभिन्न समाधानहरू निकाल्न निर्देशन दिन।

A: 1, किनभने chain-of-thought भनेको LLM लाई समस्या समाधान गर्न कसरी सिकाउने भन्ने हो, चरणहरूको श्रृंखला प्रदान गरेर, र समान समस्याहरू र तिनीहरू कसरी समाधान गरिएका थिए भन्ने देखाएर।

🚀 चुनौती

तपाईंले असाइनमेन्टमा self-refine प्रविधि प्रयोग गर्नुभयो। तपाईंले निर्माण गरेको कुनै पनि प्रोग्राम लिनुहोस् र यसमा लागू गर्न चाहनुभएको सुधारहरू विचार गर्नुहोस्। अब प्रस्तावित परिवर्तनहरू लागू गर्न self-refine प्रविधि प्रयोग गर्नुहोस्। तपाईंले नतिजा कस्तो लाग्यो, राम्रो वा खराब?

उत्कृष्ट काम! आफ्नो सिकाइ जारी राख्नुहोस्

यो पाठ पूरा गरेपछि, हाम्रो Generative AI Learning collection हेर्नुहोस् र आफ्नो Generative AI ज्ञानलाई अझ स्तरवृद्धि गर्नुहोस्!

Lesson 6 मा जानुहोस् जहाँ हामी Prompt Engineering को ज्ञानलाई text generation apps निर्माण गरेर लागू गर्नेछौं।


अस्वीकरण:
यो दस्तावेज AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको दस्तावेजलाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।