ChatGPT, Bard и други известни големи езикови модели (LLM) доминираха в новинарските ни емисии през последната година. И с право. Тези вълнуващи технологии ни предлагат поглед към бъдещето, силата и възможностите на ИИ.
Макар че голяма част от общественото въодушевление е съсредоточено върху създаването на текст, изображения и видео, тези инструменти могат да се използват в много други области, като например автоматизацията на софтуера.
В тази статия ще се запознаете подробно с това как инженерните подтици могат да ни помогнат при автоматизацията на софтуера. Въпреки това първо трябва да разгледаме самата техника за бързо реагиране.
Какво е бърз инженеринг?
Големите езикови модели като ChatGPT създават резултати въз основа на подсказките или изреченията, които им предоставяме. Резултатите обаче варират значително в зависимост от думите или инструкциите, които използваме. Когато въвеждаме неясни и неточни инструкции, резултатът може да не е точен.
Под бърз инженеринг се разбира обмисленото проектиране на входове, които помагат за получаване на по-прецизно, точно и в крайна сметка използваемо съдържание от тези вълнуващи системи с изкуствен интелект.
Системите за големи езикови модели (LLM) използват обработка на естествен език (NLP), за да интерпретират изявленията, които им предоставяме. Машините превръщат тези въпроси или инструкции (т.е. подкани) в код и ги прекарват през огромните си хранилища от данни, за да създадат съдържание в какъвто формат посочим (т.е. текст, изображения, код).
ChatGPT е обучен на над
570 GB данни
. Материалите за обучение се състоят от книги, статии, текстове в интернет и т.н. С други думи, тези масиви от данни съдържат невъобразимо количество знания.
Макар да разбираме процеса, голяма част от това, което се случва под капака на тези системи, е извън полезрението ни. Разбира се, ние контролираме входовете и изходите и обучаваме системата, но как точно работят тези алгоритми и как вземат решенията, все още е загадка. По думите на Сам Боуман, професор по изкуствен интелект в Нюйоркския университет, „Построихме го, обучихме го, но не знаем какво прави.“
Бързото проектиране ни помага да управляваме този хаос, като използваме изходи, които дават предвидими и използваеми резултати. Те ни предлагат начин да отключим огромните количества знания, които се съдържат в тези приложения.
Дисциплината се превръща в ново професионално направление
, като навсякъде се появяват курсове, тъй като предприятията се опитват да използват тази мощна технология.
Как може да помогне бързото проектиране
с автоматизация на софтуера?
Автоматизацията на софтуера и магистратурата по право имат много общо помежду си. И двете предлагат поглед към бъдещето, в което машините ще допълват човешката креативност, за да създават по-бързи и по-продуктивни работни места.
Съществуват няколко интересни области, в които двете технологии могат да се обединят. Ето три начина, по които можем да използваме инженерните подсказки в автоматизацията на софтуера.
#1. Генериране на код
Писането на код е едно от най-обещаващите приложения на големите езикови модели. Магистратурите по изкуствен интелект са в начален стадий на развитие. През следващите няколко години тази технология трябва да се усъвършенства, тъй като се добавят повече ресурси както за компютри, така и за обучение.
В дългосрочен план тези постижения могат да позволят на ИИ да пише цели програми с ограничена или никаква човешка намеса. Засега обаче магистърските програми по право имат някои ограничения. Качеството на изхода на LLM кодирането зависи основно от качеството на входа. Както се казва, боклукът влиза, боклукът излиза.
Разбира се, не само ефективният инженеринг на бързината е пречка. Както е предложено в ChatGPT и големи езикови модели в академичните среди: Възможности и предизвикателства (Meyer, 2023): „Понастоящем ChatGPT е по-вероятно да бъде успешен при точното писане на по-малки блокове код, докато надеждността му при писането на по-големи/сложни програми (например софтуерен пакет) е под въпрос.“
Освен това в неотдавнашна статия в списание Nature някои компютърни учени предупредиха, че трябва да подхождаме с известна предпазливост към генерирането на код с LLM. Друг съвременен документ,
Големи езикови модели и прости, глупави грешки
(Jesse, 2023 г.), демонстрира как популярен LLM, Codex, който се използва от производителя Copilot, произвежда „познати, дословни SStuBs, които са 2 пъти по-вероятни от познатия, дословен правилен код“.
Въпреки че тези проблеми не могат да бъдат пренебрегнати, все още има много оправдано вълнение относно това как тези програми могат да помогнат за демократизиране на разработването на софтуер, като подкрепят както техническите, така и нетехническите екипи.
Може би най-впечатляващото нещо, което трябва да се вземе предвид, е, че инструменти като ChatGPT могат да създават функционален код много бързо. С помощта на правилната подкана инженерите могат да намалят времето, необходимо за програмиране на определени видове код, като по този начин се гарантира по-бърз жизнен цикъл на разработката на софтуер.
В края на 2022 г. популярният център за програмиране
Stack Overflow забрани генерираните от изкуствен интелект
отговори в неговия форум. Те се позовават на високия процент грешки и неточности, свързани с приложението. Въпреки това технологията е в начален етап на развитие; освен това недоволството от резултатите, генерирани от ИИ, се дължи колкото на лошото бързо проектиране, толкова и на самата технология.
Въпреки опасенията относно технологията, един
от McKinsey
подчертава въздействието, което бързото инженерство вече оказва в света на програмирането. Консултантската фирма Състоянието на изкуствения интелект през 2023 г: Годината на пробив на генеративния ИИ споделя две интересни тенденции. Първо, 7% от организациите, които са инвестирали в ИИ, наемат бързи инженери. Второ, компаниите, които използват изкуствен интелект, са намалили броя на длъжностите, свързани с изкуствен интелект, от 38% на 28%.
Един от начините да се интерпретират тези тенденции е, че предприятията се чувстват комфортно с тази конфигурация и са готови да прехвърлят автоматизацията на софтуера на своите машини. Макар че тези цифри могат да стреснат съществуващите инженери, проучването на McKinsey показва, че „само 8% от тях твърдят, че броят на работната им сила ще намалее с повече от една пета“. Като цяло инженерите вероятно ще трябва да се преквалифицират, за да се възползват от тенденцията за автоматизиране на софтуера с помощта на изкуствен интелект.
Едно от очевидните приложения за автоматизация на софтуера с изкуствен интелект включва създаването на ботове за автоматизация. Въпреки това, макар че бързият инженеринг е привидно удобен за потребителя интерфейс благодарение на фокуса върху разговора, все още не е ясно дали той може да замени съществуващите решения.
В много отношения софтуер като ZAPTEST вече е демократизирал пазара за автоматизация на софтуера. Вече са налице инструменти без код, които позволяват на нетехнически екипи да създават висококачествени ботове RPA. Въпреки че софтуер като ChatGPT може да създава ботове, внедряването и поддръжката им може да се окажат трудни за всеки, който не е софтуерен инженер, а дори и за тези, които са.
Записването на взаимодействията между човека и компютъра от вашия графичен потребителски интерфейс и преобразуването на тези движения в код е много по-удобно за потребителя, отколкото използването на подсказки. В съчетание с потенциала на LLM да създава нестабилен и изпълнен с грешки код, може да се каже, че софтуерът за RPA няма да се появи никъде в обозримо бъдеще.
#2. Конвертиране на неструктурирани данни
Неструктурираните данни не са силната страна на автоматизацията на роботизирани процеси. Техниката не е създадена да обработва неща като имейли, снимки, аудио и други. Инструментите за RPA се нуждаят от предварително дефинирани модели на данни с организирани структури.
Огромна част от неструктурираните данни включват текст на естествен език. Изграждат се големи езикови модели, които „разбират“ тази информация и извличат семантично значение от нея. По този начин се създават значителни възможности за екипите, които искат да интерпретират тези текстове и да ги преобразуват във формат, приемлив за инструментите на RPA.
Много екипи от години използват обработката на естествен език (NLP), за да си помагат при анализа на настроенията. Този процес, известен още като проучване на мнението, помага на организациите да следят чувствата и нагласите на потребителите към марките. В повечето случаи тези инструменти се използват за откриване на положителни, отрицателни и неутрални настроения в текста. Технологията обаче е способна да разпознава емоции с много по-голяма детайлност.
Макар че на пазара има няколко инструмента, които предлагат тази функционалност, LLM предоставя възможност за по-разнообразна употреба отвъд разбирането на отношението на хората към даден продукт или услуга. Например през последните години анализът на данни стана много популярен. Големите масиви от данни дават на компаниите предимство, тъй като им позволяват да извличат прозрения и разбиране, които помагат при вземането на решения, основани на данни.
Инструментите за автоматизация на роботизирани процеси могат да помогнат при събирането на данни. Въпреки това, както споменахме по-горе, те изпитват затруднения с определени видове информация. Въпреки това, когато се съчетае с инструменти за изкуствен интелект, които използват големи езикови модели, RPA може да събира големи количества данни и да ги използва за генериране на информация, необходима за инструментите за бизнес разузнаване (BI).
Един от най-вълнуващите аспекти на генеративния изкуствен интелект е способността му да осмисля входящите данни. С помощта на правилния инженеринг на подкана екипите могат да превърнат тези данни във формат, който да работи с техните инструменти за RPA.
RPA може да помогне за по-ефективна работа с големи данни. Като начало можете да го използвате за въвеждане и извличане на данни. Въпреки това може би най-ценните и интригуващи случаи на използване включват използването на инструменти за RPA за трансформиране, почистване и зареждане на данни или за осигуряване на бързо, ефективно и точно мигриране на данни.
Друг важен момент е управлението на данните. Автоматизирането на заявките за данни помага на организациите да спазват изискванията и държи данните извън полезрението на ръчните работници.
#3. Автоматизация на тестването
Автоматизацията на тестването се наложи в средите на разработчиците на софтуер, тъй като предоставя по-бърз начин за проверка на софтуера. Тестването и осигуряването на качеството традиционно са скъпи и отнемащи време процеси; автоматизацията на тестовете осигурява решение на тези предизвикателства.
Едно от първите неща, които може да направи инженерингът на подкана, е да подобри качеството на тестовите случаи. С правилните подкани тези машини могат да анализират тестови случаи и да идентифицират проблеми и начини за тяхното отстраняване. Този процес може да разшири обхвата на тестовите случаи и да доведе до по-всеобхватни тестове.
Например можете да подадете код на голям езиков модел по същия начин, по който можете да подадете код на човешки рецензент. Тези машини могат бързо да преглеждат кода и да откриват грешки, бъгове и дори да идентифицират проблеми с производителността. Може би още по-интригуващо е, че LLM предлагат и възможност за попълване на кода на тестовите случаи от обикновени фрагменти, което ускорява създаването на тестови случаи.
Бързото инженерство има за цел да се справи с много от проблемите, които доведоха до появата на Agile/DevOps подхода към разработването на софтуер. Инженерите искат ефикасни, лесно повтарящи се тестове, които могат да откриват проблеми преди внедряването на приложенията. Идеята тук е, че като освободят време, разработчиците на софтуер могат да се съсредоточат върху по-креативни и ориентирани към стойността задачи.
Както е посочено в един класически документ,
Техническият дълг в автоматизацията на тестовете
(K. Wiklund, 2012), екипите за разработване на софтуер могат да се сблъскат с проблеми, ако отделят твърде много време за ръчно тестване и проверка на своя софтуер. Първоначалните разходи за решения за автоматизация на тестове, липсата на опит в автоматизацията и дори предпочитанията към по-стари методи могат да допринесат за тези забавяния.
Един от най-интересните аспекти на гъвкавата разработка на софтуер включва
Разработване, основано на поведението (BDD).
Концепцията се отнася до разработването на софтуер с очаквано поведение на потребителите. Въпреки че прилагането на този подход може да спести време, много екипи се затрудняват да реализират тази автоматизация. Въпреки това LLM могат да предоставят решение.
Някои от най-често срещаните симптоми на техническия дълг включват лоша документация и липса на надеждно тестване. Това са проблеми, за чието решаване могат да помогнат днешните магистри по право. Други забележителни симптоми обаче, като например рефакторинг, са твърде сложни за настоящия генеративен AI и може да не доведат до спестяване на време.
Заключителни мисли
Генеративните приложения на ИИ имат огромен потенциал. Въпреки това удобният за потребителя интерфейс може да бъде подвеждащ. Много хора смятат, че е лесно да се генерират качествени резултати от тези машини. Въпреки това отличното бързо проектиране е по-сложно, отколкото очаквате.
Ефективният инженеринг на подтика изисква много опити и грешки. Освен това е необходимо инженерно обмисляне, за да се гарантира, че отговорите са полезни. И накрая, проверката и повторната проверка на работата е важна поради добре известната възможност за грешки.
Макар че работните места за бързи инженери може би се увеличават, не всички са убедени в това. В статия за Harvard Business Review Огуз А. Акар изтъква завладяващ аргумент, че „бъдещите поколения системи с изкуствен интелект ще стават все по-интуитивни и ще разбират естествения език, което ще намали нуждата от щателно разработени подсказки.“
Каквото и да е бъдещето, генеративният изкуствен интелект ще бъде част от него. Въпреки че бързото инженерство е многообещаващо, трудно е да се каже със сигурност каква точно роля ще играе.
Интересно е, че софтуерът за автоматизация на софтуерните тестове вече е пълен с примери за употреба и успешни примери, които показват неговата пригодност за ускоряване на разработването на софтуер, без да се прави компромис с точността или цялостната проверка на приложенията.
Инструменти като ZAPTEST вече позволяват на разработчиците да се справят с проблеми като недостатъчно време и ресурси, технически дълг, документация и цялостно тестване и RPA. Нещо повече, тези инструменти са по-удобни за използване от инженерните програми, което ги прави много по-подходящи за нетехнически екипи. Както винаги, истинският потенциал се крие в пресечната точка на тези вълнуващи технологии за автоматизация.