Hvordan bruke ChatGPT til å skrive kode

0
24
Bærbar datamaskin med kodeinstruksjoner på David Gewirtz/ZDNET

En av de mer spennende oppdagelsene om ChatGPT er at den kan skrive ganske god kode. Jeg testet dette i februar da jeg ba den om å skrive en WordPress-plugin min kone kunne bruke på nettstedet hennes. ChatGPT gjorde en fin jobb, men det var et veldig enkelt prosjekt. 

Hvordan bruke ChatGPT til å skrive: CV | Excel-formler | Essays | Følgebrev 

Så, hvordan kan du bruke ChatGPT til å skrive kode som en del av din daglige kodingspraksis? Her er en rask oppsummering:

    ChatGPT kan produsere både nyttig og ubrukelig kode. For best resultat, gi klare og detaljerte oppfordringer. ChatGPT utmerker seg ved å hjelpe med spesifikke kodeoppgaver eller rutiner, i stedet for å bygge komplette applikasjoner fra bunnen av. Bruk ChatGPT til å finne og velge de riktige kodebibliotekene for spesifikke formål, og delta i en interaktiv diskusjon for å begrense alternativene. Vær forsiktig med eierskapet til AI-generert kode og kontroller alltid kodens pålitelighet. Ikke stol blindt på det genererte resultatet. Behandle interaksjoner med ChatGPT som en samtale. Avgrens spørsmålene dine basert på AIs svar for å komme nærmere ønsket utgang.

Nå, la oss utforske ChatGPT betydelig mer i dybden.

Hvilke typer koding kan ChatGPT gjøre godt?< br>

Det er to viktige fakta om ChatGPT og koding. Den første er at AI-en faktisk kan skrive nyttig kode. 

Den andre er at den kan gå seg helt bort, falle ned i et kaninhull, jage etter sin egen hale og produsere ubrukelig søppel.

Jeg fant ut dette på den harde måten. Etter at jeg var ferdig med WordPress-plugin-modulen, bestemte jeg meg for å se hvor langt ChatGPT kunne gå. 

Jeg skrev ut en veldig nøye melding om et Mac-program, inkludert detaljerte beskrivelser av brukergrensesnittelementer, interaksjoner, hva som ville gis i innstillinger, hvordan de vil fungere, og så videre. Deretter matet jeg ledeteksten til ChatGPT.

Også: OK, så ChatGPT feilsøkte nettopp koden min. For ekte

ChatGPT svarte med en flom av tekst og kode. Deretter stoppet den midt i koden. Da jeg ba den fortsette, kastet den opp enda mer kode og tekst. Jeg ba om fortsette etter fortsett, og det dumpet ut mer og mer kode. Men… ingenting av det var brukbart. Den identifiserte ikke hvor koden skulle gå, hvordan prosjektet skulle konstrueres, og – når jeg så nøye på koden som ble produsert – utelot den store operasjoner jeg ba om, og la igjen enkle tekstbeskrivelser som sa “programlogikk går her” .

Etter en haug med gjentatte tester ble det klart for meg at hvis du ber ChatGPT om å levere en komplett søknad, vil den mislykkes. En følge av denne observasjonen er at hvis du ikke vet noe om koding og vil at ChatGPT skal bygge deg noe, vil det mislykkes.

Der ChatGPT lykkes – og gjør det veldig bra – er å hjelpe noen som allerede vet hvordan de skal kode med å bygge spesifikke rutiner og få spesifikke oppgaver utført. Ikke be om en app som kjører på menylinjen. Men hvis du ber ChatGPT om en rutine for å sette en meny på menylinjen, og deretter lime den inn i prosjektet ditt, vil verktøyet gjøre det ganske bra.

Også: Hvordan bruke ChatGPT til å lage en app

Husk også at mens ChatGPT vises  å ha en enorm mengde domenespesifikk kunnskap (og det har det ofte), mangler det visdom. Som sådan kan verktøyet være i stand til å skrive kode, men det vil ikke være i stand til å skrive kode som inneholder nyansene for svært spesifikke eller komplekse problemer som krever dyp erfaring for å forstå.

Bruk ChatGPT til å demonstrere teknikker, skrive små algoritmer og lage subrutiner. Du kan til og med få ChatGPT til å hjelpe deg med å dele opp et større prosjekt i biter, og så kan du be den om å hjelpe deg med å kode disse delene.

Så, med det i tankene, la oss se på noen spesifikke trinn for hvordan ChatGPT kan hjelpe deg med å skrive kode.

