GitHub Copilot: 5 lessen die wij leerden

14.12

Het is onze missie bij CloudFuel om de meest recente tools te verkennen en in te zetten om jouw cloudmigratiereizen nog beter te maken. Daarom testte Marnik Van Hileghem, een van onze DevOps ingenieurs, de voorbije maanden enkele generatieve (codeer)assistenten. In deze blog delen we vijf ‘lessons learned’ om als ontwikkelaar het werken met tools als GitHub Copilot nog beter te maken. Hier gaan we! 

Les #1: Gegenereerde code ziet er TOP uit – en da’s NIET goed 

Laten we starten met de meest belangrijke les die we tot nog toe trokken. Tools als GitHub Copilot zijn enorm goed in het schrijven van aantrekkelijke code, maar dat maakt het eigenlijk alleen maar moeilijker om fouten te zien staan – die onvermijdelijk gemaakt worden. Het lijkt dan wel verleidelijk om de tools te gebruiken om code te genereren voor talen of bibliotheken die je (nog) niet zo goed kent, maar je hebt haviksogen nodig om de output te reviewen en bugs of kwetsbaarheden te vermijden. 

Een voorbeeldje: kijk maar even naar het stukje code van onze collega Marnik hieronder. In april vroeg hij ChatGPT om (initieel veelbelovende) deployment code te genereren, maar de tool gaf geen correct antwoord. Zie jij de fout? 

 

ChatGPT heeft dus zowaar een bron uit het niets tevoorschijn getoverd, waardoor de code helaas onbruikbaar is. Het probeerde containerinzichten voor AKS in te schakelen, maar die bestaat helemaal niet. Dit is natuurlijk maar een simpel voorbeeld, maar bedenk dat gegenereerde code nog meer subtiele fouten kan bevatten. Zoals we hieronder zullen bespreken, is GitHub Copilot minder geneigd bronnen te ‘hallucineren’ omdat het specifiek getraind is op miljoenen repositories om code te genereren, en het de context van je project kan gebruiken omdat het geïntegreerd is met Visual Studio Code. 

Les #2: Gebruik de juiste tool voor de juiste taak 

De juiste tool kiezen voor een taak is cruciaal. Laten we eens bekijken waar GitHub Copilot, Copilot Chat en ChatGPT best in zijn, en op welke vlakken ze verschillen qua aanpak. 

GitHub Copilot is een geavanceerde en automatische aanvultool voor je code. Het geeft suggesties, maar omdat je er geen gesprek mee kan voeren, zul je het moeten doen met zijn beperkte set opties (waar je door kan bladeren door op Tab te drukken). Omdat Microsoft de eigenaar is van GitHub, is Copilot naadloos geïntegreerd met Visual Studio en Visual Studio Code. Dat betekent dat het de context kan gebruiken van de bestanden die je op dat moment open hebt staan, wat zowel een voordeel als een nadeel kan zijn. GitHub Copilot is perfect voor terugkerende stukjes code, maar het is niet helemaal de intelligente ‘koppelprogrammeur’ die je zou verwachten voor algemene codering. 

 

Een ‘koppelprogrammeur’ zien we als iemand die je om feedback kan vragen en met wie je kan samenwerken. Daarom wenden mensen zich vaak tot ChatGPT als het gaat om het genereren van code. In tegenstelling tot GitHub Copilot biedt ChatGPT een conversatieinterface, waardoor je kan itereren op de output door feedback te geven en te vragen om correcties. De chatgeschiedenis is ook een belangrijk voordeel, maar zoals we later zullen bespreken, heeft dit zijn beperkingen. 

Omdat ChatGPT een op zichzelf staande tool is, is het niet geïntegreerd met je codebase, en dus weet het alleen wat je het ingeeft. Tegelijkertijd maakt dit gebrek aan context het net erg geschikt voor een breed scala aan codegerelateerde taken: je kan het gebruiken voor het schrijven van projectdocumentatie, het (her)structureren van documenten, het opstellen van e-mails naar stakeholders van een project, het maken van tests en nog veel meer. Dit gesprek laat, bijvoorbeeld, zien hoe het je kan helpen bij het maken van een factuurtabel voor PostgreSQL. 

