युनिट 1 / 12

सॉफ्टवेअर टीम्ससाठी कृत्रिम बुद्धिमत्ता: कार्यरत मॉडेल आणि मर्यादा

नफा:

  • कोडिंग सहाय्यक भाषा मॉडेल म्हणून कसे कार्य करते आणि टोकन, संदर्भ विंडो, भ्रम या संकल्पना स्पष्ट करण्याची क्षमता
  • AI मजबूत आणि मानसिक नकाशासह कमकुवत असलेल्या सॉफ्टवेअर कार्यांमध्ये फरक करण्याची क्षमता
  • त्यांच्या स्वतःच्या कार्यांसाठी प्रस्ताव-उत्पादन-सत्यापित करण्याचे मूलभूत कार्य चक्र लागू करण्याची क्षमता

सॉफ्टवेअर डेव्हलपरचा दिवस क्वचितच "सुरुवातीपासून कोड लिहिण्यात" घालवला जातो. वास्तविक वेळ; दुसऱ्याने लिहिलेला कोड वाचणे, बगचे पुनरुत्पादन करण्याचा प्रयत्न करणे, लॉग स्कॅन करणे (चालू असताना ऍप्लिकेशनद्वारे तयार केलेल्या लॉग लाईन्स), चाचण्या लिहिणे, PR लिहिणे (पुल रिक्वेस्ट - विलीन करण्याची विनंती जेथे टीम पुनरावलोकनासाठी कोड बदल सबमिट केला जातो) स्पष्टीकरण आणि दस्तऐवज अद्यतनित करणे. आर्टिफिशियल इंटेलिजन्स (AI) हा स्पीड गुणक आहे जो या न पाहिलेल्या सर्व नोकऱ्यांना स्पर्श करू शकतो. परंतु ते सुरक्षितपणे वापरण्याची पहिली अट म्हणजे ते काय आहे आणि काय नाही हे योग्यरित्या समजून घेणे.

या युनिटमध्ये, आम्ही प्रथम साध्या भाषेत कोडिंग असिस्टंटचे मूलभूत तंत्रज्ञान स्पष्ट करतो; मग आम्ही मॉडेलची ताकद आणि कमकुवतपणाचा मानसिक नकाशा तयार करतो; शेवटी, आम्ही मूलभूत कार्य शिस्त स्थापित करतो जी आम्ही संपूर्ण मॉड्यूलमध्ये वापरू: प्रस्तावित करा, उत्पादन करा, सत्यापित करा. हे तीन टप्पे पुढील अकरा एककांचा कणा आहेत.

टीप: हे मॉड्यूल एक सामान्य प्रशिक्षण आहे. सुरक्षा-गंभीर सॉफ्टवेअरमध्ये (पेमेंट प्रोसेसिंग, हेल्थकेअर, ऑथेंटिकेशन, क्रिटिकल इन्फ्रास्ट्रक्चर) AI आउटपुट हे पात्र अभियंत्याकडून पुनरावलोकन आणि मंजुरीसाठी पर्याय नाही. AI एक सहाय्यक आहे; स्वाक्षरी करणारा अभियंता आहे.

कोडिंग असिस्टंट प्रत्यक्षात काय करतो?

बहुतेक कोडिंग सहाय्यक मोठ्या भाषेच्या मॉडेलवर तयार केले जातात (LLM—एक AI मोठ्या प्रमाणात मजकूर आणि कोडवर प्रशिक्षित आहे जे पुढील बहुधा "खंड" ची भविष्यवाणी करते). मॉडेल माणसाप्रमाणे कोड "समजत" नाही; हे तुम्ही दिलेल्या संदर्भाची बहुधा निरंतरता व्युत्पन्न करते, ज्या नमुन्यांवर आधारित ते उदाहरणांच्या प्रचंड समूहातून शिकते. ही वरवर सोपी यंत्रणा सरावात आश्चर्यकारकपणे कुशल परिणाम देते — कारण बहुतेक सॉफ्टवेअरमध्ये पुनरावृत्ती नमुने असतात: HTTP विनंती, एक लूप, एक शून्य तपासणी, एक चाचणी नमुना.

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

सामर्थ्य आणि कमकुवतपणा नकाशा

एआयला योग्य नोकऱ्यांकडे निर्देशित करण्यासाठी, ते कुठे चमकते आणि कुठे अडखळते हे जाणून घेणे आवश्यक आहे. हा नकाशा लक्षात ठेवल्याने तुम्हाला पुढील प्रत्येक मिशनमध्ये आश्चर्य वाटेल, "मी हे काम AI ला आउटसोर्स करावे की ते स्वतः करावे?" हे आपल्याला काही सेकंदात प्रश्नाचे उत्तर देण्यास अनुमती देते.