Hvordan bruke ChatGPT til å skrive kode

1. Begrens og skjerp forespørselen din

Dette første trinnet er å bestemme hva du skal spørre ChatGPT om – men ikke spørre om noe ennå. Bestem deg for hva du vil at funksjonen eller rutinen din skal gjøre, eller hva du vil lære om å inkludere i koden din. Bestem deg for parameterne du skal sende inn i koden din og hva du vil få ut. Og se så på hvordan du skal beskrive det.

Også: Hvordan skrive bedre ChatGPT-forespørsler

Tenk deg at du betaler en menneskelig programmerer for å gjøre denne oppgaven. Gir du den personen nok informasjon til å kunne jobbe med oppgaven din? Eller er du for vag, og det er mer sannsynlig at personen du betaler enten stiller spørsmål eller sender inn noe som ikke er relatert til det du ønsker?

Her er et eksempel. La oss si at jeg ønsker å kunne oppsummere hvilken som helst nettside. Jeg vil gi den noe som denne artikkelen og få tilbake en kort oppsummering som er veloverveid og passende. Som mitt input vil jeg spesifisere en nettside-URL. Som utgang er det en tekstblokk med et sammendrag.

2. Bruk ChatGPT til å utforske biblioteker og ressurser

For å fortsette med eksemplet ovenfor, var en veldig gammel måte å trekke ut nettsidedata på å finne teksten mellom HTML-avsnittstagger.

Men med fremveksten av AI-verktøy er det mer fornuftig å bruke et AI-bibliotek å gjøre et intelligent utdrag og oppsummering. Et av stedene ChatGPT utmerker seg (og det er også et område du enkelt kan verifisere for å unngå det autoritative, men feilaktige atferdsmønsteret), er å finne biblioteker og ressurser. 

Også: Hvordan får ChatGPT til å gi kilder og sitater

OpenAI (produsenten av ChatGPT) selger API-tilgang til GPT-3- og GPT-4-motorene som vil gjøre akkurat det vi vil. Men i tilfellet med dette eksemplet, la oss anta at vi ikke ønsker å betale transaksjonsgebyrer.

Så la oss se på samhandling med ChatGPT for å finne ut hvordan du bruker et slikt verktøy gratis med et prosjekt som kjører i PHP.

Jeg startet med en melding som var designet for å få frem informasjon om hvilke biblioteker som ville gi funksjonaliteten jeg ønsket. Et bibliotek (for de av dere som leser med og som ikke er programmerere) er en kode som en programmerer kan få tilgang til som gjør mye av det tunge løftet for et bestemt formål. En stor del av moderne programmering er å finne og velge de riktige bibliotekene, så dette er et godt utgangspunkt.

I dette tilfellet ser jeg på kodeblokker skrevet av andre som vil oppsummere tekst. Her er min første melding:

Beskriv ti forskjellige åpen kildekode AI-biblioteker (og språkene de jobber med) som jeg kan bruke til å generere et sammendrag av hovedinnholdet på en hvilken som helst nettside, og ignorerer eventuelle annonser eller innebygd materiale.

Denne ledeteksten ga meg akkurat det jeg ønsket, inkludert en omtale av OpenAIs tilbud. Jeg tror OpenAI ville gjort det bra her, men for dette hypotetiske prosjektet vil jeg ikke budsjettere med API-avgifter. Så. Jeg skal begrense spørsmålet:

Er noen av disse gratis?

ChatGPT sikret sine innsatser med svaret. Her er hva den sa: “Ja, alle ti av disse AI-bibliotekene er åpen kildekode og gratis å bruke. Noen av dem kan imidlertid ha bruksgrenser eller kreve betaling for tilgang til tilleggsfunksjoner eller ressurser.” Så, basert på det, avklarte jeg spørsmålet mitt:

Hvilke av disse bibliotekene har ingen bruksgrenser og krever ingen ekstra betaling eller lisensiering?

Legg merke til hvordan dette i høy grad er en samtale. Jeg trenger ikke å stille det opprinnelige spørsmålet på nytt. Jeg borer bare ned på samme måte som hvis jeg hadde en ekspert for hånden og søkte avklaring. I dette tilfellet ga ChatGPT meg åtte bibliotekvalg, men ingen av dem nevnte PHP-språket jeg planla å kode i. Så her er neste spørsmål:

Av disse 8 bibliotekene kan Jeg bruker noen med PHP?

Den returnerte tre biblioteker, men jeg var ikke sikker på hva hvert bibliotek gjorde. Så et annet spørsmål:

