Единица 2 / 12

Скриптирање и автоматско комплетирање

Добивки:

  • Способност да се мапира режимот на разговор за да се поправи типот на задачата со завршување во линија
  • Способност да се пишуваат моќни производствени потсетници кои вклучуваат влезно/излезни договори, кутии на рабовите и ограничувања на стилот
  • Способност да се потврди генерираниот код и сите нови предложени зависности пред да се спојат

Првата точка на контакт на програмерите со вештачката интелигенција е често автоматско пополнување - карактеристика што ја сугерира следната линија додека пишувате - или велејќи „напишете ја таа функција“ во прозорецот за разговор. И двајцата користат ист мотор, но бараат различни дисциплини. Во оваа единица, го трансформираме генерирањето код од случајно „запишување“ во инженерски чекор чиј излез е предвидлив и проверлив.

Целта е да се претвори вештачката интелигенција од алатка која ја забрзува машината за пишување во чирак кој работи во рамките на ограничувањата што ги поставивте. Добро водениот чирак заштедува време; Неводениот чирак создава неред што треба да го исчистите подоцна.

Два режими на користење: Вградно завршување и разговор

Вметнатото завршување влегува во игра додека пишувате во вашиот уредник; Впишете потпис на функција или линија за коментари и таа го сугерира останатото. Одличен е за брзина, но има тесен контекст: го гледа кодот само во непосредната област. Затоа најдобро функционира кога јасно ќе ја напишете вашата намера во коментар. На пример, //validate e-mail на корисникот, фрли ValidationError ако неважечки коментар значително го подобрува предлогот подолу.

Режимот на разговор е за поголеми и структурирани задачи: „Додај пагинација во оваа класа“, „Извлечеј интерфејс на таа услуга“. Овде го имате луксузот да давате улога, контекст и формат. Општото правило е: завршување за мали и тековни задачи, разговор за задачи кои бараат размислување и структура.

Совет: Не го прифаќајте слепо предлогот за завршување со „Таб“. Прочитајте ја предложената линија за секунда; Од тука најчесто протекува неточно име на променлива или превртена состојба.

Чекори за преведување на намерата во код

  1. Дефинирајте договор. Кое е влезот, излезот и однесувањето на грешката на функцијата? Како „Добиј е-пошта, нормализирај ако е валиден, фрли грешка ако е неважечка“.
  2. Наведете ги ограничувањата. Не користите надворешна зависност? Специфичен водич за стилови? Дали има ограничување на перформансите?
  3. Наведи пример. Пар влезно-излез („ali@x.com → валидно, ali@ → грешка“) го поместува разбирањето на моделот за намерата од предвидување кон прецизност.
  4. Побарајте мали парчиња. Една функција, една одговорност. Потоа преминете на следниот.
  5. Прочитајте го и стартувајте го генерираниот код. Составувањето + брз рачен обид е најевтиниот чекор за гаранција.

Три мини футроли

Случај 1 - Производството управувано од коментари ја зголемува точноста. Програмер најпрво побара функција за парсирање датуми со празно тело и го доби точниот резултат во 3 круга. Во вториот обид, кога ја дефинирав функцијата со коментар од 4 линии (прифатени формати, правило за временска зона, состојба на грешка) и ја побарав, дојде кодот што функционираше во првиот круг. Истиот модел, истиот ден; разликата беше само јасноста на намерата.

Случај 2 - Да не се специфицира верзија е скапо. Еден тим се бореше со наследениот API базиран на повратен повик кој ги замени fs.promises во кодот произведен за Node.js. Кога линијата „Use Node 20, ESM, async/wait“ беше додадена на промптот, производството го следеше проектот за прв пат; Просекот од 12 минути потрошени за корекција беше ресетиран.

Случај 3 - Вистинска добивка во кодот на котлата. За микросервис потребни се 6 нови DTO (Објект за пренос на податоци — едноставна класа на податоци што пренесува податоци помеѓу слоеви) и правила за нивна валидација. Она што порано беше приближно 90 минути рачна работа беше намалено на 35 минути кога беше произведено и прегледано од ВИ; Бидејќи повторувањето на кодот е големо и шемата е јасна, вештачката интелигенција работеше во својата најефикасна област овде.

Четири шаблони за копирање

Генерирање функции врз основа на договор:

