Табыстар:
- Кірістірілген аяқтау арқылы тапсырма түрін түзету үшін сөйлесу режимін салыстыру мүмкіндігі
- Енгізу/шығару келісім-шарттарын, шеткі жағдайларды және стиль шектеулерін қамтитын қуатты өндіріс нұсқауларын жазу мүмкіндігі
- Жасалған кодты және біріктіру алдында кез келген жаңа ұсынылған тәуелділіктерді тексеру мүмкіндігі
Әзірлеушінің AI-мен бірінші байланыс нүктесі көбінесе автотолтыру болып табылады — бұл теру кезінде келесі жолды ұсынатын мүмкіндік — немесе чат терезесіне «сол функцияны теріңіз» деп айту. Екеуі де бірдей қозғалтқышты пайдаланады, бірақ әртүрлі пәндерді қажет етеді. Бұл блокта біз код генерациясын кездейсоқ «жазып алудан» шығуы болжамды және тексерілетін инженерлік қадамға айналдырамыз.
Мақсат - AI-ны теру машинаңызды жылдамдататын құралдан сіз қойған шектеулер аясында жұмыс істейтін шәкіртке айналдыру. Жақсы жетекшілік ететін шәкірт уақытты үнемдейді; Бақыланбайтын шәкірт кейін тазалауға тура келетін тәртіпсіздік тудырады.
Екі пайдалану режимі: кірістірілген аяқтау және чат
Кірістірілген аяқтау редакторда терген кезде іске қосылады; Функция қолтаңбасын немесе түсініктеме жолын тересіз және ол қалғанын ұсынады. Бұл жылдамдық үшін тамаша, бірақ оның тар контексті бар: ол кодты тек жақын аймақта көреді. Сондықтан түсініктемеде ниетіңізді анық жазғаныңыз жақсы жұмыс істейді. Мысалы, //пайдаланушы электрондық поштасын тексеру, егер жарамсыз түсініктеме төмендегі ұсынысты айтарлықтай жақсартса, ValidationError жіберіңіз.
Чат режимі үлкенірек және құрылымдық тапсырмаларға арналған: «Осы сыныпқа беттеуді қосу», «Сол қызметтің интерфейсін шығару». Мұнда сізде рөл, контекст және формат беру салтанаты бар. Жалпы ереже: шағын және ағынды тапсырмаларды орындау, ойлау мен құрылымды қажет ететін тапсырмалар үшін әңгімелесу.
Кеңес: "Tab" арқылы аяқтау туралы ұсынысты соқыр қабылдамаңыз. Ұсынылған жолды бір секунд оқыңыз; Дұрыс емес айнымалы атауы немесе инверттелген шарт көбінесе осы жерден ағып кетеді.
Ниетті кодқа аудару қадамдары
- Келісімшартқа анықтама беріңіз. Функцияның кіріс, шығыс және қате әрекеті қандай? «Электрондық поштаны алу, жарамды болса қалыпқа келтіру, жарамсыз болса қате жіберу» сияқты.
- Шектеулерді көрсетіңіз. Сыртқы тәуелділікті қолданбайсыз ба? Арнайы стиль нұсқаулығы? Өнімділік шегі бар ма?
- Мысал келтіріңіз. Енгізу-шығару жұбы («ali@x.com → жарамды, ali@ → қате») модельдің ниет туралы түсінігін болжаудан дәлдікке жылжытады.
- Кішкентай бөліктерді сұраңыз. Бір функция, бір жауапкершілік. Содан кейін келесіге өтіңіз.
- Жасалған кодты оқып, іске қосыңыз. Компиляция + қолмен жылдам әрекет ету - ең арзан кепілдік қадамы.
Үш шағын корпус
1-жағдай — Түсініктемеге негізделген өндіріс дәлдікті арттырады. Әзірлеуші алдымен бос денемен күнді талдау функциясын сұрады және 3 раундта дұрыс нәтиже алды. Екінші әрекетте функцияны 4 жолдық түсініктемемен (қабылданған форматтар, уақыт белдеуі ережесі, қате шарты) анықтап, оны сұраған кезде бірінші айналымда жұмыс істеген код келді. Бір үлгі, сол күні; айырмашылық тек ниеттің анықтығында болды.
2-жағдай — Нұсқаны көрсетпеу қымбатқа түседі. Бір топ Node.js үшін жасалған кодтағы fs.promises ауыстыратын бұрынғы кері қоңырауға негізделген API-мен күресті. Шақыруға "Түйін 20, ESM, асинхронды/күтуді пайдалану" жолы қосылғанда, өндіріс бірінші рет жобаны орындады; Түзетуге жұмсалған орташа 12 минут қалпына келтірілді.
3-жағдай — Бойлерлік кодтағы нақты пайда. Микросервиске 6 жаңа DTO (Data Transfer Object — қабаттар арасында деректерді тасымалдайтын қарапайым деректер класы) және оларды тексеру ережелері қажет. Бұрын шамамен 90 минуттық қолмен жұмыс жасайтын уақыт AI жасаған және қараған кезде 35 минутқа дейін қысқарды; Кодтың қайталануы жоғары және үлгі анық болғандықтан, AI мұнда ең тиімді аймақта жұмыс істеді.
Көшірілетін төрт үлгі
Келісім-шарт негізінде функцияны құру:
Рөл: Сіз еңбекқор {{language}} әзірлеушісіз. Функция шарты:- Аты: {{аты}}- Енгізу: {{түрлері және олардың мағынасы}}- Шығару: {{түрі және мағынасы}}- Қате күйі: {{қандай шығарылды/қайтарылады}}Шектеулер: {{сыртқы тәуелділіктер жоқ / стиль / өнімділік}}Мысалдар: ->_}- {{entry_2}} -> {{error_2}}Алдымен қолтаңба + қысқа жоспар, содан кейін код беріңіз. Жазу сынақтары, тек функция.
Қолданыстағы стильге сәйкес келу үшін (код базасына бейімделу):
Төменде біздің жобадан мысал функциясы берілген; Мұнда атауды, қателерді өңдеуді және түсініктеме беру стилін үйреніңіз. {{new_task}} функциясын SAME стильмен жазыңыз. Мысал: {{ағымдағы_код}}
Қаңқадан толтыруға дейін (stub → іске асыру):
Түсініктемедегі TODO сөздеріне сәйкес төмендегі функция қаңқасын толтырыңыз. Қолтаңбаны және қайтару түрін ӨЗГЕРТіңіз. Болмайтын көмекші функцияны жасамаңыз; қажет болса, маған «бұл көмекші керек» деп хабарлаңыз. {{skelet_kod}}
Балама қолданбаны салыстыру:
{{тапсырма}} үшін 2 түрлі іске асыруды көрсетіңіз: (а) оқуға басымдық беру, (б) өнімділікке басымдық беру. Әр сөйлемнің астына «қашан жақсырақ» деген 1 сөйлем жазыңыз.
Әлсіз шақыру / Күшті шақыру
Әлсіз: "Маған электрондық поштаны тексеру функциясын жазыңыз."
Күшті: "TypeScript 5, стандартты кітапхана ғана. isValidEmail (енгізу: жол): логикалық мәнді жазыңыз. Бос орындарды кесіңіз, регистрді ескермеңіз, a@b.co жарамды, a@, @b.co, бос жол жарамсыз. Егер сіз regex қолданатын болсаңыз, тым күрделі болмаңыз; түсініктемелер 2 жолын қосыңыз."
Күшті нұсқасы; Тілді, нұсқаны, қолтаңбаны, шеткі регистрлерді және стиль шектеуін қайтарады. Осылайша, жасалған код жұмыс істейді және жобаңызға сәйкес келеді.
Тәсіл
Қашан пайдалану керек
Назар аударыңыз
Кірістірілген аяқтау
Ағындағы шағын кірістірулер
Ұсынысты оқымай қабылдамаңыз
Чатта келісім-шарт негізіндегі өндіріс
Жаңа функция/сынып
Мысал және шеткі жағдайды келтіріңіз
Стиль үлгісі бойынша өндіру
Бар кодқа қосу
Ағымдағы үлгі кодын таңдаңыз
қаңқа толтыру
Қолтаңба бекітілген, негізгі мәтін бос
Қолтаңбаны өзгерту
Кодтың қайталануы және тәуелділік тұзағы
AI жиі жұмысын жеңілдету үшін жаңа кітапхананы ұсынады. Кейде бұл дәл, кейде жобаңызға қажетсіз тәуелділікті қосады немесе жоқ пакетті ұсынады (галлюцинация). Ереже: әрбір жаңа тәуелділікті растайсыз. Пакеттің шын мәнінде бар екенін, сақталғанын және тиісті лицензиясы бар екенін тексермей оны жобаға қоспаңыз. Көбінесе жобада бар көмекші жаңа пакеттен жақсы.
Абайлаңыз: AI ұсынған импорттау жолдарын қарап шығыңыз. Қолда жоқ бума атауы (сонымен қатар ол «типті жазу» деп аталатын жалған пакеттерге ұқсауы мүмкін) компиляцияны бұзады және қауіпсіздікке қауіп төндіреді.
Жалпы қателер
- Үлгі бойынша анықталған қолтаңбаның болуы. Енгізу/шығару түрлерін түзетпесеңіз, әр өндірісте басқа қолтаңба келеді және интеграция қиындайды.
- Шеткі жағдайларды айтпағанның өзінде. Бос енгізу, нөл, теріс сан, өте үлкен мән — егер сіз оларды көрсетпесеңіз, үлгі шеттерін өткізіп жіберіп, «бақытты жолды» жазады.
- Ұсынысты сынамай біріктіру. Жұмыс істейтін болып көрінетін код оның жұмыс істейтінін білдірмейді.
- Қажетсіз тәуелділікті қабылдау. Бір лайнер үшін бүкіл кітапхананы қосу техникалық қарызды тудырады.
- Стиль сәйкессіздігі. Жобаның қалған бөлігінен басқаша атау және қателерді өңдеу код негізін патч етеді.
Қысқаша айтқанда
Нақты келісім-шартқа ниетті аударған кезде кодты құру күшті болады. Кішігірім, ағындағы тапсырмалар үшін және сөйлесуде құрылымды орнататын тапсырмалар үшін кірістірілген аяқтауды пайдаланыңыз. Енгізу/шығару түрлерін, шеткі регистрлерді, нұсқаны және стильді көрсетесіз; Үлгіге мысал келтіріңіз; әрбір жаңа тәуелділікті тексеру; және әрбір шығарылған бөлікті жүгіріп оқыңыз. AI формулалық, қайталанатын кодта жақсы нәтиже береді — оны дәл сол жерде, сіз орнатқан шекте іске қосыңыз.
Қолданбалы тапсырма
Жобаңыздан жазуыңыз керек нақты шағын функцияны таңдаңыз. Алдымен оны енгізу/шығару түрлерін, екі шеткі регистрді және стиль шектеуін беретін «келісімшартқа негізделген функцияны құру» үлгісімен AI-ға басып шығарыңыз. Жасалған кодты құрастырыңыз және оны екі түрлі кіріспен қолданып көріңіз. Содан кейін сол функцияны қайта сұраңыз, бұл жолы ешбір мәтінмәнсіз «маған осыны жазыңыз» және екі шығысты жол бойынша салыстырыңыз: қай шеткі жағдайлар өткізіп алынды, қанша түзету қажет болды?
бақылау парағы
- [ ] Мен кірістірілген аяқтаумен сөйлесу режимін қайда пайдалану керектігін білемін.
- [ ] Функция генерациясында енгізу/шығару келісімін және шеткі жағдайларды анықтаймын.
- [ ] Мен сұрауға тіл мен нұсқа ақпаратын қосуды әдетке айналдырдым.
- [ ] Мен әрбір өндірілген бөлікті құрастырмас бұрын құрастырып, сынаймын.
- [ ] Мен AI ұсынған әрбір жаңа тәуелділікті оның бар болуы мен қажеттілігін тексеру арқылы растаймын.
- [ ] Жасалған код жобаның стиліне сәйкес келетінін тексеремін.