Бірлік 1 / 12

Бағдарламалық жасақтама командаларына арналған жасанды интеллект: жұмыс моделі және шектеулер

Табыстар:

  • Кодтау көмекшісінің тіл үлгісі ретінде қалай жұмыс істейтінін және токен, контекстік терезе, галлюцинация ұғымдарын түсіндіру мүмкіндігі
  • Ментальды картамен AI күшті және әлсіз бағдарламалық қамтамасыз ету тапсырмаларын ажырата білу
  • Ұсыну-шығару-тексерудің негізгі жұмыс циклін өз міндеттеріне қолдана білу

Бағдарламалық жасақтаманы жасаушының күні «нөлден код жазуға» сирек жұмсалады. Нақты уақыт; Басқа біреу жазған кодты оқу, қатені қайта шығаруға әрекет жасау, журналды сканерлеу (жұмыс кезінде қолданба шығарған журнал желілері), сынақтарды жазу, PR жазу (тарту сұрауы - кодты өзгерту топтың қарауына жіберілетін біріктіру сұрауы) түсіндіру және құжаттаманы жаңарту. Жасанды интеллект (AI) бұл көрінбейтін жұмыстардың барлығына дерлік әсер ете алатын жылдамдық мультипликаторы болып табылады. Бірақ оны қауіпсіз пайдаланудың бірінші шарты - бұл не екенін және оның не екенін дұрыс түсіну.

Бұл бөлімде біз алдымен қарапайым тілде кодтау көмекшісінің негізгі технологиясын түсіндіреміз; содан кейін модельдің күшті және әлсіз жақтарының ментальды картасын жасаймыз; Соңында, біз бүкіл модульде қолданатын негізгі жұмыс тәртібін белгілейміз: ұсыну, шығару, тексеру. Бұл үш қадам келесі он бір бөлімшенің тірегі болып табылады.

Ескерту: Бұл модуль жалпы оқыту болып табылады. Қауіпсіздік тұрғысынан маңызды бағдарламалық құралда (төлемді өңдеу, денсаулық сақтау, аутентификация, маңызды инфрақұрылым) AI шығысы білікті инженердің қарауын және мақұлдауын алмастырмайды. AI - көмекші; Қол қоюшы - инженер.

Кодтау көмекшісі іс жүзінде не істейді?

Көптеген кодтау көмекшілері үлкен тіл үлгісіне негізделген (LLM — келесі ең ықтимал «бөлікті» болжайтын мәтін мен кодтың үлкен көлеміне үйретілген AI). Модель адам сияқты кодты «түсінбейді»; Ол мысалдардың үлкен пулынан үйренетін үлгілер негізінде сіз берген контексттің ең ықтимал жалғасын жасайды. Қарапайым болып көрінетін бұл механизм тәжірибеде таңқаларлықтай білікті нәтижелер береді, өйткені бағдарламалық қамтамасыз етудің көпшілігі қайталанатын үлгілерден тұрады: HTTP сұрауы, цикл, нөлдік тексеру, сынақ үлгісі.

Мұнда үш термин маңызды. Токен – модель мәтінді бөлу арқылы өңдейтін ең кіші бірлік; Бұл шамамен бірнеше әріп немесе сөздің бір бөлігі. Мәтінмәндік терезе – модель бірден «көре алатын» таңбалауыштардың саны; Сіздің кодыңыз, қате туралы хабарыңыз және нұсқауыңыз осы терезеге сәйкес келуі керек. Шақыру - үлгіге беретін барлық нұсқаулар мен мәтінмән. Сіз алатын нәтиженің сапасы осы екеуіне тікелей байланысты: үлгіге неғұрлым жақсы контекст және анық нұсқаулар берсеңіз, соғұрлым жақсы нәтиже аласыз. Нашар енгізу, тіпті смарт модель болса да, нашар нәтиже береді — бағдарламалық жасақтаманың классикалық «қоқыс шығару, қоқыс шығару» ережесі AI-ға да қатысты.

Күшті және әлсіз жақтары картасы

Жасанды интеллектті дұрыс жұмысқа бағыттау үшін оның қай жерде жарқырап, қай жерде сүрінетінін білу қажет. Бұл картаны есте сақтау әрбір келесі тапсырмада сізді таң қалдырады: «Мен бұл жұмысты AI-ға беруім керек пе, әлде оны өзім істеу керек пе?» Бұл сұраққа секундтарда жауап беруге мүмкіндік береді.

Оның күшті жақтары мыналар: стандартты кодты жасау, бір тілден екінші тілге аудару, тұрақты өрнек жазу (регекс), функцияны сипаттау, сынақ қаңқасын жасау, қате туралы хабарды түсіндіру, құжаттаманы жасау, айнымалы/функция атауларын ұсыну және кішігірім рефакторингтер (оның мінез-құлқын өзгертпестен код құрылымын жақсарту).