Hva er forskjellen mellom Sumy, Gensim og NLTK?

Jeg var fortsatt ikke sikker, så jeg avklarte bruksplanen min og spurte deretter:

Hvis jeg vil lage sammendrag av nyhetsartikler på nettsider, hvilket bibliotek ville fungere best?

Svaret jeg fikk var klart og lovende: «Sumy er spesielt utviklet for tekstoppsummering, som er oppgaven med å lage et sammendrag som fanger opp den viktigste informasjonen fra et tekststykke». Så nå var det på tide å se hva som var involvert i å bruke Sumy med PHP. Jeg stilte mitt siste spørsmål for denne delen av prosjektet:

Kan du forklare hvordan du bruker Sumy fra PHP?

Spill gjerne med på datamaskinen din og lim inn disse ledetekstene i din forekomst av ChatGPT. Legg merke til at jeg i trinn én bestemte meg for hvilken programmodul jeg skulle få hjelp til. Så, i dette trinnet, hadde jeg en samtale med ChatGPT for å bestemme hvilket bibliotek jeg skulle bruke og hvordan jeg skulle integrere det i prosjektet mitt.

Også: De beste AI-chatbotene

Det virker kanskje ikke som programmering, men jeg forsikrer deg om at det er det. Programmering er ikke bare å sprenge linjer med kode inn på en side. Programmering er å finne ut hvordan du integrerer alle de ulike ressursene og systemene sammen, og hvordan du snakker med alle de ulike komponentene i løsningen din. Her hjalp ChatGPT meg med integrasjonsanalysen.

Jeg var forresten nysgjerrig på om Googles Gemini AI (tidligere Bard) kunne hjelpe på samme måte. Gemini kan faktisk ikke skrive kode, men det ga litt ekstra innsikt i planleggingsaspektet ved programmering over ChatGPTs svar. Så ikke nøl med å bruke flere verktøy for å triangulere svarene du ønsker. Her er den historien: Gemini vs. ChatGPT: Kan Gemini hjelpe deg med å kode? Siden jeg skrev den artikkelen har Google lagt til noen kodefunksjoner til Gemini, men de er ikke så gode. Du kan lese om det her: Jeg testet Google Geminis nye kodingsferdigheter. Det gikk ikke bra.

Koding er neste gang. 

3. Be ChatGPT om å skrive eksempelkode

OK, la oss ta en pause her. Denne artikkelen har tittelen “Hvordan bruke ChatGPT til å skrive kode.” Og det vil det. Men det vi egentlig gjør er å be ChatGPT om å skrive eksempelkode.

Også: Hva er GPT-4? Her er alt du trenger å vite

La oss være klare: Med mindre du skriver en veldig liten funksjon (som linjesorteren/randomizeren ChatGPT skrev for min kone), vil ikke ChatGPT kunne skrive den endelige koden din. Først må du vedlikeholde den. ChatGPT er forferdelig til å endre allerede skrevet kode. Forferdelig, som i, det gjør det ikke. Så for å få ny kode, må du be ChatGPT om å generere noe nytt. Som jeg fant tidligere, selv om forespørselen din er praktisk talt identisk, kan ChatGPT endre det den gir deg på svært uventede måter.

Så, bunnlinjen: ChatGPT kan ikke vedlikeholde koden din, eller til og med justere den.

Den begrensningen betyr at du må gjøre det selv. Som vi vet, er det første utkastet til et kodestykke sjelden den endelige koden. Så selv om du skulle forvente at ChatGPT skulle generere den endelige koden, ville det virkelig være et utgangspunkt, et hvor du må ta den til ferdigstillelse, integrere den i ditt større prosjekt, teste den, avgrense den, feilsøke den, og så på.

Også: Jeg ba ChatGPT om å skrive en kort Star Trek-episode. Det lyktes faktisk

Men det betyr ikke at eksempelkoden er verdiløs — langt ifra. La oss ta en titt på en forespørsel jeg skrev basert på prosjektet jeg beskrev tidligere. Her er den første delen:

Bli med en PHP-funksjon kalt summarize_article.

Som input vil summarize_article bli sendt en URL til en artikkel på et nyhetsrelatert nettsted som ZDNET.com eller Reuters.com.

