Blog

GitHub Copilot: steelt Microsoft mijn code?

Of het daadwerkelijk wordt toegepast of niet, AI is een onderwerp wat bij vrijwel iedere klant de aandacht heeft. In deze blog duiken we in de voor- en nadelen van het gebruik van AI om je als developer productiever te maken.

Sinds de komst van ChatGPT is het Large Language Model een term die bij veel meer mensen bekend is. Deze modellen staan in de basis bekend als “voorspellers”. Op basis van een enorme dataset aan brongegevens en invoer van de gebruiker voorspellen ze wat de meest logische woorden (of eigenlijk: tokens) zijn om tot een antwoord te komen. Of dat antwoord feitelijk helemaal correct is, dat weet het model niet. Het model kent ook geen concepten als ruimte of tijd, ondanks dat dat soms wel zo lijkt door de antwoorden die het geeft.

Waar ChatGPT een algemeen taalmodel is, kan dezelfde technologie gebruikt worden om – op basis van specifiekere brondata – meer specialistische modellen te trainen. Codex is daar een voorbeeld van, en is tevens de techniek achter het onderwerp van deze blogpost: GitHub Copilot.

 

Co-piloten

Copilot is Microsoft haar verzamelnaam voor oplossingen op basis van generatieve AI. Er is inmiddels een Copilot voor Office, die we terugvinden in onder andere Word, PowerPoint, Excel en andere Office applicaties. Er is een Copilot voor Teams die helpt bij het notuleren en samenvatten van online meetings; waarna er automatisch een lijst van actiepunten gegenereerd kan worden. De technologie achter deze Copilots is hetzelfde, maar je kunt je voorstellen dat er wat nuance verschil zit in de uitvoering tussen een implementatie die met Excel overweg kan als eentje die in Teams of Outlook leeft.

Microsoft Copilots

Verschillende Co-piloten binnen de Microsoft producten

Code-pilot

Het model wat voor GitHub gebruikt wordt heeft een fundamenteler verschil ten opzichte van de Office gebaseerde versies. Die zijn namelijk gebouwd op basis van ChatGPT implementaties, waar Copilot dus een Codex implementatie is. En hoewel de technologie daarachter grotendeels hetzelfde is, is de de dataset dat niet. Codex is namelijk getrained op een dataset bestaande uit code. Heel. Veel. Code. De code die ze daarvoor gebruiken is code die te vinden is in publieke repositories, code in allerlei soorten, maten en talen. Daarom blinkt dit model dus ook uit in het schrijven (en “lezen”) van code. Wat dat betreft had Copilot in GitHub misschien beter CodePilot kunnen heten.

Wat kun je er mee?

GitHub Copilot doet in de basis dus hetzelfde als ChatGPT: op basis van invoer voorspelt het de meest logische volgende tekst, waarbij de tekst in dit geval code is. De invoer bestaat in dit geval uit de code die je zelf hebt geschreven, aangevuld met een suggestie of commando waarmee je het systeem vertelt wat je ervan verlangt. Dat kan een letterlijke opdracht zijn (“prompt”), of een indicatie die aangeeft dat je op zoek bent naar suggesties, zoals “//” om een code comment te laten genereren.

In feite maakt Copilot dus je code af. Om een paar voorbeelden te noemen van wat zoal mogelijk is:

  • Je comments laten genereren op basis van bijvoorbeeld een class of functie, maar beter nog:
  • Aan de hand van een comment of functienaam de code laten genereren.
  • Unit testen toevoegen / uitbreiden.
  • Suggesties doen over zaken die je zou kunnen veranderen / verbeteren.
  • Genereren van documentatie of bijvoorbeeld de beschrijving van een pullrequest.
  • Meedenken in design en architectuur vraagstukken, waarbij het wel belangrijk is om je te blijven realiseren dat dit systeem in de basis tekst voorspelt en niet daadwerkelijk ‘denkt’.

GitHub Copilot in action generating a function

Bron: GitHub Copilot Completions – Visual Studio Marketplace

Dit alles werkt voor een veelvoud aan talen (zowel programmeer- als scripting) en frameworks. Door de enorme dataset weet je Copilot een hoop!

Voor een volledige lijst, kijk eens op: GitHub Copilot · Your AI pair programmer

Wat kun je er niet mee?

Op basis van sommige demo’s / marketing materiaal zou je bijna gaan geloven dat developers compleet overbodig zijn geworden. Toch is dat – voor nu in ieder geval – nog zeker niet het geval. Wat kan Copilot zoal niet?

  • De context is nog beperkt. Dat wil zeggen dat Copilot in het geval van grotere projecten niet je complete solution kent en daarom sommige zaken niet zomaar aan elkaar zal knopen.
  • Copilot is beperkt tot de trainingsdata die hij kent. Dat betekent dat bijvoorbeeld nieuwere versies van libraries niet altijd bekend zijn. Ook interne libraries die je afdeling of bedrijf wellicht gebruikt, zal Copilot niet kennen. Hierbij is ook je licentievorm van belang (zie verderop).
  • De kwaliteit van de voorspelling is afhankelijk van de kwaliteit van de brondata. Copilot gebruikt hiervoor publieke GitHub repositories, die niet altijd allemaal van hoogstaande kwaliteit zijn. Dat kan betekenen dat een antwoord ook wel eens niet klopt. Blijven opletten dus!