Әлсіз жақтары: компанияға тән бизнес ережелерін білу, бүкіл код базасын есте сақтау, кодты нақты іске қосу және тексеру, кітапхананың соңғы нұсқаларын білу, жүз пайыздық кепілдікпен қауіпсіздіктің осал тұстарын анықтау. Ең қауіпті нәрсе - галлюцинация: модель жоқ функцияны, кітапхананы немесе API (қосымшалар арасында деректер алмасуға мүмкіндік беретін интерфейс) өте сенімді тілде ойлап табады. Бұл тәуекел шын мәнінде сіздің пайдаңызға айналуы мүмкін, өйткені қарапайым мәтіннен айырмашылығы кодты оның «жұмыс істейтінін» тексеру үшін тексеруге болады — тексеру қадамын өткізіп жібермеңіз.

Миссия түрі

АИ рөлі

адамның рөлі

Плитаны/қаңқаны жасаңыз

жобасын жасайды

Бейімдеу, шолу

Код сипаттамасы

Жылдам қорытынды жасайды

Кодтағы маңызды бөлікті тексереді

жазу сынақтары

Кейс ұсынады

Қамтуды және дәлдікті растайды

Қауіпсіздік-критикалық логика

пайдалы идея

Шешім мен жауапкершілік толығымен адамдарға байланысты.

API/кітапхананы пайдалану

Үлгі жасайды

Барын және нұсқасын тексереді

сәулеттік шешім

Опциялардың түрлері

Мәтінмәнді біле отырып таңдайды және қорғайды

Қадамдық: Негізгі жұмыс циклі

  1. Тапсырманы нақтылау. Қалағаныңды бір сөйлеммен жаза алмасаң, үлгі де жаза алмайды. Белгісіздік неғұрлым ертерек кіріске енсе, соғұрлым ол шығыста өседі.
  2. Контекст беріңіз. Шақыруға сәйкес кодты, толық қате туралы хабарды, тілді/жақтау нұсқасын және шектеулерді қосыңыз. «Мұны түзет» деп айтпаңыз, «Python 3.11, FastAPI 0.110; бұл функция 500 қате береді, сұрау мәтіні бос болғанда жарылып кетеді» деңіз.
  3. Рөл мен форматты енгізу. «Сіз аға Go әзірлеушісісіз; жай ғана код пен екі сөйлемнен тұратын негіздеме беріңіз» сияқты құрылым нәтижеге бағытталған.
  4. Кішкентай сұраңыз. Оны бір үлкен сұранысқа емес, қадамдарға бөліңіз; Әрбір қадамды бөлек тексеріңіз. Негізгі өзгерістер қауіпті, себебі оларды тексеру қиын және қателерді жасыруға бейім.
  5. Тексеру. Оны іске қосыңыз, сынап көріңіз, визуалды түрде оқыңыз. Тексерілмеген AI коды «шешім» емес, «эскиз» болып табылады. Бұл циклдің ең келіспейтін қадамы.

Үш шағын корпус

1-жағдай - Уақытты үнемдеу нақты, бірақ қарапайым. Команда жаңа CRUD (жасау-оқу-жаңарту-жою) соңғы нүктелерін AI көмегімен қаңқалағанда, бірінші жоба уақыты шамамен 40 минуттан 8 минутқа дейін қысқарды. Дегенмен, шолу және тестілеу кезінде жалпы уақыт 25 минутты құрады; сондықтан нақты пайда 40-тан 25-ке дейін, шамамен 38% құрайды. «10 есе жылдамдадық» деген күтудің орнына өлшенген бұл көрсеткіш тұрақты табыс.

2-жағдай – Галлюцинация қымбатқа түседі. Әзірлеуші ​​AI ұсынған requests.get_json() қоңырауын тексерусіз пайдаланды; Мұндай әдіс болған жоқ (дәл жауап.json()). Код құрастырылмаған кезде 20 минут жоғалды. Қарапайым «бұл әдіс шынымен бар ма?» тексеру жоғалтуды қалпына келтіреді.

3-жағдай - Жақсы контекст шығысты екі есе арттырады. Дәл осындай қате үшін бір әзірлеуші ​​жай ғана «Мен қате алып жатырмын» деп жазды, ал екіншісі толық стек ізін, нұсқасын және енгізу үлгісін қосты. Соңғысы бірінші әрекетте дұрыс шешім тапты; Біріншісі үш айналымды өткізді. Айырмашылық үлгіде емес, кірісте болды.

Көшірілетін төрт үлгі

Жалпы мақсаттағы, қуатты іске қосу нұсқауы:

Рөл: Сіз тәжірибелі {{language}} әзірлеушісісіз. Тапсырма: {{what_want}}Мәтінмән:- Рамка/нұсқа: {{framework_and_version}}- Шектеулер: {{өнімділік, стиль, тәуелділік ережелері}}Ережелер:- жоқ кітапхананы/функцияны пайдаланбаңыз; Егер сенімді болмасаңыз, оны «тексеру» деп белгілеңіз. - Алдымен қысқаша жоспарды, содан кейін кодты, содан кейін 2 сөйлемді негіздеу. - Тексерілетін, жұмыс кодын жасаңыз.

Үлгіге белгісіздікті сүзу үшін:

Төмендегі тапсырманы шешпес бұрын, сұрақтар ретінде жетіспейтін немесе түсініксіз деп тапқан КЕМІ 3 ұпайды көрсетіңіз. Мен жауап бермес бұрын код жазбаңыз. Тапсырма: {{тапсырма}}

Шығаруды өздігінен тексеру үшін:

Сіз келесі кодты шығардыңыз. Енді рөліңізді өзгертіңіз және осы кодты сынаңыз: - Жұмыс істемеуі мүмкін 3 жағдайды (шеттік жағдайлар) тізіңіз.- Сіз құрастырған API/функциялар бар ма? Белгілеу.- Түзетілген нұсқаны беріңіз. Код: {{код}}

Шешімді опцияларға бөлу үшін:

{{проблема}} үшін 2-3 шешу тәсілін ұсыныңыз. Әрқайсысы үшін: қысқаша сипаттама, плюс/минус, қашан таңдау керек. Кесте түрінде беріңіз. Мен үшін ТАҢДАМА; тек опцияны нақтылаңыз.

Әлсіз шақыру / Күшті шақыру

Әлсіз: "Осы кодтағы қатені түзетіңіз." (Қандай қате? Қай тіл? Күтілетін мінез-құлық қандай?)
Күшті: "Python 3.11 / FastAPI 0.110. Сұрау мәтіні бос болған кезде келесі соңғы нүкте KeyError арқылы 500 мәнін қайтарады; Мен оның 400 мәнін және бос денеде мағыналы хабарды қайтарғанын қалаймын. Алдымен себебін түсіндіріңіз, содан кейін түзетілген функцияны беріңіз, содан кейін осы сценарий үшін сынақ жазыңыз. [код]"

Күшті нұсқасы; Ол тілді, нұсқаны, нақты қатені, күтілетін әрекетті және шығыс пішімін береді. Модель енді болжау қажет емес.

Жалпы қателер

  • Тексерусіз сену. Ең көп таралған және ең қымбат қате. Код құрастырылып, тексерілмейінше «шешілді» деп айтпаңыз.
  • Контекстсіз сұрақтар қою. Нұсқасы, қате мәтіні және шектеулері жоқ жауап жалпы және жиі қате.
  • Бір үлкен өтініш. Бірден 300 жолдық туындыны сұрау және қарау мүмкін еместігі қателерді көрінбейтін етеді.
  • Модельдің өзіне деген сенімділігін дәлел ретінде қателесу. AI сенімді түрде дұрыс емес нәрсені айта алады; Тон дәлдік көрсеткіші емес.
  • Компания құпиясын кездейсоқ қою. Жеке кілттерді, тұтынушы деректерін немесе жеке бастапқы кодты мақұлданбаған құралдарға енгізуге болмайды (біз бұл тақырыпты 10-бөлімде қарастырамыз).
Кеңес: Әрбір AI шығысын «бұл жоба» деп есептеңіз. Бұл жалғыз ақыл-ой әдеті барлық модульде көретін тәуекелдердің көпшілігін жояды.

Қысқаша айтқанда

Кодтау көмекшісі - келесі ықтимал фрагментті болжайтын тіл үлгісі; Ол кодты түсінбейді, үлгілерді шығарады. Сондықтан ол қайталанатын, формулалық жұмыстарда күшті; Оны контекстіңізге тән тексеруді қажет ететін жұмыс үшін абайлап пайдалану керек. Ең үлкен қауіп - галлюцинация, ал жалғыз антидот - тексеру. Бүкіл модуль бойынша біз ұстанатын тәртіп анық: тапсырманы нақтылаңыз, контекст беріңіз, кішігірім сұраңыз, әрбір нәтижені растаңыз.

Қолданбалы тапсырма

Соңғы аптада орындаған үш бағдарламалық құрал тапсырмасын жазып алыңыз (мысалы, қатені түзету, сынақ, README жаңартуы). Әрқайсысының «күшті және әлсіз жақтары картасын» қараңыз және егер сізде AI болса, сіздің және AI рөлі қандай болатынын бір сөйлеммен сипаттаңыз. Содан кейін жоғарыдағы «старт шақыру» үлгісімен AI-ға осы тапсырмалардың бірін беріңіз және нәтижені іске қосыңыз және тексеріңіз; Қанша минутты сақтағаныңызды және қанша қатені түзету керек екенін ескеріңіз.

бақылау парағы

  • [ ] Мен LLM кодты «түсінетін» емес, үлгілер шығаратынын түсіндім.
  • [ ] Токен, контекстік терезе және шақыру ұғымдарын бір сөйлеммен түсіндіре аламын.
  • [ ] Мен AI күшті және әлсіз болатын тапсырмалар түрлерін ажырата аламын.
  • [ ] Мен галлюцинацияның не екенін білемін және жалғыз антидот - тексеру.
  • [ ] Мен «ұсыну, шығару, тексеру» циклін өз тапсырмама бейімдедім.
  • [ ] Мен нақты мысалда күшті шақыру мен әлсіз сұрау арасындағы айырмашылықты көрсете аламын.