Jeg forteller ChatGPT hvilket programmeringsspråk den skal bruke. Jeg forteller det også innspillet, men mens jeg gjør det, gir jeg to nettsteder som eksempler for å hjelpe ChatGPT med å forstå artikkelens stil. Ærlig talt, jeg er ikke sikker på at ChatGPT ikke ignorerte den biten veiledning. Deretter skal jeg fortelle det hvordan du gjør mesteparten av arbeidet:

Inne i summarize_article, hent innholdet på nettsiden på URL-en som er oppgitt. Bruk biblioteket Sumy fra PHP og eventuelle andre nødvendige biblioteker, trekk ut hoveddelen av artikkelen, ignorer eventuelle annonser eller innebygd materiale, og oppsummer det til omtrent 50 ord. Sørg for at sammendraget består av fullstendige setninger. Du kan gå over de 50 ordene for å fullføre den siste setningen, om nødvendig.

Dette er veldig likt hvordan jeg ville instruert en ansatt. Jeg vil at personen skal vite at de ikke bare var begrenset til Sumy. Hvis de trengte et annet verktøy, ville jeg at de skulle bruke det. 

Også: Hvordan få en perfekt ansiktsmatch med Midjourney AI

Jeg har også spesifiserte et omtrentlig antall ord for å sette grenser for hva jeg ønsket som oppsummering. En senere versjon av rutinen kan ta dette nummeret som en parameter. Jeg avsluttet med å si hva jeg ønsket som et resultat:

Når behandlingen er fullført, kode summarize_article slik at den returnerer sammendraget i ren tekst.

Den resulterende koden er ganske enkel. ChatGPT ringte et annet bibliotek (Goose) for å hente artikkelinnholdet. Den sendte deretter sammendraget til Sumy med en grense på 50 ord, og returnerte deretter resultatet. Men når det grunnleggende er skrevet, er det bare et spørsmål om programmering for å gå tilbake og legge til justeringer, tilpasse hva som sendes til de to bibliotekene, og levere resultatene.

Kode Skjermbilde av David Gewirtz/ZDNET

Et interessant punkt. ChatGPT opprettet et eksempelanrop til rutinen den skrev, ved å bruke en URL fra etter 2021 (når ChatGPTs datasett slutter).

https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites- 2022-03-18/

Jeg sjekket den URL-en mot både Reuters' nettsted og Wayback-maskinen, og den eksisterer ikke. ChatGPT har nettopp funnet opp.

Vanlige spørsmål

Erstatter ChatGPT programmerere? 

Ikke nå – eller i det minste – ikke ennå. ChatGPT-programmer på nivå med en talentfull førsteårs programmeringsstudent, men det er lat (som den førsteårsstudenten). Verktøyet kan redusere behovet for entry-level-programmerere, men på det nåværende nivået tror jeg det vil gjøre livet enklere for entry-level-programmerere (og til og med programmerere med mer erfaring) å skrive kode og slå opp informasjon. Det er definitivt en tidsbesparende, men det er få programmeringsprosjekter den kan gjøre på egen hånd – i hvert fall nå. I 2030? Hvem vet.

Hvordan får jeg kodesvar i ChatGPT?

Bare spør det. Du så ovenfor hvordan jeg brukte en interaktiv diskusjonsdialog for å begrense svarene jeg ønsket. Når du jobber med ChatGPT, ikke forvent at ett spørsmål på magisk vis kan gjøre alt arbeidet ditt for deg. Men bruk ChatGPT som en hjelper og ressurs, og det vil gi deg mye nyttig informasjon. Test selvfølgelig den informasjonen – for som John Schulman, en av grunnleggerne av OpenAI, sier: “Vår største bekymring var rundt fakta, fordi modellen liker å dikte opp ting.”

Er koden generert av ChatGPT garantert feilfri?

Absolutt ikke! Men du kan heller ikke stole på koden menneskelige programmerere skriver. Jeg stoler absolutt ikke på noen kode jeg skriver. Kode kommer ut av kodelagingsprosessen utrolig feil. Det er alltid feil. Før du sender, må du teste, teste og teste igjen. Deretter, alfatest med noen få utvalgte ofre. Deretter betatest med ditt bredere brukerfellesskap. Selv etter alt det, vil det være feil. Bare fordi en AI spiller på denne kodetingen, betyr det ikke at den kan lage feilfri kode. Ikke stol på. Verifiser alltid. Og du vil fortsatt ikke ha den helt feilfri. Slik er universets natur.

Hvis jeg bruker ChatGPT til å skrive koden min, hvem eier den?

