Бірлік 1 / 12

Компьютерлік инженериядағы жасанды интеллект және тексеру пәніне кіріспе

Табыстар:

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

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

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

Тұжырымдамалар: Галлюцинация: AI әдісі, кітапхана, API немесе іс жүзінде жоқ мінез-құлықты сенімді түрде ойлап табуы. Мәтінмән: AI-ға беретін кіріс (код, қате туралы хабар, талап, шектеулер). Тексеру: Шығаруды өз бетінше тексеру (құрастыру, сынау, құжаттау). Бұл үш тұжырымдама бүкіл модульдің негізі болып табылады.

Қандай кәсіпорындарда AI акселераторы бар, қай кәсіпорындарда бұл қауіпті?

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

бизнес түрі

AI үлесі

Инженер рөлі

Код қаңқасы / қазандық

Қайталанатын құрылымның жылдам генерациясы

Логика және жиек күйін басқару

жөндеу

Гипотеза және мүмкін себептер тізімі

Көбею және түбірлік себеп растау

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

Сынақ жобасы және сценарий құру

Мағыналы бекіту және ауқымды тексеру

рефакторинг

Рефакторинг ұсынысы

Тест арқылы мінез-құлықты сақтау

Құжаттама

Бірінші жоба және құрылым

Кодқа сәйкес дұрыстығын тексеру

Сәулет/қауіпсіздік шешімі

Опциялар тізімі және артықшылықтар мен кемшіліктер

Соңғы шешім және жауапкершілік

Ереже қарапайым: AI шығысының қаупі, егер бұл нәтиже қателік жіберсе, ол келтіретін зиянға тең. Айнымалы атауды қате ұсыну зиянсыз; Дұрыс емес аутентификация (пайдаланушының шынымен кім екенін тексеру) бүкіл жүйені осал етеді. Сонымен, шығысты қолданбас бұрын қойылатын бірінші сұрақ: «Егер бұл дұрыс емес болса және оны кім және қашан байқаса не болады?»

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

Инженерге қалдыруға болатын шешімдер

Кейбір шешімдер ешқашан толық автоматтандырылмауы керек; техникалық, құқықтық және этикалық тәуекелдерді көтереді:

  • Өндіріске рұқсат беру: кодты өндіріске шығару және ол үшін жауапкершілік.
  • Қауіпсіздік және архитектура: аутентификация, авторизация, шифрлау және деректер үлгісі сияқты қымбат шешімдер.
  • Лицензия және авторлық құқық: өндірілген кодтың коммерциялық өнімде қолданылуы және лицензияның сәйкестігі.
  • Құпия деректермен жұмыс істеу: Тұтынушы деректерімен, бастапқы код құпияларымен және жеке басын куәландыратын ақпаратпен операциялар.
Ескерту: AI «бұл код қауіпсіз және өндіруге дайын» ​​десе де, оны қауіпсіздік сынағысыз, кодты тексерусіз және нақты жүктеме кезінде тексерусіз қабылдауға болмайды. Қауіпсіздік тұрғысынан маңызды жұмыста AI нәтижесі ешқашан құзыретті инженердің мақұлдауын алмастыра алмайды; Шешім қабылдауға әкелетін кез келген нәтиже жүзеге асырылмас бұрын уәкілетті инженермен тәуелсіз тексеріліп, мақұлдануы керек.

Тексеру пәні: үш деңгейлі бақылау

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

  1. Компиляция және статикалық тексеру: код шынымен компиляцияланады/іске қосылады ма? Түр қателері, пайдаланылмаған айнымалылар, жоқ API бар ма? Статикалық талдау құралы (кодты іске қоспай-ақ зерттейтін құрал) не дейді?
  2. Тәуелсіз көшіру (тестілеу): Кішкентай, белгілі кірістермен кодты іске қосыңыз және күтілетін нәтиже алғаныңызды тексеріңіз. Жиектерді қолданып көріңіз (нөл, нөл, теріс, үлкен).
  3. Дереккөзді тексеру: AI қолданатын әрбір API, кітапхана нұсқасы және тіл мүмкіндігі ресми құжаттамадан тексерілуі керек.

Тексеру шақыруы (шығаруды тексеруді жеңілдетеді): "Кодыңызда пайдаланатын БАРЛЫҚ сыртқы кітапханаларды, әдістерді және тіл мүмкіндіктерін тізімдеңіз. Әрқайсысы үшін оның қай нұсқада қол жетімді екенін көрсетіңіз және оны "құжаттамадан расталған болуы керек" деп белгілеңіз. Өзіңіз сенімді емес API құрамаңыз; егер сенімді болмасаңыз, "сенімсіз" мекенжайлар тізімін нақты жазыңыз.

Өзіңіздің кодтық кеңесіңізді сынаңыз: "Сізді жұмысқа алған аға инженер сияқты жаңа ғана жазған кодқа сын көзбен қараңыз. Осы үш тақырыптың астына нақты элементтерді беріңіз: (1) логикалық/шеттік жағдай қателері, (2) қауіпсіздік тәуекелдері, (3) өнімділік немесе оқуға қатысты мәселелер. Әрбір элемент үшін "неліктен мәселе" және "мәселені шешу ұсынылмайды" деп жазыңыз; оны безендіруге тырыспаңыз».

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

