ChatGPT, Bard og andre fremtredende store språkmodeller (LLM) har dominert nyhetsstrømmene våre det siste året. Og med rette. Disse spennende teknologiene gir oss et glimt inn i fremtiden, kraften og mulighetene til AI.
Mens mye av den offentlige spenningen har sentrert seg rundt å lage tekst, bilder og video, kan disse verktøyene brukes til mange andre disipliner, som programvareautomatisering.
Denne artikkelen vil fungere som et dypdykk i hvordan rask ingeniørarbeid kan hjelpe oss med programvareautomatisering. Vår første anløpshavn bør imidlertid være en undersøkelse av prompt engineering i seg selv.
Hva er prompt engineering?
Store språkmodeller som ChatGPT produserer utdata basert på meldingene eller setningene vi gir dem. Resultatene varierer imidlertid mye avhengig av ordene eller instruksjonene vi bruker. Når vi legger inn vage og upresise instruksjoner, kan det hende at utdataene ikke treffer blink.
Rask konstruksjon refererer til den gjennomtenkte utformingen av innganger som bidrar til å fremkalle mer presist, nøyaktig og til slutt brukbart innhold fra disse spennende AI-systemene.
Large Language Model (LLM)-systemer bruker naturlig språkbehandling (NLP) for å tolke utsagnene vi gir dem. Maskinene gjør disse spørsmålene eller instruksjonene (dvs. forespørsler) om til kode og kjører dem gjennom sine enorme datalager for å produsere innhold i det formatet vi angir (f.eks. tekst, bilder, kode).
ChatGPT ble trent på over 570 GB data. Opplæringsmateriellet består av bøker, artikler, netttekster og så videre. Disse datasettene inneholder med andre ord en ufattelig mengde kunnskap.
Selv om vi kanskje forstår prosessen, skjer mye av det som skjer under panseret på disse systemene utenfor vårt syn. Visst, vi kontrollerer inngangene og utgangene, og vi trener systemet, men nøyaktig hvordan disse algoritmene fungerer og tar avgjørelsene er fortsatt noe av et mysterium. Med ordene til Sam Bowman, en AI-professor ved New York University, «Vi bygde den, vi trente den, men vi vet ikke hva den gjør.»
Rask ingeniørarbeid hjelper oss å håndtere dette kaoset ved å bruke resultater som gir forutsigbare og brukbare resultater. De tilbyr oss en vei for å låse opp de enorme mengdene kunnskap i disse applikasjonene. Disiplinen dukker opp som en ny karriere , med kurs som dukker opp overalt mens bedrifter finner ut hvordan de kan utnytte denne kraftige teknologien.
Hvordan kan rask ingeniørhjelp
med programvareautomatisering?
Programvareautomatisering og LLM-er har mye til felles. De gir begge et glimt av en fremtid der maskiner vil øke menneskelig kreativitet for å skape raskere og mer produktive arbeidsplasser.
Det er flere spennende områder hvor begge disse teknologiene kan konvergere. Her er tre måter vi kan bruke prompt engineering i programvareautomatisering.
#1. Genererer kode
Å skrive kode er en av de mest lovende bruksområdene til store språkmodeller. AI LLMs er i sin spede begynnelse. De neste årene bør denne teknologien forbedres ettersom flere ressurser legges til både databehandling og opplæring.
I det lange løp kan disse fremskrittene føre til at AI skriver hele programmer med begrenset eller ingen menneskelig innblanding. Men foreløpig har LLM-er noen begrensninger. Kvaliteten på utdataene til LLM-koding avhenger hovedsakelig av kvaliteten på inngangen. Søppel inn, søppel ut, som man sier.
Selvfølgelig er det ikke bare effektiv prompt engineering som fungerer som en veisperring. Som foreslått i ChatGPT og store språkmodeller i akademia: muligheter og utfordringer (Meyer, 2023), «For øyeblikket er det mer sannsynlig at ChatGPT lykkes med å nøyaktig skrive mindre blokker med kode, mens påliteligheten til å skrive større/mer komplekse programmer (f.eks. en programvarepakke) er tvilsom.»
Videre, i en nylig artikkel i magasinet Nature, advarte noen dataforskere om at vi bør nærme oss kodegenerering med LLM-er med en viss forsiktighet. En annen moderne artikkel, Store språkmodeller og enkle, dumme feil (Jesse, 2023), demonstrerte hvordan en populær LLM, Codex, som brukes av leverandøren Copilot, produserer «kjente, ordrett SstuB-er så mye som 2x så sannsynlig enn kjent, ordrett korrekt kode.»
Selv om disse problemene ikke kan ignoreres, er det fortsatt mye forsvarlig spenning rundt hvordan disse programmene kan bidra til å demokratisere programvareutvikling ved å støtte både tekniske og ikke-tekniske team.
Det kanskje mest imponerende å vurdere er at verktøy som ChatGPT kan produsere funksjonell kode veldig raskt. Med riktig forespørsel kan ingeniører redusere tiden det tar å programmere visse typer kode, noe som sikrer en raskere livssyklus for programvareutvikling.
På slutten av 2022 forbød den populære programmeringshuben Stack Overflow AI-generert svar på forumet sitt. De nevnte den høye feilprosenten og unøyaktighetene knyttet til søknaden. Teknologien er imidlertid i et begynnende stadium; dessuten skyldes misnøyen med AI-generert produksjon like mye dårlig prompt engineering som teknologien i seg selv.
Til tross for bekymringene over teknologien, et nylig stykke av McKinsey fremhever virkningen som prompt engineering allerede har i programmeringsverdenen. Konsulentfirmaets Tilstanden til AI i 2023: Generativ AIs utbruddsår delte to interessante trender. For det første ansetter 7 % av organisasjonene som har investert i AI raske ingeniører. For det andre har selskaper som bruker AI redusert AI-relaterte programvareingeniørroller fra 38 % til 28 %.
En måte å tolke disse trendene på er at bedrifter er komfortable med dette oppsettet og klare til å levere programvareautomatisering til maskinene sine. Selv om disse tallene kan skremme eksisterende ingeniører, antyder McKinsey-undersøkelsen at «bare 8 prosent sier at størrelsen på arbeidsstyrken deres vil reduseres med mer enn en femtedel». Samlet sett vil ingeniører sannsynligvis trenge omkompetanse for å dra nytte av trenden mot AI-generert programvareautomatisering.
En åpenbar applikasjon for AI-generert programvareautomatisering inkluderer å lage automatiseringsroboter. Men mens prompt engineering er et tilsynelatende brukervennlig grensesnitt takket være fokuset på samtale, gjenstår det å se om det kan erstatte eksisterende løsninger.
På mange måter har programvare som ZAPTEST allerede demokratisert programvareautomatiseringsmarkedet. No-code-verktøy er her nå som lar ikke-tekniske team bygge høykvalitets RPA- roboter. Mens programvare som ChatGPT kan bygge bots, kan implementering og vedlikehold vise seg å være vanskelig for alle som ikke er programvareingeniører og til og med de som er det.
Å registrere interaksjoner mellom mennesker og datamaskiner fra GUI-en din og konvertere disse bevegelsene til kode er langt mer brukervennlig enn å bruke ledetekster. Når kombinert med LLMs potensiale til å produsere ustabil og feilstrød kode, er det rimelig å si at RPA-programvare ikke kommer noen vei i overskuelig fremtid.
#2. Konvertering av ustrukturerte data
Ustrukturerte data er ikke Robotic Process Automation sin sterke side. Teknologien ble ikke bygget for å håndtere ting som e-post, bilder, lyd og mer. RPA-verktøy trenger forhåndsdefinerte datamodeller med organiserte strukturer.
En stor andel av de ustrukturerte dataene involverer naturlig språktekst. Store språkmodeller er bygget for å «forstå» denne informasjonen og trekke ut semantisk mening fra dem. Som sådan skaper dette en betydelig mulighet for team som ønsker å tolke disse tekstene og konvertere dem til et format som passer til RPA-verktøy.
Mange team har brukt naturlig språkbehandling (NLP) i årevis for å hjelpe dem med sentimentanalyse. Denne prosessen, også kjent som opinion mining, hjelper organisasjoner med å holde oversikt over forbrukernes følelser og holdninger til merkevarer. I de fleste tilfeller brukes disse verktøyene til å oppdage positive, negative og nøytrale følelser i tekst. Teknologien er imidlertid i stand til langt mer detaljert emosjonell deteksjon også.
Selv om det er flere verktøy på markedet som tilbyr denne funksjonaliteten, gir LLM’s en vei til mer allsidig bruk utover å forstå hvordan folk føler om et produkt eller en tjeneste. For eksempel har dataanalyse eksplodert i popularitet de siste årene. Big Data gir bedrifter et forsprang ved å la dem utlede innsikt og forståelse som hjelper med datadrevet beslutningstaking.
Robotic Process Automation-verktøy kan hjelpe med å samle inn data. Men som vi nevnte ovenfor, sliter de med spesifikke typer informasjon. Når imidlertid RPA sammenkobles med AI-verktøy som bruker store språkmodeller, kan samle store mengder data og bruke den til å generere informasjonen som kreves for Business Intelligence (BI)-verktøy.
En av de mer spennende aspektene ved Generative AI er dens evne til å forstå datainndata. Med riktig prompt engineering kan team gjøre disse dataene om til et format som fungerer for deres RPA-verktøy.
RPA kan bidra til å gjøre Big Data-arbeidsflyten mer effektiv. For det første kan du bruke den til å hjelpe med både datainntasting og utvinning. Imidlertid er kanskje de mest verdifulle og spennende brukssakene å bruke RPA-verktøy for å transformere, rense og laste inn data eller sikre at datamigrering går raskt, effektivt og nøyaktig.
Et annet viktig punkt å merke seg er datastyring. Automatisering av dataforespørsler hjelper organisasjoner med å holde seg kompatible og holder data ute av syne for manuelle arbeidere.
#3. Test automatisering
Testautomatisering har tatt fart i programvareutviklingskretser fordi det gir en raskere måte å verifisere programvare på. Testing og kvalitetssikring har tradisjonelt vært dyre og tidkrevende prosesser; testautomatisering gir en løsning på begge disse utfordringene.
En av de første tingene som rask ingeniør kan gjøre er å forbedre kvaliteten på testtilfeller. Med de riktige spørsmålene kan disse maskinene analysere testtilfeller og identifisere problemer og løsninger. Denne prosessen kan øke omfanget av testtilfeller og føre til mer omfattende tester.
Du kan for eksempel mate en stor språkmodellkode på omtrent samme måte som en menneskelig anmelder. Disse maskinene kan raskt kjøre gjennom koden og oppdage feil, feil og til og med identifisere ytelsesproblemer. Kanskje mer spennende, LLM-er tilbyr også muligheten for å fullføre testcase-kode fra bare utdrag, og akselerere opprettelsen av testcases.
Rask ingeniørarbeid har som mål å takle mange av problemene som har drevet fremveksten av Agile/DevOps- tilnærming til programvareutvikling. Ingeniører vil ha effektive, lett repeterbare tester som kan oppdage problemer før applikasjoner distribueres. Tanken her er at ved å frigjøre tid kan programvareutviklere konsentrere seg om mer kreative og verdidrevne oppgaver.
Som skissert i en klassisk artikkel, Technical Debt in Test Automation (K. Wiklund, 2012), kan programvareutviklingsteam støte på problemer hvis de bruker for mye tid på manuell testing og verifisering av programvaren. Startkostnader for testautomatiseringsløsninger, mangel på automatiseringserfaring, og til og med en preferanse for eldre metoder kan bidra til disse nedgangene.
En av de mest interessante aspektene ved Agile programvareutvikling involverer Behavior-Driven Development (BDD). Konseptet refererer til utvikling av programvare med forventet brukeratferd. Selv om implementering av denne tilnærmingen klart kan spare tid, sliter mange team med å bringe denne automatiseringen til live. LLM-er kan imidlertid tilby en løsning.
Noen av de vanligste symptomene på teknisk gjeld inkluderer dårlig dokumentasjon og mangel på robust testing. Dette er problemer som dagens LLM kan bidra til å løse. Imidlertid er andre bemerkelsesverdige symptomer, som refactoring, for komplekse for nåværende Generative AI, og kan ikke resultere i tidsbesparelser.
Siste tanker
Generative AI-applikasjoner har et enormt potensial. Det brukervennlige, samtalegrensesnittet kan imidlertid være misvisende. Mange tror at det er enkelt å generere kvalitetsresultater fra disse maskinene. Imidlertid er utmerket prompt engineering mer komplisert enn du kanskje forventer.
Effektiv prompt engineering krever mye prøving og feiling. Det krever også mye omtanke på vegne av ingeniøren for å sikre at svarene er nyttige. Til slutt er det viktig å sjekke og etterprøve arbeidet på grunn av det godt publiserte potensialet for feil.
Selv om raske ingeniørjobber kan øke, er ikke alle overbevist. Oguz A. Acar skriver i Harvard Business Review og kommer med et fascinerende argument «Fremtidige generasjoner av AI-systemer vil bli mer intuitive og dyktige til å forstå naturlig språk, noe som reduserer behovet for omhyggelig konstruerte spørsmål.»
Uansett hva fremtiden bringer, vil Generative AI være der i miksen. Mens rask ingeniørarbeid har mye løfte, er det vanskelig å si sikkert hvilken rolle den vil spille.
Interessant nok er programvare for automatisering av programvaretest allerede fullpakket med brukstilfeller og suksesshistorier som viser dens egnethet for å fremskynde programvareutvikling uten å gå på akkord med nøyaktighet eller omfattende verifisering av applikasjoner.
Verktøy som ZAPTEST lar utviklere allerede løse problemer som utilstrekkelig tid og ressurser, teknisk gjeld, dokumentasjon og omfattende testing og RPA. Dessuten er disse verktøyene mer brukervennlige enn prompte engineering, noe som gjør dem langt mer passende alternativer for ikke-tekniske team. Som alltid ligger det virkelige potensialet i skjæringspunktet mellom disse spennende automatiseringsteknologiene.