एकाइ 1 / 12

सफ्टवेयर टोलीहरूको लागि कृत्रिम बुद्धिमत्ता: कार्य मोडेल र सीमाहरू

लाभ:

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

सफ्टवेयर विकासकर्ताको दिन "स्क्र्याचबाट कोड लेख्न" विरलै खर्च हुन्छ। वास्तविक समय; अरू कसैले लेखेको कोड पढ्दै, बग पुन: उत्पादन गर्ने प्रयास गर्दै, लग स्क्यान गर्दै (दौडिरहेको बेला अनुप्रयोगद्वारा उत्पादित लग लाइनहरू), परीक्षणहरू लेख्ने, PR लेख्ने (पुल अनुरोध - टोली समीक्षाको लागि कोड परिवर्तन पेश गरिएको मर्ज अनुरोध) स्पष्टीकरण र कागजात अद्यावधिक गर्ने। आर्टिफिसियल इन्टेलिजेन्स (एआई) एक गति गुणक हो जसले लगभग यी सबै नदेखेका कामहरूलाई छुन सक्छ। तर यसलाई सुरक्षित रूपमा प्रयोग गर्नको लागि पहिलो सर्त भनेको यो के हो र के होइन भनेर सही रूपमा बुझ्नु हो।

यस एकाइमा, हामीले पहिले सादा भाषामा कोडिङ सहायकको अन्तर्निहित प्रविधिको व्याख्या गर्छौं; त्यसपछि हामी मोडेलको बल र कमजोरीहरूको मानसिक नक्सा बनाउँछौं; अन्तमा, हामी आधारभूत कार्य अनुशासन स्थापना गर्छौं जुन हामीले सम्पूर्ण मोड्युलमा प्रयोग गर्नेछौं: प्रस्ताव, उत्पादन, प्रमाणीकरण। यी तीन चरणहरू अर्को एघार एकाइहरूको मेरुदण्ड हुन्।

नोट: यो मोड्युल एक सामान्य प्रशिक्षण हो। सुरक्षा-महत्वपूर्ण सफ्टवेयर (भुक्तानी प्रशोधन, स्वास्थ्य सेवा, प्रमाणीकरण, महत्वपूर्ण पूर्वाधार) मा एआई आउटपुट एक योग्य इन्जिनियर द्वारा समीक्षा र स्वीकृति को विकल्प होइन। एआई एक सहायक हो; हस्ताक्षरकर्ता इन्जिनियर हुन्।

कोडिङ सहायकले वास्तवमा के गर्छ?