त्याची सामर्थ्ये आहेत: बॉयलरप्लेट कोड तयार करणे, एका भाषेतून दुसऱ्या भाषेत भाषांतर करणे, नियमित अभिव्यक्ती (रेजेक्स) लिहिणे, फंक्शनचे वर्णन करणे, चाचणी सांगाडा तयार करणे, त्रुटी संदेशाचा अर्थ लावणे, दस्तऐवजीकरण मसुदा तयार करणे, व्हेरिएबल/फंक्शन नावे सुचवणे आणि किरकोळ रिफॅक्टरिंग्ज (कोडचे वर्तन न बदलता त्याची रचना सुधारणे).

कमकुवतपणा: तुमचे कंपनी-विशिष्ट व्यवसाय नियम जाणून घेणे, तुमचा संपूर्ण कोड बेस लक्षात ठेवणे, कोड प्रत्यक्षात चालवणे आणि पडताळणे, लायब्ररीच्या नवीनतम आवृत्त्या निश्चितपणे जाणून घेणे, शंभर टक्के हमीसह सुरक्षितता भेद्यता ओळखणे. सर्वात धोकादायक गोष्ट म्हणजे भ्रम: मॉडेल अस्तित्वात नसलेले फंक्शन, लायब्ररी किंवा API (ॲप्लिकेशन्स दरम्यान डेटा एक्सचेंज सक्षम करणारा इंटरफेस) अतिशय विश्वासार्ह भाषेत शोधतो. हा धोका प्रत्यक्षात तुमच्या फायद्यासाठी वळवला जाऊ शकतो, कारण कोड, साध्या मजकुराच्या विपरीत, तो “काम करतो” किंवा नाही हे पाहण्यासाठी चाचणी केली जाऊ शकते — फक्त सत्यापन चरण वगळू नका.

मिशन प्रकार

AI ची भूमिका

माणसाची भूमिका

बॉयलरप्लेट/कंकाल तयार करा

मसुदा तयार करतो

जुळवून घेते, पुनरावलोकने

कोड वर्णन

द्रुत सारांश देतो

कोडमधील गंभीर भाग सत्यापित करते

लेखन चाचण्या

केस सुचवते

कव्हरेज आणि अचूकतेची पुष्टी करते

सुरक्षा-गंभीर तर्क

उपयुक्त कल्पना

निर्णय आणि जबाबदारी पूर्णपणे माणसांवर अवलंबून असते.

API/लायब्ररी वापर

नमुना तयार करतो

अस्तित्व आणि आवृत्ती सत्यापित करते

आर्किटेक्चरल निर्णय

पर्यायांचे प्रकार

संदर्भ जाणून निवडतो आणि बचाव करतो

स्टेप बाय स्टेप: बेसिक वर्किंग सायकल

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

तीन मिनी केसेस

केस 1 - वेळेची बचत वास्तविक परंतु माफक आहे. जेव्हा एका टीमने AI सह नवीन CRUD (तयार-वाच-अपडेट-डिलीट) एंडपॉइंट्स तयार केले, तेव्हा प्रथम मसुदा वेळ अंदाजे 40 मिनिटांवरून 8 मिनिटांवर घसरला. तथापि, पुनरावलोकन आणि चाचणीसह, एकूण वेळ 25 मिनिटे होती; त्यामुळे खरा फायदा 40 ते 25 पर्यंत आहे, सुमारे 38%. हा दर, "आम्ही 10 वेळा वेग वाढवला आहे" या अपेक्षेऐवजी मोजला गेला, तो शाश्वत लाभ आहे.

केस 2 - मतिभ्रम महाग आहे. डेव्हलपरने AI-suggested requests.get_json() कॉल प्रमाणीकरणाशिवाय वापरला; अशी कोणतीही पद्धत नव्हती (तंतोतंत प्रतिसाद. json()). कोड संकलित न केल्यावर 20 मिनिटे वाया गेली. एक साधी "ही पद्धत खरोखर अस्तित्वात आहे का?" सत्यापन नुकसान रीसेट करेल.

केस 3 - चांगला संदर्भ आउटपुट दुप्पट करतो. त्याच बगसाठी, एका विकसकाने फक्त "मला एरर येत आहे" असे लिहिले आणि दुसऱ्याने संपूर्ण स्टॅक ट्रेस, आवृत्ती आणि इनपुट नमुना जोडला. उत्तरार्धात पहिल्याच प्रयत्नात योग्य उपाय मिळाला; पहिल्याने तीन वळणे घालवली. फरक मॉडेलमध्ये नव्हता, परंतु इनपुटमध्ये होता.

चार कॉपी करण्यायोग्य टेम्पलेट्स

एक सामान्य हेतू, शक्तिशाली स्टार्टअप प्रॉम्प्ट:

भूमिका: तुम्ही एक अनुभवी {{language}} विकसक आहात.कार्य: {{what_want}}संदर्भ:- फ्रेमवर्क/आवृत्ती: {{framework_and_version}}- मर्यादा: {{कार्यप्रदर्शन, शैली, अवलंबित्व नियम}}नियम:- अस्तित्वात नसलेली लायब्ररी/फंक्शन वापरू नका; तुम्हाला खात्री नसल्यास, "सत्यापित करा" म्हणून चिन्हांकित करा. - प्रथम, एक लहान योजना द्या, नंतर कोड, नंतर औचित्याची 2 वाक्ये. - चाचणी करण्यायोग्य, कार्यरत कोड तयार करा.

