ChatGPT, Bard și alte modele lingvistice mari (LLM) proeminente au dominat fluxurile noastre de știri în ultimul an. Și pe bună dreptate. Aceste tehnologii incitante ne oferă o imagine a viitorului, a puterii și a posibilităților inteligenței artificiale.
În timp ce mare parte din entuziasmul publicului s-a concentrat pe crearea de text, imagini și videoclipuri, aceste instrumente pot fi utilizate pentru multe alte discipline, cum ar fi automatizarea software-ului.
Acest articol va fi o incursiune în profunzime în modul în care ingineria promptă ne poate ajuta cu automatizarea software-ului. Cu toate acestea, primul nostru obiectiv ar trebui să fie o examinare a ingineriei prompte în sine.
Ce este ingineria promptă?
Modelele lingvistice mari, cum ar fi ChatGPT, produc rezultate pe baza indicațiilor sau a propozițiilor pe care le furnizăm. Cu toate acestea, rezultatele variază foarte mult în funcție de cuvintele sau instrucțiunile pe care le folosim. Atunci când introducem instrucțiuni vagi și imprecise, este posibil ca rezultatul să nu fie pe măsură.
Ingineria promptă se referă la proiectarea atentă a intrărilor care ajută la obținerea unui conținut mai precis, mai exact și, în cele din urmă, utilizabil de la aceste sisteme de inteligență artificială interesante.
Sistemele Large Language Model (LLM) utilizează procesarea limbajului natural (NLP) pentru a interpreta declarațiile pe care le oferim. Mașinile transformă aceste întrebări sau instrucțiuni (de exemplu, indicații) în cod și le rulează prin intermediul vastelor lor depozite de date pentru a produce conținut în orice format specificat de noi (de exemplu, text, imagini, cod).
ChatGPT a fost antrenat pe peste
570 GB de date
. Materialul de formare constă în cărți, articole, texte web și așa mai departe. Cu alte cuvinte, aceste seturi de date conțin o cantitate inimaginabilă de cunoștințe.
Deși putem înțelege procesul, o mare parte din ceea ce se întâmplă sub capota acestor sisteme se petrece în afara vederii noastre. Desigur, controlăm intrările și ieșirile și antrenăm sistemul, dar modul exact în care acești algoritmi funcționează și iau deciziile este încă un mister. În cuvintele lui Sam Bowman, profesor de inteligență artificială la Universitatea din New York, “L-am construit, l-am antrenat, dar nu știm ce face.”
Ingineria promptă ne ajută să gestionăm acest haos prin utilizarea de produse care produc rezultate previzibile și utilizabile. Ele ne oferă o cale de a debloca cantitățile uriașe de cunoștințe din aceste aplicații.
Disciplina se profilează ca o nouă carieră
, cu cursuri care apar peste tot, pe măsură ce întreprinderile își dau seama cum pot valorifica această tehnologie puternică.
Cum poate ajuta ingineria promptă
cu automatizarea software-ului?
Automatizarea software-ului și LLM-urile au multe în comun. Ambele oferă o imagine a unui viitor în care mașinile vor spori creativitatea umană pentru a crea locuri de muncă mai rapide și mai productive.
Există mai multe domenii interesante în care aceste două tehnologii pot converge. Iată trei moduri în care putem utiliza ingineria promptă în automatizarea software-ului.
#1. Generarea codului
Scrierea codului este una dintre cele mai promițătoare aplicații ale modelelor lingvistice mari. LLM-urile în domeniul inteligenței artificiale sunt în fază incipientă. În următorii câțiva ani, această tehnologie ar trebui să se îmbunătățească pe măsură ce se adaugă mai multe resurse atât în domeniul informatic, cât și în cel al formării.
Pe termen lung, aceste progrese ar putea face ca inteligența artificială să scrie programe întregi cu intervenție umană limitată sau chiar fără intervenție umană. Cu toate acestea, deocamdată, LLM-urile au unele limitări. Calitatea rezultatului codării LLM depinde în principal de calitatea datelor de intrare. Gunoiul intră, gunoiul iese, așa cum se spune.
Bineînțeles, nu doar ingineria promptă eficientă acționează ca un obstacol. După cum se sugerează în ChatGPT și modele lingvistice mari în mediul academic: Oportunități și provocări (Meyer, 2023), “În prezent, ChatGPT are mai multe șanse de reușită în scrierea cu precizie a unor blocuri mai mici de cod, în timp ce fiabilitatea sa în scrierea unor programe mai mari/mai complexe (de exemplu, un pachet software) este îndoielnică.”
Mai mult, într-un articol recent din revista Nature, unii informaticieni au avertizat că ar trebui să abordăm cu prudență generarea de coduri cu LLM-uri. O altă lucrare contemporană,
Modele lingvistice mari și erori simple și stupide
(Jesse, 2023), a demonstrat modul în care un LLM popular, Codex, care este utilizat de furnizorul Copilot, produce “SStuB-uri cunoscute și textuale de două ori mai probabile decât codul corect cunoscut și textual”.
Deși aceste probleme nu pot fi ignorate, există încă o mulțime de entuziasm justificat în legătură cu modul în care aceste programe pot contribui la democratizarea dezvoltării de software prin sprijinirea echipelor tehnice și non-tehnice deopotrivă.
Poate cel mai impresionant lucru de luat în considerare este că instrumente precum ChatGPT pot produce cod funcțional foarte rapid. Cu ajutorul promptului potrivit, inginerii pot reduce timpul necesar pentru a programa anumite tipuri de cod, asigurând un ciclu de viață mai rapid pentru dezvoltarea de software.
La sfârșitul anului 2022, popularul hub de programare
Stack Overflow a interzis utilizarea generată de inteligența artificială
răspunsuri pe forumul său. Aceștia au invocat rata ridicată de eroare și inexactitățile asociate cu aplicația. Cu toate acestea, tehnologia se află într-un stadiu incipient; în plus, nemulțumirea față de rezultatele generate de inteligența artificială se datorează atât unei inginerii prompte și slabe, cât și tehnologiei în sine.
În ciuda îndoielilor legate de tehnologie, un
articol recent al McKinsey
evidențiază impactul pe care ingineria promptă îl are deja în lumea programării. Firma de consultanță Starea IA în 2023: Anul de debut al inteligenței artificiale generative a împărtășit două tendințe interesante. În primul rând, 7% dintre organizațiile care au investit în IA angajează ingineri prompți. În al doilea rând, companiile care utilizează inteligența artificială au redus rolurile de inginer software legate de inteligența artificială de la 38% la 28%.
Un mod de a interpreta aceste tendințe este că întreprinderile se simt confortabil cu această configurație și sunt pregătite să încredințeze automatizarea software-ului către mașinile lor. În timp ce aceste cifre ar putea speria inginerii existenți, studiul McKinsey sugerează că “doar 8% dintre ei spun că dimensiunea forței de muncă va scădea cu mai mult de o cincime”. În general, inginerii vor trebui probabil să se recalifice pentru a profita de tendința de automatizare a software-ului generată de inteligența artificială.
O aplicație evidentă pentru automatizarea software-ului generată de inteligența artificială include crearea de roboți de automatizare. Cu toate acestea, în timp ce prompt engineering este o interfață aparent ușor de utilizat datorită accentului pus pe conversație, rămâne de văzut dacă poate înlocui soluțiile existente.
În multe privințe, un software precum ZAPTEST a democratizat deja piața automatizării software-ului. Există acum instrumente fără cod care permit echipelor netehnice să creeze roboți RPA de înaltă calitate. În timp ce un software precum ChatGPT poate construi roboți, implementarea și întreținerea s-ar putea dovedi dificilă pentru oricine nu este inginer de software și chiar și pentru cei care sunt.
Înregistrarea interacțiunilor om-calculator din interfața grafică și conversia acestor mișcări în cod este mult mai ușor de utilizat decât utilizarea de mesaje. În combinație cu potențialul LLM de a produce coduri instabile și pline de erori, se poate spune că software-ul RPA nu va ajunge nicăieri în viitorul apropiat.
#2. Conversia datelor nestructurate
Datele nestructurate nu sunt punctul forte al automatizării proceselor robotice. Tehnologia nu a fost construită pentru a gestiona lucruri precum e-mailuri, imagini, audio și multe altele. Instrumentele RPA au nevoie de modele de date predefinite cu structuri organizate.
O proporție uriașă de date nestructurate implică texte în limbaj natural. Modele lingvistice de mari dimensiuni sunt construite pentru a “înțelege” aceste informații și a extrage semnificația semantică din ele. Ca atare, acest lucru creează o oportunitate considerabilă pentru echipele care doresc să interpreteze aceste texte și să le convertească într-un format acceptabil pentru instrumentele RPA.
Multe echipe folosesc de ani de zile procesarea limbajului natural (NLP) pentru a le ajuta la analiza sentimentelor. Acest proces, cunoscut și sub numele de “opinion mining”, ajută organizațiile să fie la curent cu sentimentele și atitudinile consumatorilor față de mărci. În majoritatea cazurilor, aceste instrumente sunt utilizate pentru a detecta sentimente pozitive, negative și neutre în cadrul unui text. Cu toate acestea, tehnologia este capabilă să detecteze emoții mult mai granulare.
Deși există mai multe instrumente pe piață care oferă această funcționalitate, LLM oferă o cale de utilizare mai versatilă, dincolo de înțelegerea părerilor oamenilor despre un produs sau un serviciu. De exemplu, analizele de date au explodat în popularitate în ultimii ani. Big Data oferă companiilor un avantaj, permițându-le să obțină informații și înțelegeri care le ajută la luarea deciziilor bazate pe date.
Instrumentele de automatizare robotică a proceselor pot ajuta la colectarea datelor. Cu toate acestea, așa cum am menționat mai sus, ei au probleme cu anumite tipuri de informații. Cu toate acestea, atunci când este asociat cu instrumente de inteligență artificială care utilizează modele lingvistice mari, RPA poate colecta cantități mari de date și le poate utiliza pentru a genera informațiile necesare pentru instrumentele de Business Intelligence (BI).
Unul dintre cele mai interesante aspecte ale inteligenței artificiale generative este capacitatea sa de a da sens intrărilor de date. Cu o inginerie promptă adecvată, echipele pot transforma aceste date într-un format care să funcționeze pentru instrumentele lor RPA.
RPA poate contribui la eficientizarea fluxurilor de lucru Big Data. Pentru început, îl puteți utiliza pentru a vă ajuta atât la introducerea cât și la extragerea datelor. Cu toate acestea, probabil că cele mai valoroase și mai interesante cazuri de utilizare implică folosirea instrumentelor RPA pentru transformarea, curățarea și încărcarea datelor sau pentru a asigura o migrare rapidă, eficientă și precisă a datelor.
Un alt aspect important de menționat este guvernanța datelor. Automatizarea solicitărilor de date ajută organizațiile să rămână conforme și ține datele departe de ochii lucrătorilor manuali.
#3. Automatizarea testelor
Automatizarea testelor a luat amploare în cercurile de dezvoltare de software, deoarece oferă o modalitate mai rapidă de verificare a software-ului. Testarea și asigurarea calității au fost, în mod tradițional, procese costisitoare și consumatoare de timp; automatizarea testelor oferă o soluție la ambele provocări.
Unul dintre primele lucruri pe care le poate face ingineria promptă este să îmbunătățească calitatea cazurilor de testare. Cu indicațiile corecte, aceste mașini pot analiza cazurile de testare și pot identifica problemele și soluțiile. Acest proces poate spori domeniul de aplicare al cazurilor de testare și poate duce la teste mai cuprinzătoare.
De exemplu, puteți alimenta un model lingvistic mare cu cod în același mod în care ați putea alimenta un evaluator uman. Aceste mașini pot parcurge rapid codul și pot detecta erori, bug-uri și chiar identifica probleme de performanță. Poate și mai interesant, LLM-urile oferă, de asemenea, posibilitatea de a completa codul cazului de testare pornind de la simple fragmente, accelerând crearea cazurilor de testare.
Prompt engineering își propune să abordeze multe dintre problemele care au condus la apariția abordării Agile/DevOps pentru dezvoltarea de software. Inginerii doresc teste eficiente, ușor de repetat, care să poată detecta problemele înainte ca aplicațiile să fie implementate. Ideea este că, eliberând timp, dezvoltatorii de software se pot concentra pe sarcini mai creative și mai valoroase.
Așa cum se subliniază într-o lucrare clasică,
Datoria tehnică în automatizarea testelor
(K. Wiklund, 2012), echipele de dezvoltare de software se pot confrunta cu probleme dacă petrec prea mult timp cu testarea și verificarea manuală a software-ului lor. Costurile inițiale ale soluțiilor de automatizare a testelor, lipsa de experiență în domeniul automatizării și chiar preferința pentru metode mai vechi pot contribui la aceste încetiniri.
Unul dintre cele mai interesante aspecte ale dezvoltării software Agile implică
dezvoltarea bazată pe comportament (BDD).
Conceptul se referă la dezvoltarea de software în funcție de comportamentele așteptate ale utilizatorilor. În timp ce implementarea acestei abordări poate economisi în mod clar timp, multe echipe se străduiesc să pună în practică această automatizare. Cu toate acestea, LLM-urile pot oferi o soluție.
Unele dintre cele mai comune simptome ale datoriei tehnice includ documentația deficitară și lipsa unor teste solide. Acestea sunt probleme pe care LLM-urile de astăzi pot contribui la rezolvarea lor. Cu toate acestea, alte simptome notabile, cum ar fi refactorizarea, sunt prea complexe pentru IA generativă actuală și este posibil să nu ducă la economii de timp.
Gânduri finale
Aplicațiile de inteligență artificială generativă au un potențial imens. Cu toate acestea, interfața prietenoasă și conversațională poate fi înșelătoare. Mulți oameni cred că este simplu să generezi rezultate de calitate de la aceste mașini. Cu toate acestea, o inginerie promptă excelentă este mai complicată decât v-ați aștepta.
O inginerie promptă eficientă necesită o mulțime de încercări și erori. De asemenea, inginerul trebuie să se gândească bine pentru a se asigura că răspunsurile sunt utile. În cele din urmă, verificarea și reverificarea lucrărilor este importantă din cauza potențialului de erori bine cunoscut.
În timp ce locurile de muncă în domeniul ingineriei prompte ar putea fi în creștere, nu toată lumea este convinsă. Scriind în Harvard Business Review, Oguz A. Acar aduce un argument fascinant, conform căruia “generațiile viitoare de sisteme de inteligență artificială vor deveni mai intuitive și mai pricepute în înțelegerea limbajului natural, reducând astfel nevoia de a utiliza indicații meticulos concepute.”
Indiferent de ceea ce ne rezervă viitorul, inteligența artificială generativă va fi prezentă în combinație. Deși ingineria promptă este foarte promițătoare, este greu de spus cu siguranță ce rol precis va juca.
Este interesant faptul că software-ul de automatizare a testelor software este deja plin de cazuri de utilizare și povești de succes care demonstrează că este potrivit pentru accelerarea dezvoltării de software fără a compromite acuratețea sau verificarea completă a aplicațiilor.
Instrumente precum ZAPTEST permit deja dezvoltatorilor să abordeze probleme precum timpul și resursele inadecvate, datoria tehnică, documentația, precum și testarea cuprinzătoare și RPA. În plus, aceste instrumente sunt mai ușor de utilizat decât ingineria promptă, ceea ce le face opțiuni mult mai potrivite pentru echipele netehnice. Ca întotdeauna, potențialul real se află la intersecția dintre aceste tehnologii de automatizare interesante.