Vooralsnog kan Copilot taakgericht voor je werken, maar niet ineens heel je werk overnemen. Wellicht komt er een dag waarop AI zelfstandig een complete feature request kan implementeren; voor nu is dat in veel gevallen nog een brug te ver.

Steelt Microsoft mijn code?

Dit is een hardnekkig misverstand wat de kop op blijft steken. Moet ik toegang geven tot mijn code en steelt GitHub (Microsoft) die dan? Het antwoord is: ja, je moet toegang geven en nee; er wordt geen code gestolen. Toegang tot jouw code maakt het dat Copilot iets snapt van de context waar het in bezig is. Zoals je als developer ook in de solution moet kunnen kijken om een nieuwe feature te kunnen schrijven, moet Copilot dat ook.

In de voorwaarden staat duidelijk beschreven dat de code alleen voor dat doeleinde gebruikt wordt en niet gebruikt wordt om het model te trainen. Ik schreef al eerder dat voor de training van het publieke model alleen publieke repositories gebruikt worden. Code die dus toch al openbaar is. Jouw code (of die van je bedrijf) wordt dus alleen gebruikt om het model van context te voorzien; niet om het model te trainen. Mocht Microsoft dat alsnog toch doen en blijken dat er niet-publieke code opduikt in voorspellingen van Copilot, dan kunnen ze natuurlijk enorme claims verwachten. Ze hebben voldoende reden om daar waakzaam op te zijn.

Een kanttekening hierbij is dat er ook private language models zijn opgenomen in de voorwaarden, die wel geoptimaliseerd worden met de prompts die je geeft. In dat geval gaat het dus om een private model, wat niet door anderen gebruikt kan worden.

Dit alles betekent overigens niet dat het helemaal risicoloos is. Je geeft een derde partij toegang tot je codebase en theoretisch kan er natuurlijk altijd een security lek, bug of ander issue zijn waardoor er toch iets lekt. Dat is een risico om rekening mee te houden, zoals je ook rekening moet houden met security lekken in een NuGet package of andere onderdelen van je software ontwikkelketen.

Samsung

“Er was toch code van Samsung gelekt?” zou je je wellicht kunnen afvragen. Dat klopt. Maar er zijn een paar redenen waarom dit geen reden tot paniek (meer) is:

  • Dit lek vond plaats in ChatGPT, niet in GitHub Copilot.
  • Het lek betrof een beveiligingsprobleem in de ‘schil’ rondom ChatGPT, de web applicatie die het chatten met het model mogelijk maakt.
  • Het lek maakte het mogelijk om sessies van andere gebruikers te kapen en daarmee informatie in te zien van andere gebruikers.

Het probleem was hier dus wederom niet dat invoer is gebruikt om het model te trainen, in dit geval was de invoer zichtbaar voor anderen. Vervelend, maar een security issue wat direct werd opgelost, daarna nooit meer opgetreden is en verder losstaat van GitHub Copilot.

Tijd voor een Co-piloot?

Copilot is verkrijgbaar in meerdere abonnementsvormen. Het Business abonnement kost op het moment van schrijven 19 dollar per gebruiker per maand. De duurdere Enterprise vorm kost 39 dollar per gebruiker per maand. De Enterprise variant voegt functionaliteit toe die je kunt zien als een “interne Stack Overflow”, waarbij je vragen kunt stellen over specifieke kennis van jouw bedrijf. Let wel op dat je voor die laatste ook GitHub Enterprise Cloud nodig hebt. Werkt jouw bedrijf op basis van Azure DevOps, dan heb je aan de Business variant meestal de beste optie.

GitHub Copilot licensing

GitHub Copilot licentie kosten per 04-06-2024. Voor actuele prijzen, zie https://github.com/features/copilot. Keuzestress? Neem gerust even vrijblijvend contact op om te sparren.

Of en wanneer je als bedrijf start met het gebruik van Copilot is een keuze waarin mstack kan adviseren, maar die je zelf moet maken. Naar onze mening stelt deze technologie ontwikkelaars in staat om productiever te worden en betaalt een abonnement zich daarmee terug. Er zijn zaken om goed over na te denken, voornamelijk op het gebied van kwaliteit. Als ontwikkelaar blijf je eindverantwoordelijk voor het werk wat je oplevert, of dat nu door AI geschreven is of niet. Gebruik van deze tools mag dus nooit een excuus worden om zelf niet meer op te letten. Wat dat betreft is dit niet anders dan een timmerman met een cirkelzaag; ontzettend handig gereedschap wat veilig gebruikt kan worden wanneer je er op een verantwoorde manier mee om gaat.

Jasper Siegmund

Jasper staat bekend als onze "managing architect". Met zijn achtergrond als solution architect helpt hij als manager van mstack onze klanten èn collega's om tot de beste oplossingen te komen.

Interesse in meer informatie over GitHub Copilot, ChatGPT en andere generatieve AI? Check dan onze whitepaper over dit onderwerp of neem contact op. We komen graag een keer geheel vrijblijvend vertellen waarom wij deze technologie zo razend interessant vinden!