Som det viser seg, er det ikke mye rettspraksis ennå for å definitivt svare på dette spørsmålet. USA, Canada og Storbritannia krever at noe som er opphavsrettslig beskyttet, er laget av menneskehender, så kode generert av et AI-verktøy er kanskje ikke opphavsrettsbeskyttet. Det er også spørsmål om ansvar basert på hvor opplæringskoden kom fra og hvordan den resulterende koden brukes. ZDNET gjorde et dypdykk i dette emnet, snakket med juridiske eksperter og produserte følgende tre artikler. Hvis du er bekymret for dette problemet (og hvis du bruker AI til å hjelpe med kode, bør du være det), anbefaler jeg at du leser dem.

Hvem eier koden? Hvis ChatGPTs AI hjelper deg med å skrive appen din, tilhører den fortsatt deg?
Hvis du bruker AI-generert kode, hva er ansvarseksponeringen din?
Et vanskelig spørsmål: Hvem eier kode, bilder og fortellinger generert av AI?

Hvilke programmeringsspråk kan ChatGPT?

De fleste av dem. Jeg testet vanlige moderne språk, som PHP, Python, Java, Kotlin, Swift, C# og mer. Men så fikk jeg verktøyet skrive kode på obskure mørketidsspråk som COBOL, Fortran, Forth, LISP, ALGOL, RPG (rapportprogramgeneratoren, ikke rollespillet), og til og med IBM/360 assembly-språk.&nbsp ;

Som prikken over i-en ga jeg den denne oppfordringen:

Skriv en sekvens som viser 'Hello, world' i ascii-blinkende lys på frontpanelet til en PDP 8/e

PDP 8/e var min aller første datamaskin, og ChatGPT ga meg faktisk instruksjoner for å bytte i et program ved hjelp av frontpanelbrytere. Jeg ble imponert, glad og aldri så litt redd.

Kan ChatGPT hjelpe meg med dataanalyse og visualiseringsoppgaver?

Ja, og mye av det kan gjøres uten kode. Sjekk ut hele artikkelen min om dette emnet: Øyeblikket jeg skjønte at ChatGPT Plus var en game-changer for virksomheten min.

Jeg gjorde også en del om genererte diagrammer og tabeller: Hvordan bruke ChatGPT for å lage diagrammer og tabeller

Men det er her det blir moro. I artikkelen ovenfor spurte jeg ChatGPT Plus “Lag et stolpediagram over de fem beste byene i verden etter befolkning,” og det gjorde det. Men vil du ha kode? Prøv å spørre:

Lag et stolpediagram over de fem beste byene i verden etter befolkning i Swift. Hent befolkningsdataene fra nettet. Sørg for å inkludere eventuelle nødvendige biblioteker.

Ved å legge til “i Swift”, spesifiserer du programmeringsspråket. Ved å spesifisere hvor dataene kommer fra og tvinge ChatGPT Plus til å inkludere biblioteker, vet det å hente inn de andre ressursene programmet trenger. Det er grunnen til at programmering med hjelp av AI krever at du kan ting om programmering. Men hvis du gjør det, er det kult. Fordi tre setninger kan gi deg en fin del av kommentert kode. Kult, ikke sant?  

Hvordan håndterer ChatGPT forskjellene mellom dialekter og implementeringer av et gitt programmeringsspråk?

Vi har ikke eksakte detaljer om dette problemet fra OpenAI, men vår forståelse av hvordan ChatGPT trenes kan kaste litt lys over dette spørsmålet. Husk at dialekter og implementeringer av programmeringsspråk (og deres små særheter) endres mye raskere enn hele språket i seg selv. Denne virkeligheten gjør det vanskeligere for ChatGPT (og mange programmeringsfagfolk) å følge med.

Også: Hvordan bruke ChatGPT til å oppsummere en bok, artikkel eller forskningsoppgave

Som sådan ville jeg tatt utgangspunkt i disse to antakelsene:

    Jo nyere den dialektiske endringen er, jo mindre sannsynlig er det at ChatGPT vet om det, og jo mer populært et språk totalt sett, jo mer treningsdata det sannsynligvis har lært av, og derfor mer nøyaktig vil det være.

Hva er bunnlinjen? ChatGPT kan være et veldig nyttig verktøy. Bare ikke tilskriv det superkrefter. Ennå.

Du kan følge mine daglige prosjektoppdateringer på sosiale medier. Sørg for å følge meg på Twitter på @DavidGewirtz, på Facebook på Facebook.com/DavidGewirtz, på Instagram på Instagram.com/DavidGewirtz og på YouTube på YouTube.com/DavidGewirtzTV.