Добивки:
- Способност за мапирање на завршувањето на уредникот, асистентот за разговор, CLI агентот и категориите за автоматизација на CI на задачите
- Способност да се прилагоди нивото на автономија според ризикот и да се примени дисциплина „прво планирај“ за агентите на CLI
- Способност да се трансформира употребата на вештачка интелигенција во тимски систем заснован на потврдена алатка, порта за верификација, транспарентност и одговорност
Досега научивме да користиме вештачка интелигенција во поединечни задачи (кодирање, прегледување, тестирање, дебагирање). Во оваа последна единица, ги составуваме деловите: запознавање со различни алатки за кодирање со вештачка интелигенција, усогласување на вистинската алатка со вистинската работа и нивно безбедно вградување во вашиот дневен тек на развој - од уредувач до контрола на верзијата, од CI/CD до управување со тим. Целта е да се претвори неуредната навика „секогаш и тогаш прашајте ја вештачката интелигенција“ во конзистентен и работен систем што може да се ревидира.
Ги покриваме типовите возила со неутрални категории (имињата на одредени производи брзо се менуваат; важно е што прави категоријата). Секоја категорија има „слатка точка“ и профил на ризик; Мајсторство е да знаеш колкава автономија да и дадеш на која задача.
Категории на алатки за кодирање со вештачка интелигенција
1. Завршување во уредник. Приклучоци кои предлагаат линии/блокови додека пишувате во вашиот IDE (развојна околина каде што пишувате код). Слатка точка: брзина во тек, шифра на котел. Ризик: тесен контекст, прифаќање на предлогот без размислување.
2. Помошник за разговор/страничен панел. Интерфејсот за разговор е вграден во IDE со видливост во дел од вашата база на кодови. Слатка точка: опис, рефактор, тестирање, анализа на грешки. Ризик: ограничен на контекстот што го давате, бара проверка.
3. CLI агенти (алатки за агенти). Алатките што работат од командната линија можат сами да читаат и менуваат повеќе датотеки, да извршуваат команди и да извршуваат задачи во повеќе чекори. Слатко место: промени во повеќе датотеки, повторливи задачи, задачи од типот „додај го овој имот“. Ризик: висока автономија = високо влијание; Ако не се провери, тој произведува широки и тешко проверливи промени.
4. Интеграција на линија/автоматизација. CI (Continuous Integration) ботови кои оставаат коментари за автоматско прегледување на ПР, предлагаат тестови или произведуваат дневници за промени. Слатка точка: прва цедалка без замор, конзистентност. Ризик: бучава, лажна доверба.
Совет: Како што се зголемува автономијата, треба да се зголемува и контролата. Бидејќи завршувањето на уредникот е мало и моментално, тоа е лесно надгледувано; Модификацијата во повеќе датотеки на CLI агентот треба да се испита исто како, ако не и повнимателно, отколку човековиот ПР.
Чекор по чекор: Вградување на вештачката интелигенција во работниот тек
- Мапирајте ја задачата со алатката. Мало додавање во тек → завршување; разбирање/рефактор/тестирање → разговор; мулти-датотека, повторувачка работа → CLI агент; континуиран прв филтер → CI интеграција.
- Изберете го нивото на автономија. Колку слобода има агентот? Предлог само за читање или измена на датотека + извршување на командата? Прилагодете се за ризик.
- Негувајте го контекстот. Трајно воведување правила на проектот (стил, архитектура, „не“) во алатката; Користете датотека со инструкции за проектот наместо да ја објаснувате одново и одново.
- Одржувајте ги портите за верификација. Промената на вештачката интелигенција е како човечка промена: поминува низ компилација, тестирање, преглед и (ако е критично) експертско одобрување. ПР за отворање на вештачката интелигенција не го заобиколува одобрението.
- Измерете и прилагодете. Гледајте што навистина се забрзува, каде што се зголемува товарот за корекција; Исчистете ги употребите што не функционираат.
Три мини футроли
Случај 1 - агентот CLI управуваше со преименување на повеќе датотеки. Еден тим би го преименувал концептот распространет на 60 датотеки. Тие му ја дадоа задачата на агентот на CLI, прво побараа план, го одобрија планот, а потоа ја направија промената и го водеа целиот тест пакет. Агентот 3 пропуштил раб во датотека; Тестовите го фатија, го поправија. Работата, која траеше приближно 3 часа рачно, беше завршена за 50 минути со надзор.
Случај 2 - Непроверената автономија се врати назад. Друг програмер му рекол на агентот „да го подобри овој модул“ и го објавил; Агентот измени 18 датотеки и додаде две зависности. Промената беше толку широка што не можеше да се разгледа и мораше да се повлече. Лекција: дајте им на агентите тесен опсег, јасни критериуми за прифаќање и дисциплина прво план-подоцна-направете.
Случај 3 - Бот за преглед на CI стана првиот филтер. Еден тим изгради бот кој остава автоматски коментари за преглед на вештачката интелигенција на ПР. Откако ботот ги фати пропустите на нула проверка и проблеми со стилот, човечките рецензенти можеа да го посветат своето време на деловната логика. Сепак, тимот јасно стави до знаење дека ботот не обезбеди „одобрување“: сè уште беше потребно барем едно човечко одобрение. За да ја намалат бучавата, тие го наместиле чамецот да остава само бучава со висок/среден интензитет.
Четири шаблони за копирање
Дисциплина „Прво планирај“ за CLI агент:
Задача: {{јасна, тесна задача}}Критериуми за прифаќање: {{мерлив резултат}}Ограничување: работи само на {{следниот директориум/датотеки}}; Додавање нова зависност.Прво претстави план БЕЗ ПРОМЕНИ: кои датотеки, што ќе се промени, кои тестови да се извршат. Почекајте да го ОДОБРАМ планот. Потоа применувајте го чекор по чекор, извршувајќи тестови на секој чекор.
Датотека со инструкции за проектот (упорен контекст на алатките):
Постојани правила за алатките за вештачка интелигенција во овој проект: - Јазик/верзија: {{...}}. Стил: {{...}}.- Архитектонско ограничување: {{на пр. насока помеѓу слоевите}}.- НИКОГАШ: вметнување тајни, користење податоци за производство, {{забранети библиотеки}}.- Секоја промена мора да биде тестирана; Промена на јавниот потпис на API БЕЗ прашување. - Кога се двоумите, застанете и прашајте.
Одлука за мапирање на алатката за задачи:
Ја дефинирам следнава задача: {{ задача }}. Која класа на алатки треба да го направам ова со: (а) завршување на уредникот, (б) помошник за разговор, (в) агент CLI, (г) CI автоматизација? Напишете го вашето образложение, ризик и препорачано ниво на автономија (само предлог / промена на датотека / команда за извршување).
Кодекс на однесување на бот преглед на CI:
Оставете само наоди со ВИСОКА и СРЕДНА сериозност како коментари во прегледот за односи со јавноста. Секој наод: категорија, сериозност, предложена корекција. Соберете белешки на ниво на претпочитање стил во посебен, единствен коментар за резиме. НЕ СОГЛАСУВАТЕ; потребно е човечко одобрување.
Слаб промпт / Силен промпт
Слаб: (на CLI агентот) „Направи го модулот за плаќање подобар“.
Силно: (на CLI агентот) "Само стартувај под src/payments/. Задача: Извлечете ја рекурзивната логика за валидација од функцијата refund() во еден помошник; однесувањето и потписите не се менуваат. Прво презентирајте го планот и почекајте мое одобрување; потоа извршете и стартувајте ги тестовите/плаќањата/ пакетот. Додајте нова зависност."
Силната верзија го стеснува опсегот, поставува критериуми и ограничувања за прифаќање и ја наметнува дисциплината „прво планирај“. Нејасните барања „направи подобро“ се основната причина за огромните и неконтролирани промени.
класа на возила
Она во што е најдобар
автономија
инспекциска тежина
Завршување на уредникот
Мало додавање во тек
низок
Светло (инстант читање)
асистент за разговор
Разбирај, тестирај, рефактор
средно
Средно (проверка на излезот)
CLI агент
Мулти-датотека, рекурзивен
високо
Тежок (план + целосен преглед)
CI автоматизација
Континуиран прв филтер
средно
Средно (правило + човечко одобрување)
Тимско управување: од индивидуална вештина до заеднички систем
Доброто користење на вештачката интелигенција на индивидуална основа е почеток; вистинската зрелост е конзистентен систем на тимско ниво. Овој систем се заснова на неколку столбови: список на одобрени алатки (кои алатки може да се користат со какви податоци - од единицата 10), порти за верификација (промената на вештачката интелигенција поминува низ истите порти за изградба/тест/преглед - од единицата 11), транспарентност (се наведува дека промената е напојувана со вештачка интелигенција обезбедува следливост каде што е потребно) и јасност на одговорноста (лицето кое може да се потпише). Оваа рамка го ограничува ризикот додека ја одржува брзината и гарантира дека новите членови на тимот работат со истата дисциплина.
Внимание: Колку е поголема автономијата на алатката - особено CLI агентите кои можат да менуваат датотеки, да извршуваат команди - толку построго го ограничува пристапот до производната средина, доверливите податоци и операциите кои тешко се враќаат. Поврзете ги деструктивните команди (трајно бришење, распоредување) со човечко одобрување.
Вообичаени грешки
- Задача-значи некомпатибилност. Обидувајќи се да направите работа со повеќе датотеки со завршување на уредникот или мал прилог со тежок агент.
- Ослободување на агентот. Агентските задачи дадени со тесен опсег и без „прво план“ создаваат неиспитани промени.
- Олабавување на портите за верификација за вештачка интелигенција. „Ви го направи тоа, ајде брзо да продолжиме“ е најопасниот исклучок; Вратите се исти за сите.
- Рачно давање на контекстот секој пат. Непишувањето правила на проектот во постојана датотека со инструкции предизвикува недоследност и дуплирање.
- Грешка на одобрението на CI бот за човечко одобрување. Бот е филтер; Одговорното човечко одобрување е задолжително.
Сумирано
Алатките за кодирање со вештачка интелигенција спаѓаат во четири главни категории: завршување на уредникот, помошник за разговор, агенти CLI и автоматизација на CI. Мајсторството е усогласување на задачата со вистинската алатка и вистинското ниво на автономија; Како што се зголемува автономијата, се зголемува и контролата. Дајте им на алатките постојан проектен контекст, наметнете ја дисциплината „прво план“ на агентите со повеќе датотеки и поминете ја промената на вештачката интелигенција низ истите порти за проверка како и човечката промена. Индивидуална вештина; Трансформирајте го во тимски систем изграден на одобрен список со алатки, порти за верификација, транспарентност и јасност на одговорноста. AI е множител на брзина од крај до крај; Лицето кое потпишува и дава сметка е секогаш компетентно лице.
Задача за апликација
Наведете три вистински задачи што ќе ги направите следната недела. Користете го шаблонот „одлука за усогласување задача на возило“ за секој за да оправдате која класа на возила и кое ниво на автономија ќе изберете. Потоа извршете тесна задача за CLI агент (или асистент за разговор) со дисциплина „прво планирајте“: одобрувајте го планот, спроведете го, извршете ги тестовите и прегледајте ја промената како човечки ПР. Конечно, изгответе „правило за употреба на вештачка интелигенција“ од 5 точки за вашиот тим (одобрени алатки, правило за податоци, порта за верификација, ограничување на автономијата, одговорност).
листа за проверка
- [ ] Можам да разликувам категории на алатки за кодирање со вештачка интелигенција и слаткото место на секоја од нив.
- [ ] Ја пресликувам задачата на правилната класа на возило и соодветното ниво на автономија.
- [ ] Им давам постојан проектен контекст (датотека со инструкции) на алатките.
- [ ] Применувам тесен опсег и дисциплина „прво планирам“ за агентите на CLI.
- [ ] Ги поминувам промените на вештачката интелигенција низ истите порти за проверка како и човечките промени.
- [ ] Се залагам за потврдена алатка, правило за податоци, транспарентност и рамка за одговорност на ниво на тим.
Модул испит
1. Што всушност прави основниот голем јазичен модел на асистент за кодирање кога произведува код?
- А) Моделно го предвидува најверојатното продолжение врз основа на дадениот контекст ✔
- Б) Го гарантира точниот резултат со тоа што всушност го компајлира и работи кодот
- В) Го скенира кодот низ целиот интернет во живо и го копира најточниот.
- Г) Ја разбира логиката на кодот како човечки инженер и ја разбира намерата
Појаснување: LLM не го „разбира“ кодот како човек; Го генерира најверојатното продолжение на дадениот контекст, врз основа на обрасците што ги учи од многу голем фонд на текст и код. Затоа, квалитетот на излезот директно зависи од квалитетот на контекстот и инструкциите што ги давате, и секој излез мора да биде потврден.
2. Како го нарекувате кога вештачката интелигенција убедливо измислува непостоечка функција или библиотека, и кој е единствениот вистински противотров?
- А) Ова се нарекува грешка при компилација; Противотровот е посилна опрема
- Б) Ова се нарекува халуцинација; Противотровот е да се потврди кодот и секое користено API ✔
- В) Ова се нарекува регресија; Противотровот е да се рестартира моделот
- Г) Ова се нарекува прелевање на контекстот; Противотровот е да се скрати промптот
Опис: Ова се нарекува халуцинација и предизвикува една од најскапите грешки во софтверот. Единствениот вистински противотров е верификацијата: потврдување дека секоја користена функција, API и пакет навистина постојат и дека кодот работи. Самоуверениот тон на моделот не е доказ за точноста.
3. Кој пристап најмногу го подобрува квалитетот и конзистентноста на излезот кога се генерира код со вештачка интелигенција?
- А) Ослободување на моделот со велејќи „напиши ми го ова“ без да се даде никаков контекст
- Б) Пишување на најдолгата и фенси можна порака
- В) Наведете и наведете примери за влезно/излезен договор, рабови, верзија и стил ✔
- Г) Комбинирање на генерираниот код директно без негово читање
Објаснување: Определувањето на типовите на влез/излез на функцијата (договор), случаи на рабови, ограничување на јазикот/верзијата и стилот и давање пример на моделот овозможува премин од предвидување кон прецизност. Безконтекстните барања „напиши ми го ова“ произведуваат код кој е различен секој пат и често ги заобиколува рабовите.
4. Кога истражувате странска база на кодови со вештачка интелигенција, името на функцијата може да биде „validateAndSave“, но дигестот на AI може да биде неточен. Кој е вистинскиот пристап?
- А) Целосна доверба во резимето на вештачката интелигенција бидејќи името е самообјасниво
- Б) Директно менување на функцијата без нејзино читање
- В) Одлучување само со гледање на името на функцијата
- Г) Третирајте го описот на вештачката интелигенција како хипотеза и проверете ги критичните тврдења линија по ред во кодот ✔
Објаснување: вештачката интелигенција може да го погледне името во кодот и да ви каже „како изгледа како да прави“, но во реалноста логиката може да биде различна (или дури и обратна). Значи, објаснувањето за вештачката интелигенција е хипотеза; Критичните тврдења, особено оние кои вклучуваат сигурност, авторитет или проток на пари, треба визуелно да се проверат на соодветните линии.
5. Која е најголемата опасност да се каже „Ви изгледаше, јасно е“ во прегледот на кодот со помош на вештачка интелигенција?
- А) ВИ може да произведе лажни негативи; Вистинските промашени грешки создаваат лажна самодоверба ✔
- Б) Прегледот на вештачката интелигенција е премногу бавен, така што губи време
- В) Тимот не разбира бидејќи вештачката интелигенција коментира само на англиски јазик
- Г) ПР не се спојува бидејќи вештачката интелигенција секогаш претерува
Објаснување: вештачката интелигенција произведува и лажни позитиви (означува проблем таму каде што не постои) и лажни негативи (пропуштање на вистинската грешка). Лажните негативи молчат; Најопасните грешки се оние кои воопшто не се споменати во прегледот. Значи, вештачката интелигенција е прв филтер, а не одобрување; Одлуката за спојување е на одговорно лице.
6. Која е најподмолната замка што се појавува кога само ќе и го дадете кодот на вештачката интелигенција и ќе ги испечатите тестовите?
- А) ВИ секогаш пишува премногу тестови и ја надувува базата на кодови
- Б) ВИ го тестира тековното (можеби погрешно) однесување на кодот како „точно“ и ја поправа грешката ✔
- В) AI автоматски го брише кодот кога пишува тестови
- Г) вештачката интелигенција пишува тестови не само за среќната патека туку секогаш за рабовите
Објаснување: вештачката интелигенција има тенденција да гледа во кодот и да пишува тврдења што го тестираат моменталното однесување. Ако кодот е погрешен од самиот почеток, вештачката интелигенција го поправа ова погрешно однесување како „точно“. Затоа, очекувањата од тестот треба да бидат напишани според бараното правило (спецификација), а не според моменталниот излез на кодот.
7. Што најмногу ја одредува точноста на хипотезите при дебагирање на грешка со вештачка интелигенција?
- А) Колку учтиво е напишано потсетникот.
- Б) Колку пати е повторно поставено прашањето
- В) Квалитет на докази обезбедени за моделот: целосна порака за грешка, трага на стек, влез и очекувано однесување ✔
- Г) Во која тема во боја е напишан кодот?
Објаснување: вештачката интелигенција не ја гледа грешката како што вие ја гледате; Тој ги знае само доказите што му ги давате. Со оглед на целосната порака за грешка, трагата на стек, влезот за активирање и очекуваното однесување, моделот ги набројува реалните можности; Ако нема докази, тоа прави погодување (халуцинација) и ве води на погрешен пат.
8. Кој е најкритичниот чекор пред да се дадат дневници за производство на ВИ за анализа?
- А) Залепување на дневникот како што е, покривајќи го целиот ден
- Б) Прво претворете го дневникот во големи букви
- В) Подредување на линии на дневници по азбучен ред
- Г) Маскирање лични податоци и тајни и давање само релевантен прозорец ✔
Опис: Дневниците на необработеното производство содржат IP, е-пошта, ID на сесија, токен и понекогаш отворена тајна. Да ги залепите во алатка за вештачка интелигенција без да ги маскирате е сериозно прекршување на приватноста. Дополнително, дневникот треба да се филтрира во тесен временски прозорец; Но, првата потреба е да се исчистат чувствителните податоци.
9. Што треба да се направи ако вештачката интелигенција каже дека два настани се случиле „истовремено“ во анализата на дневникот и прогласи еден како основна причина?
- А) Непочитување на корелацијата како каузалност и потврдување на тврдењето со метрика и код ✔
- Б) Прифаќање на причината како конечна бидејќи вештачката интелигенција воспоставува временска врска
- В) Веднаш рестартирање на првообвинетиот компонента
- Г) Целосно бришење на дневниците и повторно собирање
Објаснување: Најчеста замка во анализата на логови е збунувачката корелација со каузалноста. Временската врска воспоставена од вештачката интелигенција е поим, а не доказ. Вистинската каузалност бара време, механизам и, ако е можно, повторливост; Приговорот мора да биде потврден со метрика и код.
10. Кое е златното правило за кое не може да се преговара при рефакторирање со вештачка интелигенција и што го обезбедува тоа?
- А) Кодот треба да биде пократок; Бројот на линии го гарантира тоа
- Б) Нема промена во однесувањето; тестовите кои го доловуваат моменталното однесување го обезбедуваат ова ✔
- В) Кодот содржи повеќе коментари; ВИ го гарантира тоа
- Г) Препишување на целата датотека одеднаш; агентот го гарантира тоа
Објаснување: Рефакторирањето е подобрување на внатрешната структура на кодот без промена на неговото надворешно однесување; Златното правило е дека однесувањето останува константно. Она што го обезбедува ова е тестирањето: тест-мрежа која го доловува моменталното однесување пред да го промени, се поставува и работи по секој чекор. Рефакторирањето без тест мрежа е коцкање.
11. Кој е слојот во производството на документација што вештачката интелигенција не може да го знае и е опасно да се состави?
- А) Како да ги извршите чекорите за инсталација
- Б) Листа на параметри на функција
- В) Оправдување за „зошто“ одлуката за дизајн е донесена на тој начин ✔
- Г) На кој јазик е напишан кодот?
Опис: AI може да го извлече слојот „што/како“ (што прави функцијата, како е поставена) од кодот; но не може да го знае слојот „зошто“ (дизајнерското образложение за одлуката, причината за граничната вредност). Измислената „причина“ е поопасна од неоправдување; Сопственикот на кодот мора да го додаде овој слој.
12. Што треба да направи развивачот ако сака да залепи конфигурациска датотека што содржи жив API клуч во неодобрена алатка за вештачка интелигенција додека решава итна грешка?
- А) За брзина, залепете ја датотеката како што е и потоа избришете го разговорот
- Б) Додадете „доверлива“ белешка на крајот од датотеката и испратете ја
- В) Оставете го клучот и сменете го само името на датотеката
- Г) Отстранете/маскирајте ги тајните и дајте го само потребниот нечувствителен контекст ✔
Откривање: тајните, личните податоци и доверливите средства никогаш не треба да се внесуваат во неодобрени средства; Итноста не ја суспендира оваа црвена линија. Точниот пристап е прво да се извлечат/маскираат тајните и да се даде само потребниот, нечувствителен контекст. Ако некоја тајна сè уште протекува, првото нешто што треба да направите е веднаш да го завртите тој клуч.
13. Код генериран од вештачка интелигенција поминува тестирање и работи во производство. Дали ова докажува дека кодот е безбеден?
- А) Не; „Работи“ не значи безбедно, безбедноста бара посебен слој на автентикација ✔
- Б) Да; Кодот што го положил тестот е безбеден по дефиниција
- В) Да; Работењето во производство ги елиминира сите ранливости
- Г) Не; но безбедноста е важна само ако кодот е бавен
Појаснување: „Работењето“ не е исто што и „безбедно“. Дури и ако кодот содржи ранливост како што е SQL injection, може да помине тестирање и да работи непречено; Ранливоста се открива само кога напаѓачот ќе ја пронајде. Затоа, покрај точноста, прегледот и скенирањата ориентирани кон безбедноста, како што е SAST, треба да се вршат како посебен слој.
14. Која е најбезбедната дисциплина кога се дава задача со повеќе датотеки на CLI агент (автономна алатка која може да менува датотеки и да извршува команди)?
- А) Кажете му на агентот „подобри го овој модул“ и дајте целосна слобода
- Б) Давање тесен опсег и критериуми за прифаќање, прво барање план, одобрување, спроведување чекор по чекор и спроведување на тестовите ✔
- В) Директно спојувајте ги сите промени на агентот без да ги прегледате
- Г) Давање на агентот неограничен пристап до производната средина и доверливите податоци
Објаснување: Како што се зголемува автономијата, треба да се зголемува и контролата. Давање на агентот тесен опсег и јасни критериуми за прифаќање, прво барање план без промени, одобрување на планот, потоа негово спроведување чекор по чекор и извршување тестови на секој чекор; Ги спречува промените кои се широки, не може да се прегледаат и треба да се вратат назад.
15. Кој има одговорност што произлегува од кодот генериран од вештачка интелигенција во безбедносно критичниот софтвер (на пр. плаќање или автентикација)?
- А) Бидејќи кодот доаѓа од вештачка интелигенција, тој е во давателот на возилото
- Б) Ако вештачката интелигенција е доволно развиена, никој нема; нема потреба да се потврдува
- В) Тимот/инженерот кој го испитува, составува и дистрибуира кодот; ВИ не ја заменува согласноста ✔
- Г) Само лицето кое го пишува промптот, а не оние што го прегледуваат
Опис: ВИ е множител на брзина и генератор на нацрти; не може да преземе одговорност. Одговорноста за какви било грешки, ранливости или прекршувања кои произлегуваат од кодот во производството е на тимот што го прегледува, составува и дистрибуира тој код. Во критичните области за безбедност, излезот на ВИ не е замена за преглед и одобрување од квалификуван инженер под никакви околности.