ChatGPT, Bard og andre fremtrædende Large Language Models (LLM’er) har domineret vores nyhedsfeeds det seneste år. Og med rette. Disse spændende teknologier giver os et glimt af fremtiden, kraften og mulighederne ved kunstig intelligens.
Mens meget af den offentlige begejstring har drejet sig om at skabe tekst, billeder og video, kan disse værktøjer bruges til mange andre discipliner, som f.eks. softwareautomatisering.
Denne artikel vil fungere som et dybdedyk i, hvordan prompt engineering kan hjælpe os med softwareautomatisering. Men det første, vi bør gøre, er at undersøge selve den hurtige teknik.
Hvad er prompt engineering?
Store sprogmodeller som ChatGPT producerer output baseret på de beskeder eller sætninger, vi giver dem. Men resultaterne varierer meget afhængigt af de ord eller instruktioner, vi bruger. Når vi indtaster vage og upræcise instruktioner, rammer outputtet måske ikke plet.
Prompt engineering henviser til det velovervejede design af input, der hjælper med at fremkalde mere præcist, nøjagtigt og i sidste ende brugbart indhold fra disse spændende AI-systemer.
Large Language Model (LLM)-systemer bruger naturlig sprogbehandling (NLP) til at fortolke de udsagn, vi giver dem. Maskinerne omdanner disse spørgsmål eller instruktioner (dvs. prompts) til kode og kører dem gennem deres enorme datalagre for at producere indhold i det format, vi angiver (dvs. tekst, billeder, kode).
ChatGPT blev trænet på over
570 GB data
. Træningsmaterialet består af bøger, artikler, webtekster og så videre. Med andre ord indeholder disse datasæt en ufattelig mængde viden.
Selvom vi måske forstår processen, sker meget af det, der sker under motorhjelmen på disse systemer, uden for vores synsfelt. Selvfølgelig kontrollerer vi input og output, og vi træner systemet, men præcis hvordan disse algoritmer fungerer og træffer beslutninger, er stadig noget af et mysterium. Som Sam Bowman, professor i kunstig intelligens ved New York University, udtrykker det, “Vi byggede den, vi trænede den, men vi ved ikke, hvad den laver.”
Prompt engineering hjælper os med at håndtere dette kaos ved at bruge output, der giver forudsigelige og brugbare resultater. De tilbyder os en vej til at låse op for de enorme mængder viden, der ligger i disse applikationer.
Disciplinen er ved at opstå som en ny karriere
med kurser, der skyder op overalt, efterhånden som virksomhederne finder ud af, hvordan de kan udnytte denne kraftfulde teknologi.
Hvordan kan hurtig teknik hjælpe
med automatisering af software?
Softwareautomatisering og LLM’er har meget til fælles. De giver begge et glimt af en fremtid, hvor maskiner vil øge den menneskelige kreativitet for at skabe hurtigere og mere produktive arbejdspladser.
Der er flere spændende områder, hvor begge disse teknologier kan konvergere. Her er tre måder, hvorpå vi kan bruge prompt engineering i softwareautomatisering.
#1. Generering af kode
At skrive kode er en af de mest lovende anvendelser af store sprogmodeller. AI LLM’er er i deres vorden. I løbet af de næste par år vil denne teknologi blive forbedret, efterhånden som der bliver tilført flere ressourcer til både computere og uddannelse.
I det lange løb kan disse fremskridt betyde, at AI kan skrive hele programmer med begrænset eller ingen menneskelig indgriben. Men indtil videre har LLM’er nogle begrænsninger. Kvaliteten af outputtet fra LLM-kodning afhænger hovedsageligt af kvaliteten af inputtet. Affald ind, affald ud, som man siger.
Det er selvfølgelig ikke kun effektiv prompt-teknik, der fungerer som en vejspærring. Som foreslået i ChatGPT og store sprogmodeller i den akademiske verden: Muligheder og udfordringer (Meyer, 2023), “I øjeblikket er det mere sandsynligt, at ChatGPT har succes med nøjagtigt at skrive mindre blokke af kode, mens dens pålidelighed ved skrivning af større/mere komplekse programmer (f.eks. en softwarepakke) er tvivlsom.”
I en nylig artikel i magasinet Nature advarede nogle dataloger desuden om, at vi bør nærme os kodegenerering med LLM’er med en vis forsigtighed. En anden moderne avis,
Store sprogmodeller og simple, dumme fejl
(Jesse, 2023) demonstrerede, hvordan en populær LLM, Codex, som bruges af leverandøren Copilot, producerer “kendte, ordrette SStuB’er med op til 2x større sandsynlighed end kendt, ordret korrekt kode.”
Selvom disse problemer ikke kan ignoreres, er der stadig en masse berettiget begejstring for, hvordan disse programmer kan hjælpe med at demokratisere softwareudvikling ved at støtte både tekniske og ikke-tekniske teams.
Det mest imponerende er måske, at værktøjer som ChatGPT kan producere funktionel kode meget hurtigt. Med den rigtige prompt kan ingeniører reducere den tid, det tager at programmere visse typer kode, hvilket sikrer en hurtigere livscyklus for softwareudvikling.
I slutningen af 2022 forbød den populære programmeringshub
Stack Overflow forbudt AI-genererede
svar på sit forum. De nævnte den høje fejlrate og de unøjagtigheder, der er forbundet med applikationen. Men teknologien er stadig i sin vorden, og desuden skyldes utilfredsheden med AI-genererede resultater lige så meget dårlig teknik, som det gør med selve teknologien.
På trods af betænkelighederne ved teknologien har en
nylig artikel af McKinsey
fremhæver den indflydelse, som prompt engineering allerede har i programmeringsverdenen. Konsulentfirmaets Tilstanden for kunstig intelligens i 2023: Generativ AI’s gennembrudsår delte to interessante tendenser. For det første ansætter 7% af de organisationer, der har investeret i AI, hurtige ingeniører. For det andet har virksomheder, der bruger AI, reduceret AI-relaterede softwareingeniørroller fra 38% til 28%.
En måde at fortolke disse tendenser på er, at virksomhederne er komfortable med denne opsætning og klar til at overlade softwareautomatisering til deres maskiner. Selvom disse tal kan skræmme eksisterende ingeniører, antyder McKinsey-undersøgelsen, at “kun 8 procent siger, at størrelsen på deres arbejdsstyrke vil falde med mere end en femtedel.” Overordnet set bliver ingeniører sandsynligvis nødt til at omskole sig for at drage fordel af tendensen til AI-genereret softwareautomatisering.
En oplagt anvendelse af AI-genereret softwareautomatisering er at skabe automatiseringsbots. Men selvom prompt engineering tilsyneladende er en brugervenlig grænseflade takket være dens fokus på samtale, er det endnu uvist, om den kan erstatte eksisterende løsninger.
På mange måder har software som ZAPTEST allerede demokratiseret markedet for softwareautomatisering. Nu er der værktøjer uden kode, som gør det muligt for ikke-tekniske teams at bygge RPA-bots af høj kvalitet. Selvom software som ChatGPT kan bygge bots, kan implementering og vedligeholdelse være vanskelig for alle, der ikke er softwareingeniører, og selv for dem, der er.
Det er langt mere brugervenligt at optage menneske-computer-interaktioner fra din GUI og konvertere disse bevægelser til kode end at bruge prompter. Sammen med LLM’s potentiale til at producere ustabil og fejlbehæftet kode, kan man roligt sige, at RPA-software ikke kommer nogen vegne i den nærmeste fremtid.
#2. Konvertering af ustrukturerede data
Ustrukturerede data er ikke Robotic Process Automationsstærke side. Teknologien er ikke bygget til at håndtere ting som e-mails, billeder, lyd og meget mere. RPA-værktøjer har brug for foruddefinerede datamodeller med organiserede strukturer.
En stor del af de ustrukturerede data er tekst i naturligt sprog. Store sprogmodeller er bygget til at “forstå” disse oplysninger og udtrække semantisk betydning fra dem. Det skaber en betydelig mulighed for teams, der ønsker at fortolke disse tekster og konvertere dem til et format, der er acceptabelt for RPA-værktøjer.
Mange teams har brugt naturlig sprogbehandling (NLP) i årevis til at hjælpe dem med stemningsanalyse. Denne proces, også kendt som opinion mining, hjælper organisationer med at holde styr på forbrugernes følelser og holdninger til brands. I de fleste tilfælde bruges disse værktøjer til at registrere positive, negative og neutrale følelser i tekst. Men teknologien er også i stand til langt mere detaljeret følelsesregistrering.
Der findes flere værktøjer på markedet, der tilbyder denne funktionalitet, men LLM’s giver mulighed for en mere alsidig anvendelse, der rækker ud over at forstå, hvad folk synes om et produkt eller en service. For eksempel er dataanalyse eksploderet i popularitet i de senere år. Big Data giver virksomheder en fordel ved at give dem mulighed for at få indsigt og forståelse, der hjælper med datadrevet beslutningstagning.
Robotic Process Automation-værktøjer kan hjælpe med at indsamle data. Men som vi nævnte ovenfor, har de svært ved at håndtere bestemte typer af information. Men sammen med AI-værktøjer, der bruger store sprogmodeller, kan RPA indsamle store mængder data og bruge dem til at generere de oplysninger, der er nødvendige for Business Intelligence (BI)-værktøjer.
Et af de mere spændende aspekter ved generativ AI er dens evne til at give mening til data-input. Med den rette prompt engineering kan teams omdanne disse data til et format, der fungerer for deres RPA-værktøjer.
RPA kan hjælpe med at gøre Big Data-arbejdsgange mere effektive. Til at begynde med kan du bruge det til at hjælpe med både indtastning og udtrækning af data. Men de måske mest værdifulde og spændende brugsscenarier involverer brug af RPA-værktøjer til at transformere, rense og indlæse data eller sikre, at datamigrering kører hurtigt, effektivt og præcist.
Et andet vigtigt punkt er data governance. Automatisering af dataanmodninger hjælper organisationer med at overholde reglerne og holder data ude af syne for manuelle medarbejdere.
#3. Automatisering af test
Testautomatisering har taget fart i softwareudviklingskredse, fordi det giver en hurtigere måde at verificere software på. Test og kvalitetssikring har traditionelt været dyre og tidskrævende processer; testautomatisering giver en løsning på begge disse udfordringer.
En af de første ting, prompt engineering kan gøre, er at forbedre kvaliteten af testcases. Med de rette instruktioner kan disse maskiner analysere testcases og identificere problemer og løsninger. Denne proces kan forbedre omfanget af testcases og føre til mere omfattende tests.
For eksempel kan du fodre en stor sprogmodel med kode på samme måde, som du ville fodre en menneskelig reviewer. Disse maskiner kan hurtigt køre koden igennem og finde fejl, bugs og endda identificere performanceproblemer. Måske endnu mere spændende er det, at LLM’er også giver mulighed for at færdiggøre testcase-koden ud fra simple uddrag, hvilket fremskynder oprettelsen af testcases.
Prompt engineering sigter mod at tackle mange af de problemer, der har drevet fremkomsten af Agile/DevOps-tilgangen til softwareudvikling. Ingeniører vil have effektive, let gentagelige tests, der kan opdage problemer, før applikationerne implementeres. Ideen er, at softwareudviklere ved at frigøre tid kan koncentrere sig om mere kreative og værdidrevne opgaver.
Som beskrevet i en klassisk artikel,
Teknisk gæld i testautomatisering
(K. Wiklund, 2012), kan softwareudviklingsteams løbe ind i problemer, hvis de bruger for meget tid på manuel test og verificering af deres software. Indledende omkostninger til testautomatiseringsløsninger, manglende automatiseringserfaring og endda en præference for ældre metoder kan bidrage til disse forsinkelser.
Et af de mest interessante aspekter af agil softwareudvikling involverer
Adfærdsdrevet udvikling (BDD).
Begrebet henviser til udvikling af software med forventet brugeradfærd. Selvom implementeringen af denne tilgang helt klart kan spare tid, kæmper mange teams med at føre automatiseringen ud i livet. Men LLM’er kan være en løsning.
Nogle af de mest almindelige symptomer på teknisk gæld er dårlig dokumentation og mangel på robust testning. Det er problemer, som nutidens LLM’er kan hjælpe med at løse. Men andre bemærkelsesværdige symptomer, såsom refaktorering, er for komplekse til den nuværende generative AI og resulterer måske ikke i tidsbesparelser.
Afsluttende tanker
Generative AI-applikationer har et enormt potentiale. Men den brugervenlige, dialogbaserede grænseflade kan være misvisende. Mange tror, at det er ligetil at generere kvalitetsoutput fra disse maskiner. Men fremragende hurtig teknik er mere kompliceret, end du måske tror.
Effektiv prompt engineering kræver en masse forsøg og fejl. Det kræver også en masse omtanke fra ingeniørens side at sikre, at svarene er brugbare. Endelig er det vigtigt at kontrollere og genkontrollere arbejdet på grund af det velkendte potentiale for fejl.
Selvom hurtige ingeniørjob måske er på vej frem, er det ikke alle, der er overbeviste. Oguz A. Acar skriver i Harvard Business Review et fascinerende argument om, at “Fremtidige generationer af AI-systemer vil blive mere intuitive og dygtige til at forstå naturligt sprog, hvilket reducerer behovet for omhyggeligt konstruerede prompter.”
Uanset hvad fremtiden bringer, vil generativ AI være en del af den. Selvom prompt engineering er meget lovende, er det svært at sige med sikkerhed, hvilken præcis rolle det kommer til at spille.
Interessant nok er software til automatisering af softwaretest allerede fyldt med use cases og succeshistorier, der viser, at det er velegnet til at fremskynde softwareudvikling uden at gå på kompromis med nøjagtighed eller omfattende verifikation af applikationer.
Værktøjer som ZAPTEST giver allerede udviklere mulighed for at løse problemer som utilstrækkelig tid og ressourcer, teknisk gæld, dokumentation og omfattende test og RPA. Desuden er disse værktøjer mere brugervenlige end prompt engineering, hvilket gør dem langt mere velegnede til ikke-tekniske teams. Som altid ligger det virkelige potentiale i skæringspunktet mellem disse spændende automatiseringsteknologier.