Добивки:
- Способност да се разликува каде вештачката интелигенција обезбедува вистинска брзина во животниот циклус на развој на софтвер и каде одлуката и одговорноста остануваат кај инженерот
- Способност да се примени трислојна инженерска дисциплина која го потврдува секој код и дизајн произведен преку компилација, тестирање и преглед.
- Добијте навика да го исчистите контекстот за да ја искористите вештачката интелигенција без да споделувате доверлив изворен код, ингеренции и податоци за клиентите
Кога ќе го погледнете денот на компјутерски инженер, сликата е слична во повеќето тимови: разбирање на деловно барање, дизајнирање, пишување код, читање туѓ код, дебагирање (процес на откривање зошто програмата работи погрешно и ја поправа), пишување тестови, подготовка на документација, прегледување код и присуство на состаноци. Со други зборови, времето посветено на вистинското „инженерско расудување“, односно дали решението е точно, безбедно и одржливо, се дроби под повторувачка работа. Овде доаѓа на сцена вештачката интелигенција (накратко ВИ; софтвер кој работи на текст и код со голем јазичен модел). ВИ не ја носи одлуката наместо вас; Ве подготвува за одлуката, создава скелет на код, ја стеснува бубачката и пред вас става обработен нацрт. Во текот на овој модул ние ќе ја позиционираме вештачката интелигенција не како „автоматски програмер“, туку како дисциплиниран партнер за програмирање парови чиј излез се компајлира, тестира и прегледува секој пат.
Во оваа прва единица, ние појаснуваме три работи: Во кои фази од животниот циклус на развој на софтвер (фазите низ кои поминува софтверот од идеја до производство: анализа, дизајн, кодирање, тестирање, распоредување, одржување) ВИ додава вистинска вредност; кои одлуки треба строго да останат кај инженерот; и која е дисциплината за верификација и доверливост на која мора да се придржувате кога го правите тоа. Без правилно инсталиран овој покрив, техниките на следните единици може да станат опасни; Затоа што грешка во софтверот достигнува милиони корисници во исто време и може да се претвори во безбедносна ранливост.
Концепти: Халуцинација: убедливо измислување од страна на вештачката интелигенција на метод, библиотека, API или однесување што всушност не постои. Контекст: Влезот што го давате на вештачката интелигенција (код, порака за грешка, барање, ограничувања). Верификација: Проверка на излезот на независен начин (компилација, тестирање, документација). Овие три концепти се столбот на целиот модул.
Во кои бизниси е акцелератор на вештачка интелигенција, во кои бизниси е ризичен?
Софтверските работни места паѓаат на двостран спектар во однос на резултатите. На едниот крај се реверзибилни подготвителни работи со низок ризик; На другиот крај, има задачи кои тешко се враќаат кои влегуваат во производствената средина и може да предизвикаат загуба на податоци, безбедносни пропусти или прекини. Вредноста на вештачката интелигенција варира во зависност од тоа каде се наоѓате на овој спектар.
тип на бизнис
Придонес за вештачка интелигенција
Инженерска улога
Код скелет / котел
Брзо генерирање на повторлива структура
Логика и контрола на статусот на работ
дебагирање
Хипотеза и список на можни причини
Потврда за репродукција и основна причина
пишување тестови
Тест нацрт и креирање сценарио
Значајно тврдење и проверка на опсегот
рефакторирање
Предлог за рефакторирање
Одржување на однесување преку тестирање
Документација
Прв нацрт и структура
Проверка на точноста во однос на кодот
Архитектонска/безбедносна одлука
Список на опции и добрите и лошите страни
Конечна одлука и одговорност
Правилото е едноставно: ризикот од излез на вештачка интелигенција е еднаков на штетата што ќе ја предизвика ако тој излез направи грешка. Неправилно сугерирање на име на променлива е безопасно; Несоодветната автентикација (проверка дали корисникот е навистина таков каков што тврдат дека е) го прави целиот систем ранлив. Значи, првото прашање што треба да се постави пред да се користи излезот е: „Што се случува ако ова не е во ред и кој го забележува и кога?“
Внимание: вештачката интелигенција произведува течен и сигурен код. Течноста не е гаранција за точноста. Јазичниот модел може веродостојно да произведе име на функција што всушност не постои, неточна низа на параметри или дури и небезбедна шема. Во софтверот, ова не останува на хартија; Се компајлира, работи и експлодира во производството.
Одлуки што треба да му се препуштат на инженерот
Некои одлуки никогаш не треба да бидат целосно автоматизирани; носи технички, правни и етички ризици:
- Одобрување за производство: Објавување на код во производство и одговорност за тоа.
- Безбедност и архитектура: скапи одлуки како што се автентикација, овластување, шифрирање и модел на податоци.
- Лиценца и авторски права: Употребливост на произведениот код во комерцијалниот производ и усогласеност со лиценцата.
- Работа со доверливи податоци: Трансакции со податоци за клиентите, тајни на изворниот код и информации за идентитетот.
Предупредување: Дури и ако вештачката интелигенција вели „овој код е безбеден и подготвен за производство“, прифаќањето на ова без безбедносно тестирање, преглед на кодот и валидација под вистинско оптоварување е неприфатливо. Во безбедносно-критична работа, излезот на ВИ никогаш не е замена за одобрение од компетентен инженер; Секој излез што води до одлука мора да биде независно потврден и одобрен од овластениот инженер пред имплементацијата.
Дисциплина за верификација: трослојна контрола
Применете три нивоа на контрола за да го користите излезот со вештачка интелигенција како висок рецензент наместо слепо. Ова е основниот рефлекс што ќе го повторуваме во текот на целиот модул.
- Компилација и статичко проверување: Дали кодот всушност се компајлира/работи? Дали има грешки во типот, неискористени променливи, непостоечки API? Што вели алатката за статичка анализа (алатката што го испитува кодот без да ја извршува)?
- Независна репродукција (тестирање): Стартувајте го кодот со мали, познати влезови и проверете дали ќе го добиете очекуваниот излез. Обидете се со рабови (нулти, нула, негативни, огромни).
- Потврда на изворот: секое API, верзија на библиотеката и јазичната карактеристика што ги користи вештачката интелигенција треба да се проверат од официјалната документација.
Промпт за потврда (го олеснува проверката на излезот): „Наведете ги СИТЕ надворешни библиотеки, методи и јазични карактеристики што ги користите во вашиот код. За секоја од нив, наведете во која верзија е достапна и означете ја „мора да биде потврдена од документацијата“.
Критикувајте го сопственото барање за код: „Критички погледнете го кодот што штотуку го напишавте, како постар инженер кој ве вработил. Наведете конкретни ставки под овие три наслови: (1) грешки во логиката/работната големина, (2) безбедносни ризици, (3) проблеми со изведбата или читливоста. За секоја ставка, напишете „зошто е проблемот“ и „предложено не можам да го поправам проблемот“, не реков. обидете се да го разубавите“.
Слаба навестување / Силен навестување
СЛАБ:"Напиши ми функција за автентикација на корисникот."(резултат: нејасно кој јазик, кое правило, кое однесување со грешка; генерички код, често небезбеден или надвор од контекст.)STRONG:"Напишете функција за валидација на е-пошта за Python 3.11. Влез: низа. Излез: Вистина ако е валидна, Неточно е валидно. Неточно е валидно. Правила: Потребен е доволен основен формат Неточно, не е доволен RFC формат. НЕ КОРИСТЕТЕ надворешна библиотека Тест со 5 примероци под блокот за додатоци: валиден, празен, без „@“, двоен „@“, кој содржи само празни места.
Разликата е во контекст. Моќен потсетник; Ги вклучува јазикот, верзијата, влезно-излезниот договор, ограничувањата и очекувањата за тестирање. Оваа единствена дисциплина во голема мера го намалува ризикот од халуцинации и небезбеден код.
Мини футроли
Случај 1 - Измислен метод. Развивачот слуша од вештачката интелигенција дека постои метод наречен date.addBusinessDays(5) во библиотека со датуми и тој е објаснет на сигурен начин. Гледајќи ја документацијата, тој гледа дека не постои таков метод, правилниот начин е рачна јамка. Халуцинацијата се доловува пред да влезе во производство со 10-минутна верификација.
Случај 2 - Загуба на рабната состојба. ВИ произведува функција „пресметај просек“; Работи кога се тестира со 1.000 редови податоци. Меѓутоа, кога листата е празна, таа дава поделба со нула грешка. Бидејќи инженерот го додаде тестот за празен влез, тој ја гледа и ја поправа грешката пред да започне во живо. Тестот за состојбата со еден раб спречува аларм за производство во 3 часот наутро.
Случај 3 - Ризик за приватност. Експерт ќе залепи датотека со вистинска низа за поврзување со базата на податоци и клуч API во јавна алатка. Се сеќава на политиката на институцијата; Ги заменува тајните со <REDACTED>, го намалува кодот на репрезентативен пример и го бара. Така, тој добива помош за 5 минути, но неговиот идентитет не излегува.
Принцип на работа со таен код и информации за идентитетот
Најчувствителниот дел од софтверот; тајни на изворниот код, информации за идентитетот (клуч API, лозинка, токен) и податоци за клиент/лични. Основен принцип: исчистете пред да споделите, прашајте ја само суштината на проблемот со репрезентативен пример ако е можно.
Анонимизирана шема за праќање: "Има грешка во следнава функција. Ги заменив вистинската деловна логика и скриените константи со репрезентативни вредности (клуч API, имиња на табели, генерички имиња на полиња). Проблем: Добивам грешка Y во влезот X. Само пронајдете ја логичката грешка во овој репрезентативен код и објаснете ја поправената верзија. [репрезентативен код]."
Совет: Ако се двоумите, направете го овој тест: „Дали мојата организација би западнала во неволја ако го напишам ова јавно на форум? Дури и ако одговорот е нејасен, прво исчистете го. Ресетирањето е секогаш поевтино од бркањето на истекувањето подоцна.
Вообичаени грешки
- Користење на излезот без компајлирање/тестирање. „Ви напиша“ не е оправдување; Секое парче код се потврдува со негово извршување.
- Поставување барања без контекст. Ако јазикот, верзијата, влезно-излезот и ограничувањата не се дадени, кодот станува генерички и често небезбеден.
- Споделување доверливи информации без размислување. Клучот API, лозинката и податоците за клиентите не треба да се објавуваат без да се исчистат.
- Збунувачки прецизен јазик со точност. Колку посамоуверено зборува вештачката интелигенција, толку повнимателни треба да бидете; Самоуверениот тон не е доказ.
- Делегирање на одлуката на АИ. Одлуката за пуштање во производство, безбедност и архитектура останува на инженерот; ВИ произведува само материјали.
Сумирано
Вештачката интелигенција ги забрзува повторливите и одземаат многу време делови од работата на софтверот: скелетен код, изготвување тестови, стеснување на грешки, документација. Сепак, одлуката и одговорноста останува на инженерот. Секој излез мора да помине три нивоа на контрола (компајлирање/статички, тестирање, извор). Пишувањето потсетници со контекст и чистење на скриените информации се две клучни навики што ќе ги повториме во секоја единица од овој модул. Кога користите ВИ со дисциплина, добивате брзина; кога го користите без дисциплина, носите грешки и ранливости во производството.
Задача за апликација
Изберете мала задача за кодирање од вашата работа или од имагинарен проект (на пр. функција за валидација). Прво напишете слаб промпт и добијте го излезот. Потоа применете ја моќната шема за промпт од оваа единица: додадете јазик/верзија, договор за влезно-излез, ограничувања и очекувања за тестирање. Ставете ги двата отпечатоци рамо до рамо и напишете ја разликата. Потоа составете го робусниот излез и тестирајте го со најмалку три рабови (нулти, нула/негативни, неочекуван формат) и забележете што наоѓате во кој тест.
листа за проверка
- [ ] Додадов јазик, верзија и договор за влезно-излез на промптот.
- [ ] Напишав „Не измислувај, кажи ми ако не си сигурен“ и ограничувањето на опсегот.
- [ ] Го составив/истрчав кодот, проверив дали има статични предупредувања.
- [ ] Тестирав со најмалку три рабови.
- [ ] Ги потврдив користените API од официјалната документација.
- [ ] Го избришав секој таен код/акредитиви или користев алатка за претпријатие.
- [ ] Потврдив дека одлуката за ставање во производство и безбедност останува на човекот.