Добици:
- Способност да објасни како помоћник за кодирање ради као језички модел и концепте токена, контекстног прозора, халуцинације
- Способност разликовања софтверских задатака у којима је АИ јака и слаба помоћу менталне мапе
- Способност примене основног циклуса рада предложи-произвести-верификовати на сопствене задатке
Дан програмера софтвера ретко се проводи у „писању кода од нуле“. Реал тиме; Читање кода који је неко други написао, покушај да се репродукује грешка, скенирање лог-а (редови дневника које апликација производи током рада), писање тестова, писање ПР-а (пулл захтев - захтев за спајање где се промена кода подноси на преглед тима) објашњење и ажурирање документације. Вештачка интелигенција (АИ) је множилац брзине који може да дотакне скоро све ове невидљиве послове. Али први услов за безбедну употребу је да правилно разумете шта јесте, а шта није.
У овој јединици прво објашњавамо основну технологију помоћника за кодирање на једноставном језику; затим креирамо менталну мапу снага и слабости модела; Коначно, успостављамо основну радну дисциплину коју ћемо користити током целог модула: предлажемо, производимо, верификујемо. Ова три корака су окосница следећих једанаест јединица.
Напомена: Овај модул је општа обука. У софтверу који је критичан за безбедност (обрада плаћања, здравствена заштита, аутентификација, критична инфраструктура) излаз вештачке интелигенције није замена за преглед и одобрење од стране квалификованог инжењера. АИ је помоћник; Потписник је инжењер.
Шта заправо ради помоћник за кодирање?
Већина помоћника за кодирање је изграђена на великом језичком моделу (ЛЛМ—АИ обучена за огромне количине текста и кода који предвиђа следећи највероватније „комад“). Модел не „разуме“ код као човек; Генерише највероватнији наставак контекста који му дате, на основу образаца које учи из огромног скупа примера. Овај наизглед једноставан механизам даје изненађујуће добре резултате у пракси — јер се већина софтвера састоји од образаца који се понављају: ХТТП захтев, петља, нулл провера, тест образац.
Три термина су овде критична. Токен је најмања јединица коју модел обрађује дељењем текста; То је отприлике неколико слова или део речи. Прозор контекста је количина токена које модел може да „види“ одједном; Ваш код, порука о грешци и инструкција морају стати у овај прозор. Промпт су сва упутства и контекст које дајете моделу. Квалитет резултата који ћете добити зависи директно од ова два: што бољи контекст и јаснија упутства дате моделу, то ћете добити бољи резултат. Лош унос производи лош излаз, чак и ако је у питању паметан модел — класично софтверско правило „смеће у, смеће напоље“ важи и за АИ.
Мапа предности и слабости
Да би се вештачка интелигенција усмерила на праве послове, потребно је знати где сија, а где посрће. Памћење ове мапе ће вас натерати да се запитате са сваком следећом мисијом: „Да ли да овај посао препустим вештачкој интелигенцији или да то урадим сам?“ Омогућава вам да одговорите на питање за неколико секунди.
Његове предности су: генерисање шаблонског кода, превођење са једног језика на други, писање регуларног израза (регек), описивање функције, креирање тестног скелета, тумачење поруке о грешци, израда документације, предлагање имена променљивих/функција и мања рефакторисања (побољшање структуре кода без промене његовог понашања).
Слабости: Познавање пословних правила специфичних за вашу компанију, памћење ваше целокупне базе кода, стварно покретање и провера кода, сигурно познавање најновијих верзија библиотеке, откривање безбедносних пропуста са стопостотном гаранцијом. Најопаснија ствар је халуцинација: модел измишља непостојећу функцију, библиотеку или АПИ (интерфејс који омогућава размену података између апликација) на веома убедљивом језику. Овај ризик се заправо може претворити у своју корист, пошто се код, за разлику од обичног текста, може тестирати да би се видело да ли „ради“ – само немојте прескочити корак верификације.
Тип мисије
Улога АИ
улога човека
Израдите шаблон/скелет
производи нацрт
Адаптације, рецензије
Опис кода
Даје кратак резиме
Верификује критични део кода
писање тестова
Случај сугерише
Потврђује покривеност и тачност
Безбедносно-критичка логика
корисна идеја
Одлука и одговорност су у потпуности на људима.
Употреба АПИ-ја/библиотеке
Генерише узорак
Проверава постојање и верзију
архитектонска одлука
Врсте опција
Одабире и брани знајући контекст
Корак по корак: Основни радни циклус
- Разјасните задатак. Ако не можете да напишете оно што желите у једној реченици, не може ни модел. Што раније несигурност улази у инпут, то више расте у излазу.
- Дајте контекст. Додајте одговарајући код, пуну поруку о грешци, верзију језика/оквира и ограничења у промпт. Немојте рећи „поправи ово“, реците „Питхон 3.11, ФастАПИ 0.110; ова функција даје грешку 500, експлодира када је тело захтева празно“.
- Улога и формат наметања. Оквир попут „Ви сте старији Го програмер; само дајте код и образложење од две реченице“ фокусира излаз.
- Питајте мало. Разбијте га на кораке, а не на један огроман захтев; Проверите сваки корак посебно. Велике промене су ризичне јер их је тешко проверити и склони су скривању грешака.
- Верифи. Покрените га, тестирајте га, прочитајте визуелно. Непроверени АИ код је „скица“, а не „решење“. Ово је корак циклуса о којем се највише не може преговарати.
Три мини кућишта
Случај 1 — Уштеде времена су стварне, али скромне. Када је тим скелетизирао нове ЦРУД (Креирај-Читај-Ажурирај-Делете) крајње тачке помоћу АИ, време првог нацрта је пало са отприлике 40 минута на 8 минута. Међутим, са прегледом и тестирањем, укупно време је било 25 минута; па је стварни добитак од 40 до 25, око 38%. Ова стопа, мерена уместо очекивања „убрзали смо 10 пута“, представља одрживи добитак.
Случај 2 — Халуцинације су скупе. Програмер је користио позив рекуестс.гет_јсон() који је предложила АИ без валидације; Није постојао такав метод (управо респонсе.јсон()). 20 минута је изгубљено када код није компајлиран. Једноставна "да ли ова метода заиста постоји?" верификација би ресетовала губитак.
Случај 3 — Добар контекст удвостручује излаз. За исту грешку, један програмер је једноставно написао „Добијам грешку“, а други је додао комплетно праћење стека, верзију и узорак уноса. Овај други је добио тачно решење из првог покушаја; Први је потрошио три окрета. Разлика није била у моделу, већ у улазу.
Четири шаблона за копирање
Моћна промпт за покретање опште намене:
Улога: Ви сте искусан {{лангуаге}} програмер. Задатак: {{вхат_вант}}Контекст:- Оквир/верзија: {{фрамеворк_анд_версион}}- Ограничења: {{Правила перформанси, стила, зависности}}Правила:- Не користите непостојећу библиотеку/функцију; Ако нисте сигурни, означите то као „верификовати“. - Прво дајте кратак план, затим шифру, па 2 реченице оправдања. - Произвести код који се може тестирати.
Да бисте филтрирали несигурност назад у модел:
Пре него што решите задатак у наставку, наведите НАЈМАЊЕ 3 тачке које вам недостају или су нејасне као питања. НЕ пишите код пре него што одговорим. Задатак: {{таск}}
Да би излаз био самопроверен:
Направили сте следећи код. Сада промените своју улогу и критикујте овај код: - Наведите 3 случаја (крајња случаја) који можда неће радити. - Да ли постоје неки АПИ-ји/функције које сте могли да измислите? Означи.- Дајте исправљену верзију.Шифра:{{цоде}}
Да бисте одлуку поделили на опције:
Предложите 2-3 приступа решењу за {{проблем}}. За сваки: кратак опис, плус/минус, кога изабрати. Наведите у табеларном облику. НЕ бирај за мене; само разјасните опцију.
Слаби промпт / Јаки промпт
Слабо: "Поправи грешку у овом коду." (Која грешка? Који језик? Какво је очекивано понашање?)
Снажно: "Питхон 3.11 / ФастАПИ 0.110. Следећа крајња тачка враћа 500 са КеиЕррор када тело захтева буде празно; Желим да врати 400 и значајну поруку у празном телу. Прво објасните разлог, затим дајте исправљену функцију, а затим напишите тест за овај сценарио. [код]"
Моћна верзија; Даје језик, верзију, стварну грешку, очекивано понашање и излазни формат. Модел више не мора да предвиђа.
Уобичајене грешке
- Поверење без провере. Најчешћа и најскупља грешка. Немојте рећи „решено“ док се код не компајлира и тестира.
- Постављање питања без контекста. Одговор без верзије, текста грешке и ограничења је генерички и често погрешан.
- Једна велика молба. Немогућност да затражите и прегледате производњу од 300 линија одједном чини грешке невидљивим.
- Погрешити самопоуздање модела као доказ. АИ може са сигурношћу рећи нешто погрешно; Тон није показатељ тачности.
- Насумично лепљење тајне компаније. Приватни кључеви, подаци о клијентима или приватни изворни код не би требало да се уносе у неодобрене алате (у ову тему ћемо се позабавити у јединици 10).
Савет: Третирајте сваки излаз АИ као „ово је нацрт“. Ова јединствена ментална навика гаси већину ризика које ћете видети током модула.
Укратко
Помоћник за кодирање је језички модел који предвиђа следећи највероватнији фрагмент; Не разуме код, производи обрасце. Зато је јак у пословима који се понављају; Треба га користити опрезно за рад који захтева проверу која је специфична за ваш контекст. Највећи ризик је халуцинација, а једини противотров је верификација. Дисциплина коју ћемо пратити током целог модула је јасна: разјаснити задатак, дати контекст, затражити мало, потврдити сваки резултат.
Задатак апликације
Запишите три софтверска задатка која сте урадили прошле недеље (нпр. исправка грешке, тест, ажурирање РЕАДМЕ). Погледајте „мапу предности и слабости“ за сваку и опишите у једној реченици која би била ваша улога и улога АИ да имате АИ да то уради. Затим дајте један од ових задатака АИ помоћу шаблона „старт промпт“ изнад и покрените и проверите излаз; Забележите колико минута сте уштедели и колико грешака сте морали да поправите.
контролна листа
- [ ] Схватио сам да ЛЛМ производи обрасце, а не „разуме“ код.
- [ ] Могу да објасним концепте токена, контекстног прозора и промпт у једној реченици.
- [ ] Могу да разликујем типове задатака где је вештачка интелигенција јака и слаба.
- [ ] Знам шта је халуцинација и једини противотров је верификација.
- [ ] Прилагодио сам циклус „предложи, произведе, провери“ свом задатку.
- [ ] Могу да покажем разлику између јаког и слабог промпта на конкретном примеру.