अनिश्चितता परत मॉडेलमध्ये फिल्टर करण्यासाठी:

खालील कार्य सोडवण्यापूर्वी, कमीत कमी 3 गुणांची यादी करा जे तुम्हाला प्रश्न म्हणून गहाळ किंवा अस्पष्ट वाटतात. मी उत्तर देण्यापूर्वी कोड लिहू नका. कार्य: {{task}}

आउटपुट स्वयं-तपासणीसाठी:

तुम्ही खालील कोड तयार केला आहे. आता तुमची भूमिका बदला आणि या कोडवर टीका करा:- 3 केसेस (एज केसेस) सूचीबद्ध करा जे कदाचित कार्य करणार नाहीत.- तुम्ही बनवू शकले असते असे काही API/कार्ये आहेत का? चिन्हांकित करा.- दुरुस्त केलेली आवृत्ती द्या.कोड:{{code}}

निर्णयाचे पर्यायांमध्ये विभाजन करण्यासाठी:

{{समस्या}} साठी २-३ उपाय सुचवा. प्रत्येकासाठी: लहान वर्णन, अधिक/वजा, कधी निवडायचे. सारणी स्वरूपात द्या. माझ्यासाठी निवडू नका; फक्त पर्याय स्पष्ट करा.

कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट

कमकुवत: "या कोडमधील बगचे निराकरण करा." (कोणती त्रुटी? कोणती भाषा? अपेक्षित वर्तन काय आहे?)
सशक्त: "Python 3.11 / FastAPI 0.110. खालील एंडपॉईंट KeyError सह 500 रिटर्न करतो जेव्हा रिक्वेस्ट बॉडी रिकामी येते; मला तो 400 आणि रिकाम्या बॉडीवर अर्थपूर्ण संदेश परत करायचा आहे. प्रथम कारण स्पष्ट करा, नंतर दुरुस्त केलेले कार्य द्या, नंतर या परिस्थितीसाठी चाचणी लिहा. [कोड]"

शक्तिशाली आवृत्ती; हे भाषा, आवृत्ती, वास्तविक त्रुटी, अपेक्षित वर्तन आणि आउटपुट स्वरूप देते. मॉडेलला आता अंदाज लावायचा नाही.

सामान्य चुका

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

सारांशात

कोडिंग असिस्टंट हे एक भाषा मॉडेल आहे जे पुढील संभाव्य तुकड्याचा अंदाज लावते; तो कोड समजत नाही, तो नमुने तयार करतो. म्हणूनच तो पुनरावृत्ती, सूत्रबद्ध नोकऱ्यांमध्ये मजबूत आहे; तुमच्या संदर्भाशी संबंधित पडताळणी आवश्यक असलेल्या कामासाठी ते सावधपणे वापरले पाहिजे. सर्वात मोठा धोका म्हणजे मतिभ्रम, आणि एकमेव उतारा म्हणजे पडताळणी. संपूर्ण मॉड्यूलमध्ये आम्ही जी शिस्त पाळणार आहोत ती स्पष्ट आहे: कार्य स्पष्ट करा, संदर्भ द्या, लहान विचारा, प्रत्येक वितरित करण्यायोग्य प्रमाणित करा.

अर्ज कार्य

मागील आठवड्यात तुम्ही केलेली तीन सॉफ्टवेअर कार्ये लिहा (उदा. बग निराकरण, चाचणी, README अपडेट). प्रत्येकासाठी “सामर्थ्य आणि कमकुवतपणा नकाशा” पहा आणि एका वाक्यात वर्णन करा की तुमची आणि AI ची भूमिका काय असेल जर तुमच्याकडे AI ने हे केले असेल. नंतर वरील “स्टार्ट प्रॉम्प्ट” टेम्प्लेटसह यापैकी एक कार्य AI ला द्या आणि आउटपुट चालवा आणि सत्यापित करा; तुम्ही किती मिनिटे वाचवली आणि किती चुका दुरुस्त करायच्या आहेत हे लक्षात घ्या.

चेकलिस्ट

  • [ ] मला जाणवले की LLM नमुने तयार करते, कोड "समजत" नाही.
  • मी टोकन, कॉन्टेक्स्ट विंडो आणि प्रॉम्प्टच्या संकल्पना एका वाक्यात स्पष्ट करू शकतो.
  • [] AI मजबूत आणि कमकुवत असलेल्या कार्यांच्या प्रकारांमध्ये मी फरक करू शकतो.
  • [ ] मला माहित आहे की भ्रम म्हणजे काय आणि एकमेव उतारा म्हणजे पडताळणी.
  • मी माझ्या स्वतःच्या कार्यासाठी "प्रस्ताव, उत्पादन, पडताळणी" चक्र स्वीकारले.
  • [ ] मी एका ठोस उदाहरणामध्ये मजबूत प्रॉम्प्ट आणि कमकुवत प्रॉम्प्टमधील फरक दर्शवू शकतो.