ӘЛІСІЗ:"Маған пайдаланушы аутентификация функциясын жазыңыз."(Нәтиже: қай тіл, қай ереже, қандай қате әрекеті түсініксіз; жалпы код, көбінесе қауіпсіз емес немесе контексттен тыс.)STRONG:"Python 3.11 үшін электрондық поштаны тексеру функциясын жазыңыз. Енгізу: жол. Шығару: жарамды болса ақиқат, False: негізгі R, әйтпесе, FS қатесі талап етілмейді. пішім жеткілікті. Сыртқы кітапхананы ҚОЛДАНБАҢЫЗ. Функцияны қосу блогының астындағы 5 үлгілік сынақ: жарамды, бос, қос '@', тек бос орындар бар."

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

Шағын корпустар

1-жағдай — Ойдан шығарылған әдіс. Әзірлеуші ​​AI-дан күндер кітапханасында date.addBusinessDays(5) деп аталатын әдіс бар екенін естиді және ол сенімді түрде түсіндіріледі. Құжаттамаға қарап, ол мұндай әдіс жоқ екенін көреді, дұрыс жол - қолмен цикл. Галлюцинация 10 минуттық тексеру арқылы өндіріске кіріспес бұрын түсіріледі.

2-жағдай — Жиек күйінің жоғалуы. AI «орташа есептеу» функциясын шығарады; Ол 1000 деректер жолымен сыналған кезде жұмыс істейді. Дегенмен, тізім бос болғанда, ол нөлдік қатеге бөлуді береді. Инженер бос енгізу сынағын қосқандықтан, ол қатені тікелей іске қосылмай тұрып көреді және түзетеді. Бір жиек күйінің сынағы таңғы сағат 3-те өндірістік дабылды болдырмайды.

3-жағдай – Құпиялылық қаупі. Сарапшы нақты дерекқор қосылым жолы мен API кілті бар файлды жалпыға ортақ құралға қоюға дайын. Мекеменің саясатын есте сақтайды; Ол құпияларды <REDACTED> дегенмен ауыстырады, кодты өкілдік мысалға дейін азайтады және оны сұрайды. Осылайша 5 минутта көмек алады, бірақ оның жеке басын куәландыратын ақпарат шықпайды.

Құпия кодпен және жеке басын куәландыратын ақпаратпен жұмыс істеу принципі

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

Анонимделген шақыру үлгісі: "Келесі функцияда қате бар. Мен нақты бизнес логикасын және жасырын тұрақты мәндерді өкілдік мәндермен ауыстырдым (API кілті, кесте атаулары, өріс атаулары жалпы). Мәселе: X енгізуінде Y қатесін аламын. Тек осы өкіл кодындағы логикалық қатені тауып, түзетілген нұсқаны түсіндіріңіз. [өкіл код]"

Кеңес: Егер күмәніңіз болса, мына сынақтан өтіңіз: "Егер мен мұны форумда ашық түрде жазған болсам, менің ұйымыма қиындық туады ма?" Жауап түсініксіз болса да, алдымен оны тазалаңыз. Қалпына келтіру әрқашан ағып кетуді кейінірек іздеуге қарағанда арзанырақ.

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

  • Шығаруды компиляциясыз/сынаусыз пайдалану. «AI жазды» - бұл ақтау емес; Әрбір код бөлігі оны іске қосу арқылы тексеріледі.
  • Мәтінмәнсіз сұраулар жасау. Егер тіл, нұсқа, енгізу-шығару және шектеулер берілмесе, код жалпы және жиі қауіпті болады.
  • Құпия ақпаратты ойланбастан бөлісу. API кілті, құпия сөз және тұтынушы деректері тазартылмай шығарылмауы керек.
  • Нақты тілді дәлдікпен шатастыру. AI неғұрлым сенімді болса, соғұрлым мұқият болу керек; Сенімді тон дәлел емес.
  • Шешімді AI-ға беру. Өндіріске енгізу, қауіпсіздік және архитектура туралы шешім инженерде қалады; AI тек материалдарды шығарады.

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

AI бағдарламалық жасақтама жұмысының қайталанатын және көп уақытты қажет ететін бөліктерін жылдамдатады: қаңқа коды, сынақ жобасын жасау, қателерді азайту, құжаттама. Дегенмен, шешім мен жауапкершілік инженерде қалады. Әрбір шығыс бақылаудың үш деңгейінен өтуі керек (компиляция/статикалық, тестілеу, бастапқы). Мәтінмәні бар шақыруларды жазу және жасырын ақпаратты тазалау - бұл модульдің әрбір бөлімінде қайталайтын екі негізгі әдет. AI-ді тәртіппен қолданғанда, сіз жылдамдыққа ие боласыз; оны тәртіпсіз пайдаланған кезде қателер мен осалдықтарды өндіріске жеткізесіз.

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

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

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

  • [ ] Мен сұрауға тілді, нұсқаны және енгізу-шығару келісімін қостым.
  • [ ] Мен "Ойдан шығармаңыз, сенімді болмасаңыз айтыңыз" және ауқым шектеуін жаздым.
  • [ ] Мен кодты құрастырдым/жүгірдім, статикалық ескертулерді тексердім.
  • [ ] Мен кем дегенде үш шеткі корпуспен сынадым.
  • [ ] Мен ресми құжаттамадан пайдаланылатын API интерфейстерін тексердім.
  • [ ] Мен кез келген құпия кодты/тіркелгі деректерін өшірдім немесе кәсіпорын құралын пайдаландым.
  • [ ] Өндіріске енгізу және қауіпсіздік туралы шешім адамның қолында екенін растадым.