Улога: Вие сте вреден развивач на {{јазик}}. Договор за функција:- Име: {{име}}- Влез: {{типови и нивното значење}}- Излез: {{тип и значење}}- Статус на грешка: {{што е фрлено/вратено кога}}Ограничувања: {{нема надворешни зависности / стилови /_} {{output_1}}- {{entry_2}} -> {{error_2}}Прво дајте потпис + краток план, а потоа код. Тестови за пишување, само функција.

За да одговара на постоечкиот стил (прилагодете се на базата на код):

Подолу е примерна функција од нашиот проект; Дознајте именување, ракување со грешки и стил на коментирање овде. Напишете функција за {{new_task}} со ИСТ стил. Пример: {{current_code}}

Од скелет до полнење (никулец → имплементација):

Пополнете го функцискиот скелет подолу според TODO во коментарите. СМЕНЕТЕ го потписот и вратете го типот. Не правете помошничка функција која не постои; ако е потребно, дозволете ми да знам „потребен е овој помошник“. {{skelet_kod}}

Алтернативна споредба на апликациите:

Наведете 2 различни имплементации за {{задача}}: (а) давање приоритет на читливоста, (б) давање приоритет на перформансите. Запишете по 1 реченица „кога е пожелно“ под секоја.

Слаб промпт / Силен промпт

Слабо: „Напиши ми функција за проверка на е-пошта“.
Силно: "TypeScript 5, само стандардна библиотека. Напишете isValidEmail(влез: низа): бул. Скратете ги празни места, направете го нечувствителен, a@b.co е валиден, a@, @b.co, празната низа е неважечка. Ако сакате да користите regex, немојте да бидете премногу сложени линии на коментари;

Моќна верзија; Ги враќа јазикот, верзијата, потписот, кутиите на рабовите и ограничувањето на стилот. Така, генерираниот код функционира и се вклопува во вашиот проект.

Пристап

Кога да се користи

Внимание

Вложено завршување

Мали влошки во протокот

Не прифаќајте го предлогот без да го прочитате

Производство засновано на договор во разговор

Нова функција/класа

Наведи пример и рабови

Производство по стилски примерок

Додавање на постоечки код

Изберете тековен примерок код

полнење на скелет

Потписот е фиксиран, телото празно

Промена на потписот

Умножување на кодот и замката за зависност

Вештачката интелигенција често препорачува нова библиотека за да и ја олесни работата. Понекогаш ова е точно, понекогаш додава непотребна зависност на вашиот проект или сугерира пакет што не постои (халуцинација). Правило: ја потврдувате секоја нова зависност. Не го додавајте во проектот без да потврдите дека пакетот навистина постои, се одржува и има соодветна лиценца. Поголемиот дел од времето помошникот веќе во проектот е подобар од нов пакет.

Внимание: Прегледајте ги линиите за увоз предложени од AI. Непостоечкото име на пакетот (кое исто така може да личи на лажни пакети наречени „typo-squatting“) ја прекинува компилацијата и претставува безбедносен ризик.

Вообичаени грешки

  • Имајќи го потписот определен од моделот. Ако не ги поправите типовите влез/излез, при секое производство доаѓа различен потпис и интеграцијата станува тешка.
  • Да не зборуваме за рабови. Празен влез, нула, негативен број, многу голема вредност - ако не ги наведете овие, моделот ја пишува „среќната патека“, прескокнувајќи ги рабовите.
  • Комбинирање на предлогот без негово тестирање. Кодот што изгледа дека работи, не значи дека работи.
  • Прифаќање на непотребна зависност. Додавањето на цела библиотека за еднослојно создава технички долг.
  • Неконзистентност на стилот. Различното именување и справувањето со грешки од останатиот дел од проектот ја прави основата на кодот нерасположена.

Сумирано

Генерирањето код е моќно кога намерата ја преточувате во јасен договор. Користете го завршувањето на линијата за мали, во тек задачи и за задачи што воспоставуваат структура во разговорот. Ги одредувате типовите на влез/излез, куќишта на рабовите, верзијата и стилот; Наведете пример за моделот; проверете ја секоја нова зависност; и трчајте и прочитајте го секое произведено парче. Вештачката интелигенција најдобро се исплати со формуласки, повторувачки код - стартувајте го токму таму, во границите што сте ги поставиле.

Задача за апликација

Изберете вистинска мала функција од вашиот проект што треба да ја напишете. Прво испечатете го на вештачката интелигенција со шаблонот „генерирање функции базирани на договор“, давајќи типови на влез/излез, две рабови и ограничување на стилот. Компилирајте го генерираниот код и пробајте го со два различни влеза. Потоа повторно прашајте ја истата функција, овој пат „напиши ми го ова“ без никаков контекст и споредете ги двата излеза линија по линија: кои случаи на рабови се пропуштени, колку корекции беа потребни?

листа за проверка

  • [ ] Знам каде да го користам режимот за разговор со комплетирање во линија.
  • [ ] Го одредувам влезно/излезниот договор и рабовите при генерирање на функции.
  • [ ] Станав навика да додавам информации за јазикот и верзијата на промптот.
  • [ ] Го составувам и тестирам секое произведено парче пред да го склопам.
  • [ ] Ја потврдувам секоја нова зависност што ја предлага ВИ со потврдување на нејзиното постоење и неопходност.
  • [ ] Проверувам дали генерираниот код се совпаѓа со стилот на проектот.