Tot slot is Copilot Chat de beste combo. Het biedt een balans tussen ChatGPT en GitHub Copilot door je vragen te laten stellen in natuurlijke taal, zowel in-line als in een chatvenster. Het dient als een uitstekend leermiddel om code te begrijpen, opmerkingen te schrijven en te debuggen. Je kan het ook gebruiken om automatisch projectdocumentatie in markdown formaat te genereren. 

Les #3: Wissen en herhalen is best oké 

Een belangrijk onderdeel van het voeren van een goed gesprek, is onthouden wat er al werd verteld. Gesprekstools kunnen hun output itereren op basis van jouw feedback, maar hou er rekening mee dat ze een beperkt ‘geheugen’ hebben. Dat wordt een contextvenster genoemd. Daarom raden we aan om je stukjes code klein te houden. Vraag niet om in één keer een hele applicatie te genereren, maar begin met een schets en neem stukje bij beetje door wat je nodig hebt. 

Het beste idee is echter om Copilot Chat te gebruiken, want die compenseert deze beperking volledig door rekening te houden met je huidige geopende bestanden. Met de aankomende Copilot Enterprise zal het zelfs in staat zijn om de hele codebase van je organisatie in de gaten te houden en gedetailleerde suggesties te doen. Bekijk voor meer technische details GitHub’s oorspronkelijke aankondiging en de verbeteringen die zijn aangebracht als onderdeel van Copilot Enterprise. 

Les #4: Wees niet bang om het over te nemen van je Copilot 

Een van de meest onderschatte vaardigheden bij het gebruik van een conversationele AI-assistent is weten wanneer je je verlies moet nemen wanneer de output niet aan je verwachtingen voldoet. Denk kritisch na of het sneller is om je assistent uit te leggen hoe ‘ie het probleem moet oplossen, of om het simpelweg zelf te doen. 

De tip der tips is echter om vervolgens je definitieve versie te delen en te evalueren met je tool in plaats van gewoon door te gaan naar het volgende onderdeel. Vragen als: “Ik heb je code iets aangepast om hem performanter te maken, wat vind je van deze bijgewerkte versie?” zullen de kwaliteit van latere antwoorden aanzienlijk verbeteren. Zowel Copilot Chat als ChatGPT bieden je de optie om onmiddellijk feedback te geven over de kwaliteit van de antwoorden door middel van een duimpje (zowel omhoog als omlaag). 

Les #5: Omarm het experiment 

Generatieve codeerassistenten zijn nog nieuw én evolueren snel naarmate de technologie volwassener wordt. GitHub Copilot voelt op dit moment als een geweldige tijdsbesparing, maar de nieuwe Copilot Chat is al mijlenver vooruit in termen van bruikbaarheid, en het zal alleen maar beter worden. Aarzel niet om te onderzoeken, te experimenteren en te bekijken wat het beste past bij jouw technologiestack en voorkeurstalen. Elke tool heeft zijn sterke en zwakke punten en alleen door te experimenteren kan je ontdekken wat perfect matcht met jouw behoeften. Tools kunnen krachtig zijn, maar je moet uitzoeken hoe je ze op de juiste manier gebruikt. 

Wil je meer weten over hoe de nieuwste technologieën je kunnen helpen om je reis naar de cloud naar een hoger niveau te tillen? Neem vandaag nog contact met ons op en we laten je zien waar we aan werken en hoe we je kunnen helpen bij je volgende project.  

Disclaimer: Onze beoordeling is gebaseerd op de huidige staat van de generatieve coderingsmarkt, die zich snel ontwikkelt. Op het moment van schrijven gebruikten we Copilot v1.78, de publieke preview van Copilot Chat, en ChatGPT Plus gebaseerd op GPT 4. 

Smokescreen