धेरैजसो कोडिङ सहायकहरू ठूला भाषा मोडेलमा बनाइएका हुन्छन् (LLM - एउटा AI ठूलो मात्रामा पाठ र कोडमा प्रशिक्षित हुन्छ जसले अर्को सम्भावित "खंड" को भविष्यवाणी गर्छ। मोडेलले मानिस जस्तै कोड "बुझ्दैन"; यसले उदाहरणहरूको विशाल पोखरीबाट सिक्ने ढाँचाहरूमा आधारित, तपाईंले यसलाई दिनुभएको सन्दर्भको सम्भावित निरन्तरता उत्पन्न गर्दछ। यो जस्तो देखिने साधारण मेकानिजमले अभ्यासमा आश्चर्यजनक रूपमा कुशल परिणामहरू दिन्छ - किनभने धेरै सफ्टवेयरले दोहोर्याउने ढाँचाहरू समावेश गर्दछ: एक HTTP अनुरोध, एक लूप, एक शून्य जाँच, एक परीक्षण ढाँचा।

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

शक्ति र कमजोरी नक्शा

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

यसको बलहरू हुन्: बॉयलरप्लेट कोड उत्पन्न गर्ने, एक भाषाबाट अर्को भाषामा अनुवाद गर्ने, नियमित अभिव्यक्ति (रेजेक्स) लेख्ने, प्रकार्यको वर्णन गर्ने, परीक्षण कंकाल सिर्जना गर्ने, त्रुटि सन्देशको व्याख्या गर्ने, कागजातको मस्यौदा तयार गर्ने, चर/प्रकारको नामहरू सुझाव दिने, र माइनर रिफ्याक्टरिङहरू (कोडको संरचनामा सुधार नगरी यसको व्यवहार परिवर्तन गर्ने)।

कमजोरीहरू: तपाईंको कम्पनी-विशेष व्यापार नियमहरू जान्ने, तपाईंको सम्पूर्ण कोड आधार सम्झने, वास्तवमा चलिरहेको र कोड प्रमाणीकरण, निश्चित रूपमा नवीनतम पुस्तकालय संस्करणहरू जान्न, शत प्रतिशत ग्यारेन्टीको साथ सुरक्षा कमजोरीहरू पत्ता लगाउने। सबैभन्दा खतरनाक कुरा भ्रम हो: मोडेलले एक धेरै विश्वस्त भाषामा एक अस्तित्वहीन प्रकार्य, पुस्तकालय वा API (इन्टरफेस जसले अनुप्रयोगहरू बीच डेटा आदानप्रदान सक्षम गर्दछ) आविष्कार गर्दछ। यो जोखिम वास्तवमा तपाइँको फाइदामा परिणत हुन सक्छ, किनकि कोड, सादा पाठको विपरीत, यो "काम गर्दछ" भनेर हेर्नको लागि परीक्षण गर्न सकिन्छ - प्रमाणीकरण चरणलाई नछोड्नुहोस्।

मिशन प्रकार

AI को भूमिका

मानिसको भूमिका

बॉयलरप्लेट / कंकाल उत्पादन गर्नुहोस्

मस्यौदा उत्पादन गर्दछ

अनुकूलन, समीक्षा

कोड विवरण

द्रुत सारांश दिन्छ

कोडमा महत्वपूर्ण भाग प्रमाणित गर्दछ

लेखन परीक्षणहरू

केसले सुझाव दिन्छ

कभरेज र शुद्धता पुष्टि गर्दछ

सुरक्षा-महत्वपूर्ण तर्क

उपयोगी विचार

निर्णय र जिम्मेवारी पूर्णतया मानिसमा रहन्छ।

API/पुस्तकालय उपयोग

नमूना उत्पन्न गर्दछ

अस्तित्व र संस्करण प्रमाणित गर्दछ

वास्तु निर्णय

विकल्प को प्रकार

सन्दर्भ थाहा पाएर चयन गर्छ र रक्षा गर्छ

चरण-दर-चरण: आधारभूत कार्य चक्र

  1. कार्य स्पष्ट गर्नुहोस्। यदि तपाइँ एक वाक्यमा तपाइँ के चाहनुहुन्छ लेख्न सक्नुहुन्न भने, न त मोडेल। पहिलेको अनिश्चितता इनपुटमा झर्छ, यो आउटपुटमा बढ्छ।
  2. सन्दर्भ दिनुहोस्। प्रम्प्टमा सान्दर्भिक कोड, पूर्ण त्रुटि सन्देश, भाषा/ढाँचा संस्करण र अवरोधहरू थप्नुहोस्। "यसलाई ठीक नगर्नुहोस्" भन्नुहोस्, "Python 3.11, FastAPI 0.110; यो प्रकार्यले 500 त्रुटि दिन्छ, अनुरोधको मुख्य भाग खाली हुँदा यो विस्फोट हुन्छ"।
  3. प्रभावकारी भूमिका र ढाँचा। "तपाई एक वरिष्ठ Go विकासकर्ता हुनुहुन्छ; केवल कोड दिनुहोस् र दुई-वाक्य तर्क" जस्तो फ्रेमवर्कले आउटपुटलाई केन्द्रित गर्दछ।
  4. सानोको लागि सोध्नुहोस्। यसलाई एक विशाल अनुरोधको सट्टा चरणहरूमा तोड्नुहोस्; प्रत्येक चरण अलग रूपमा प्रमाणित गर्नुहोस्। ठूला परिवर्तनहरू जोखिमपूर्ण हुन्छन् किनभने तिनीहरू प्रमाणित गर्न गाह्रो हुन्छन् र त्रुटिहरू लुकाउने सम्भावना हुन्छ।
  5. प्रमाणित गर्नुहोस्। यसलाई चलाउनुहोस्, यसलाई परीक्षण गर्नुहोस्, यसलाई दृश्यात्मक रूपमा पढ्नुहोस्। अप्रमाणित एआई कोड एक "स्केच" हो, "समाधान" होइन। यो चक्रको सबैभन्दा गैर-विवादजनक चरण हो।

तीन मिनी केसहरू

केस 1 - समय बचत वास्तविक तर मामूली छ। जब टोलीले AI सँग नयाँ CRUD (Create-Read-Update-delete) अन्त्य बिन्दुहरू स्केलेटोनाइज गरे, पहिलो ड्राफ्ट समय लगभग 40 मिनेटबाट 8 मिनेटमा घट्यो। यद्यपि, समीक्षा र परीक्षणको साथ, कुल समय 25 मिनेट थियो; त्यसैले वास्तविक लाभ 40 देखि 25 सम्म हो, लगभग 38%। यो दर, "हामीले 10 पटक गति बढाएका छौं" को अपेक्षाको सट्टा मापन गरिएको एक दिगो लाभ हो।

केस 2 - भ्रम महँगो छ। एक विकासकर्ताले प्रमाणीकरण बिना AI-suggested requests.get_json() कल प्रयोग गर्यो; त्यहाँ त्यस्तो कुनै विधि थिएन (ठीक रूपमा response.json())। कोड कम्पाइल नगर्दा 20 मिनेट हरायो। एक सरल "यो विधि साँच्चै अवस्थित छ?" प्रमाणीकरणले हानि रिसेट गर्नेछ।

केस ३ - राम्रो सन्दर्भले आउटपुट दोब्बर गर्छ। एउटै बगको लागि, एक विकासकर्ताले मात्र "मैले त्रुटि प्राप्त गर्दैछु" लेख्यो र अर्कोले पूर्ण स्ट्याक ट्रेस, संस्करण, र इनपुट नमूना थप्यो। पछिल्लोले पहिलो प्रयासमा सही समाधान पायो; पहिलोले तीन पालो बितायो। भिन्नता मोडेलमा होइन, तर इनपुटमा थियो।

चार प्रतिलिपि गर्न मिल्ने टेम्प्लेटहरू

एक सामान्य-उद्देश्य, शक्तिशाली स्टार्टअप प्रम्प्ट:

भूमिका: तपाईं एक अनुभवी {{language}} विकासकर्ता हुनुहुन्छ।कार्य: {{what_want}}सन्दर्भ:- फ्रेमवर्क/संस्करण: {{framework_and_version}}- बाधाहरू: {{कार्यसम्पादन, शैली, निर्भरता नियम}}नियम:- अस्तित्वमा नभएको पुस्तकालय/प्रकार प्रयोग नगर्नुहोस्; यदि तपाइँ निश्चित हुनुहुन्न भने, "प्रमाणित" को रूपमा चिन्ह लगाउनुहोस्। - पहिले, छोटो योजना दिनुहोस्, त्यसपछि कोड, त्यसपछि औचित्यको 2 वाक्यहरू। - परीक्षण योग्य, कार्य कोड उत्पादन गर्नुहोस्।

मोडेलमा अनिश्चितता फिर्ता फिल्टर गर्न:

तलको कार्य समाधान गर्नु अघि, तपाईंले हराइरहेको वा अस्पष्ट प्रश्नहरूको रूपमा फेला पार्ने कम्तीमा 3 बिन्दुहरू सूचीबद्ध गर्नुहोस्। मैले जवाफ दिनु अघि कोड नलेख्नुहोस्।कार्य: {{task}}

आउटपुट स्व-जाँच गर्न:

तपाईंले निम्न कोड उत्पादन गर्नुभएको छ। अब आफ्नो भूमिका परिवर्तन गर्नुहोस् र यो कोडको आलोचना गर्नुहोस्: - 3 केसहरू (एज केसहरू) सूचीबद्ध गर्नुहोस् जसले काम नगर्न सक्छ।- के त्यहाँ कुनै एपीआई/कार्यहरू तपाईंले बनाउन सक्नुहुन्थ्यो? चिन्ह लगाउनुहोस्।- सही गरिएको संस्करण दिनुहोस्। कोड:{{code}}

निर्णयलाई विकल्पहरूमा विभाजन गर्न:

{{समस्या}} को लागि २-३ समाधान उपायहरू सुझाव गर्नुहोस्। प्रत्येकको लागि: छोटो विवरण, प्लस/माइनस, कहिले छनौट गर्ने। तालिकाको रूपमा दिनुहोस्। मेरो लागि छनौट नगर्नुहोस्; केवल विकल्प स्पष्ट गर्नुहोस्।

कमजोर प्रम्प्ट / बलियो प्रम्प्ट

कमजोर: "यो कोडमा बग समाधान गर्नुहोस्।" (कुन त्रुटि? कुन भाषा? अपेक्षित व्यवहार के हो?)
बलियो: "Python 3.11 / FastAPI 0.110। अनुरोधको मुख्य भाग खाली हुँदा निम्न अन्त पोइन्टले KeyError सँग 500 फर्काउँछ; म यसलाई 400 र खाली शरीरमा अर्थपूर्ण सन्देश फिर्ता गर्न चाहन्छु। पहिले कारण व्याख्या गर्नुहोस्, त्यसपछि सही प्रकार्य दिनुहोस्, त्यसपछि यस परिदृश्यको लागि परीक्षण लेख्नुहोस्। [code]"

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

सामान्य गल्तीहरू

  • प्रमाणीकरण बिना विश्वास। सबैभन्दा सामान्य र सबैभन्दा महँगो गल्ती। कोड कम्पाइल र परीक्षण नभएसम्म "समाधान" नभन्नुहोस्।
  • सन्दर्भ बिना प्रश्न सोध्नु। संस्करण, त्रुटि पाठ र प्रतिबन्ध बिना जवाफ सामान्य र अक्सर गलत छ।
  • एउटा ठूलो अनुरोध। अनुरोध गर्न र एकैचोटि 300-लाइन उत्पादन समीक्षा गर्न सक्षम नहुनुले गल्तीहरू अदृश्य बनाउँछ।
  • मोडेलको आत्म-विश्वास प्रमाणको रूपमा गलत गर्दै। AI ले ढुक्क भई केहि गलत भन्न सक्छ; टोन शुद्धताको सूचक होइन।
  • अनियमित रूपमा कम्पनी गोप्य टाँस्दै। निजी कुञ्जीहरू, ग्राहक डेटा वा निजी स्रोत कोड अस्वीकृत उपकरणहरूमा प्रविष्ट गर्नु हुँदैन (हामी एकाइ 10 मा यस विषयलाई खोल्नेछौं)।
सुझाव: हरेक AI आउटपुटलाई "यो मस्यौदा हो" भनी व्यवहार गर्नुहोस्। यो एकल मानसिक बानीले तपाईले सम्पूर्ण मोड्युलमा देख्नुहुने अधिकांश जोखिमहरू निभाउँछ।

संक्षेपमा

कोडिङ सहायक एउटा भाषा मोडेल हो जसले अर्को सम्भावित टुक्राको भविष्यवाणी गर्छ; यसले कोड बुझ्दैन, यसले ढाँचाहरू उत्पादन गर्दछ। त्यसैले उहाँ दोहोरिने, सूत्रगत कामहरूमा बलियो हुनुहुन्छ; यो सावधानीपूर्वक कामको लागि प्रयोग गरिनु पर्छ जुन प्रमाणीकरण आवश्यक छ जुन तपाइँको सन्दर्भमा विशिष्ट छ। सबैभन्दा ठूलो जोखिम भ्रम हो, र एक मात्र उपचार प्रमाणीकरण हो। हामीले सम्पूर्ण मोड्युलमा पालना गर्ने अनुशासन स्पष्ट छ: कार्य स्पष्ट गर्नुहोस्, सन्दर्भ दिनुहोस्, सानोको लागि सोध्नुहोस्, प्रत्येक डेलिभर योग्यलाई प्रमाणित गर्नुहोस्।

आवेदन कार्य

तपाईंले पछिल्लो हप्तामा गर्नुभएका तीनवटा सफ्टवेयर कार्यहरू लेख्नुहोस् (जस्तै बग समाधान, परीक्षण, README अपडेट)। प्रत्येकको लागि "शक्ति र कमजोरीहरू नक्सा" हेर्नुहोस् र एआईले यसो गरेको भए तपाईंको र एआईको भूमिका के हुनेछ भनेर एक वाक्यमा वर्णन गर्नुहोस्। त्यसपछि माथिको "स्टार्ट प्रम्प्ट" टेम्प्लेटको साथ AI लाई यी कार्यहरू मध्ये एउटा दिनुहोस् र आउटपुट चलाउनुहोस् र प्रमाणित गर्नुहोस्; तपाईंले कति मिनेट बचत गर्नुभयो र कति गल्तीहरू तपाईंले ठीक गर्नु भएको थियो नोट गर्नुहोस्।

चेकलिस्ट

  • [ ] मैले महसुस गरें कि LLM ले ढाँचाहरू उत्पादन गर्छ, "बुझ्ने" कोड होइन।
  • [ ] म एउटा वाक्यमा टोकन, कन्टेक्स्ट विन्डो र प्रम्प्टका अवधारणाहरू व्याख्या गर्न सक्छु।
  • [ ] म एआई बलियो र कमजोर हुने कार्यका प्रकारहरू बीच छुट्याउन सक्छु।
  • [ ] मलाई थाहा छ एक भ्रम के हो र एक मात्र उपाय प्रमाणीकरण हो।
  • [ ] मैले "प्रस्ताव, उत्पादन, प्रमाणीकरण" चक्रलाई मेरो आफ्नै कार्यमा अनुकूलित गरें।
  • [ ] म ठोस उदाहरणमा बलियो प्रम्प्ट र कमजोर प्रम्प्ट बीचको भिन्नता देखाउन सक्छु।