Leerpad
Er is de laatste tijd een toename van open-sourcemodellen, en voor codebewerking laten spelers als Cursor AI en GitHub Copilot gebruikers hun AI-codeassistenten gratis uitproberen, maar we lopen al snel tegen een paywall aan zodra we ze voor een echt project willen gebruiken.
Gemini Code Assist, Google’s AI-codeassistent, heeft nu een zeer royale gratis laag. Hij komt in de vorm van extensies voor Visual Studio Code en JetBrains.
In deze tutorial leren we hoe je hem instelt in Visual Studio Code en hoe je hem gebruikt aan de hand van enkele praktische voorbeelden.
Wat zijn AI-codeassistenten?
AI-codeassistenten gebruiken AI om ontwikkelaars efficiënter te laten coderen door codevoorstellen te doen, repetitieve taken te automatiseren en realtime correcties te geven in omgevingen zoals Visual Studio Code. Zo besteden ontwikkelaars minder tijd aan routine en meer aan complex en creatief werk.
Hoewel chatbots kunnen helpen bij codetaken, zijn ze onhandig in het gebruik omdat je steeds moet wisselen tussen de IDE en het AI-platform, met veel kopiëren en plakken van code.
AI-codeassistenten integreren rechtstreeks in de codeomgeving. Daardoor kennen ze onze context en hoeven we niet expliciet codefragmenten aan te leveren wanneer we vragen stellen. Ook kunnen ze de code direct aanpassen, wat het doorvoeren van wijzigingen een stuk sneller maakt.
Hoe installeer je Gemini Code Assist?
In deze tutorial gebruiken we Gemini Code Assist samen met Visual Studio Code. Gemini Code Assist is een Visual Studio-extensie, dus we installeren hem zoals elke andere extensie:
- Klik op het tabblad Extensies in het linkerpaneel.
- Typ "gemini code assist" in het zoekvak.
- Klik op de knop "Install".

Na installatie verschijnt het tabblad Gemini in het linkerpaneel. Klik op dat tabblad met het Gemini-logo en log in met je Google-account om de codeassistent te gebruiken.

Gemini Code Assist testen
Om Gemini Code Assist te testen, besloot ik een recente dataset met Spotify-nummers te analyseren met Python. De dataset die ik gebruikte komt van Kaggle en is hier beschikbaar.
Maak om te beginnen een map en pak het bestand songs.csv daarin uit. Open de map vervolgens in Visual Studio Code. Het plan is om zonder code te starten en Gemini Code Assist alles voor ons te laten schrijven.
Aan de slag
De eerste prompt die ik stuurde, vroeg om een Python-functie die de data in een pandas-DataFrame laadt.

Meestal werkt de codeassistent door bestaande code te wijzigen en ons een diff met de nieuwe wijzigingen te tonen. Omdat er nu nog geen code is, kunnen we vragen om een nieuw bestand te maken met de voorgestelde code door op de laatste knop rechtsboven in het codeblok in het chatvenster te klikken.

Hernoem het bestand daarna naar songs.py.
De code uitvoeren
We kunnen de code uitvoeren via de geïntegreerde terminal in Visual Studio Code met het commando:
python songs.py
In dit geval krijgen we een foutmelding:
ModuleNotFoundError: No module named 'pandas'
Dit komt doordat het script songs.py pandas probeert te gebruiken, maar dat is niet geïnstalleerd. Dit is een perfecte gelegenheid om te controleren of Gemini Code Assist zich bewust is van de terminal in Visual Studio Code of niet.
Ik vroeg om in de terminal uit te leggen hoe je de fout oplost. Helaas gaf het een algemeen antwoord, wat liet zien dat het geen toegang had tot de terminaluitvoer. Het alternatief is om de fouttekst te kopiëren en plakken in de AI-chat, wat wat omslachtiger is. Maar inderdaad, zo kregen we het juiste antwoord: we moeten het commando pip install pandas in de terminal uitvoeren.
Dit is een jammerlijke beperking, want als software engineer is vragen stellen over een fout die ik in de terminal zie een van de meest voorkomende gevallen waarin ik AI gebruik.
Na het installeren van pandas kunnen we de code succesvol uitvoeren.

Algemene vragen stellen
Gemini Code Assist is niet beperkt tot codeervragen. We kunnen ook algemene of data-gerelateerde vragen stellen. Laten we proberen een idee te krijgen van de data in het bestand songs.csv door te vragen alle kolommen op te sommen:

In het antwoord maakte het een functie die de kolommen opsomt, maar het liet ook direct een lijst in het antwoord zien:

Vaak leek Gemini Code Assist moeite te hebben om te onderscheiden wanneer ik een algemene vraag stelde die alleen een tekstueel antwoord vereiste en wanneer ik wilde dat het code schreef. Dat is een klein probleem, want we kunnen het codegedeelte negeren, maar het maakt de chat wel wat rommelig.
Om nieuwe functionaliteit vragen
Uit het vorige antwoord zien we dat er een kolom track_popularity is. Laten we Gemini Code Assist vragen om een nieuwe functie te implementeren die het populairste nummer ophaalt.

Wanneer Gemini Code Assist code in het antwoord schrijft, wordt de functie niet automatisch in onze code geïntegreerd. Klik daarvoor op de dubbele pijlknop "Diff with Open File". Zorg dat, voordat je klikt, het bestand waarop de wijzigingen van toepassing zijn, het momenteel geopende bestand in de editor is; anders worden de wijzigingen in het verkeerde bestand samengevoegd.

Na het drukken op de knop krijgen we een diff te zien. Links staat de huidige staat van de code en rechts de nieuwe staat. Rood gemarkeerde regels zijn regels die worden verwijderd of gewijzigd, terwijl geel gemarkeerde regels toevoegingen of wijzigingen zijn.

We kunnen naar de scrollbar rechts kijken om deze wijzigingen te lokaliseren. Vaak zijn er op meerdere plekken in het bestand aanpassingen nodig, en het is belangrijk om die allemaal te bekijken voordat je de wijzigingen accepteert.

Door over een wijziging te hoveren, zien we een pijl in het midden:
![]()
Ik vind het pictogram niet erg intuïtief, maar als je op deze pijl klikt, geef je aan dat je die specifieke wijziging niet wilt meenemen. Nadat je hebt besloten wat je wilt, kun je de nieuwe code overnemen door bovenaan op de knop "Accept" te klikken.

Autocompletion
Tot nu toe hebben we met Gemini Code Assist gecommuniceerd via de AI-chat. Dat is al een veel betere workflow dan code heen en weer kopiëren tussen een AI-platform en de code-editor, omdat alles in hetzelfde venster zit en we de diff zien, wat het gemakkelijk maakt om nieuwe wijzigingen te herkennen. Maar Code Assist kan meer.
Terwijl we code schrijven, analyseert de assistent wat we typen en doet hij codevoorstellen die je met een druk op de knop kunt overnemen.
De kolom track_popularity in de dataset bevat de populariteit van een track. Laten we een functie schrijven die de populariteit van nummers van een opgegeven artiest laat zien, gesorteerd op releasedatum. We kunnen sorteren op track_album_release_date.
Terwijl we de functie schrijven, zal Gemini Code Assist autocompletion voorstellen. Wanneer we de functienaam beginnen te typen, raadt Gemini Code Assist op basis van de naam wat we willen:

Om een suggestie over te nemen, druk je simpelweg op de Tab-toets. Vervolgens willen we een kopie van de DataFrame maken met alleen de nummers van de opgegeven artiest:

Soms is de codesuggestie niet wat we willen. In dat geval moeten we nog steeds handmatig schrijven wat we willen of, als het er dicht bij zit, het accepteren en daarna bewerken. In dit voorbeeld is de volgende stap om track_album_release_date om te zetten naar een datumformaat. Om de een of andere reden wil Gemini Code Assist echter alleen het releasejaar ophalen, dus ik heb die regel handmatig geschreven.

Vervolgens wil ik de nummers op datum sorteren:

Tot slot retourneer ik de populariteitsscores:

Specifieke code targeten
We kunnen specifieke code targeten door die eerst in de editor te selecteren. Wanneer code is geselecteerd, verschijnen er een paar automatische prompts, zoals "Explain this" of "Generate unit tests".

Een codefragment kunnen selecteren en vragen wat het doet of hoe het werkt, is erg handig wanneer je in een nieuwe codebase duikt. Ik merkte dat dit vaak de lastigste stap is bij het werken aan een nieuw product met een bestaande codebase.
We kunnen ook vragen de code te wijzigen met een aangepaste prompt. Zo kunnen we vragen om de functie analyze_artist_popularity_over_time() die we net hebben gemaakt te verbeteren:

In dit geval verbeterde het de functie door controles toe te voegen om fouten te voorkomen.
Beperkingen van het gratis abonnement
Het gratis abonnement van Gemini Code Assist voor individuen kent enkele beperkingen in vergelijking met de Standard- en Enterprise-abonnementen:
- Beperkte aanpassing en integratie: met het gratis abonnement kun je je privébroncode-repositories niet koppelen voor gepersonaliseerde codevoorstellen; dat kan wel in het Enterprise-abonnement.
- Toegang tot functies: bepaalde geavanceerde functies in Gemini voor Firebase en Apigee, evenals geavanceerde AI-gestuurde automatisering in Application Integration, zijn alleen beschikbaar in de Standard- en Enterprise-abonnementen.
- Beveiliging en compliance: het gratis abonnement mist beveiligingsfuncties en beheertools op ondernemingsniveau, evenals vrijwaring van intellectueel eigendom; die zijn wel inbegrepen in de Standard- en Enterprise-aanbiedingen.
- Operationele limieten: het gratis abonnement biedt een daglimiet van 6.000 codegerelateerde verzoeken en 240 chatverzoeken, wat voor individueel gebruik voldoende kan zijn, maar beperkend voor grotere teamprojecten.
- Enterprise-functies en support: enterprisecontextfuncties voor API-creatie en geavanceerde appkwaliteitsanalyse zijn niet beschikbaar in het gratis abonnement.
Voor meer details, bekijk de website van Gemini Code Assist.
Mijn indrukken van Gemini Code Assist
Ik vind dat Gemini Code Assist over het algemeen prima werkt. In mijn ervaring presteerde het vergelijkbaar met de belangrijkste concurrenten, Cursor en Copilot. Het is erg indrukwekkend voor een gratis tool. De gratis laag ondersteunt tot 6.000 codegerelateerde verzoeken en 240 chatverzoeken per dag. Dat zou voor de meeste programmeurs ruim voldoende moeten zijn.
Een andere interessante functie die we hier niet bespraken, is de GitHub-integratie. Gemini Code Assist voor GitHub helpt door pull requests te reviewen om bugs en stijlafwijkingen te vinden en automatisch codewijzigingen en fixes voor te stellen. Zo kunnen ontwikkelaars zich meer richten op het schrijven van code. Als er hulp nodig is, kunnen gebruikers Gemini vragen door een comment te plaatsen in hun pull request.
Een probleem dat ik tegenkwam, is dat het soms moeite lijkt te hebben met eerdere verzoeken. Ik vroeg vaak om bepaalde wijzigingen en besloot daarna een andere richting in te slaan. In latere iteraties wilde het die wijzigingen toch blijven integreren. Een voorbeeld was de functie die we schreven om de populariteit van een track in de tijd te tonen. In eerste instantie wilde ik met deze data een plot maken en bedacht ik me later. Toch bleef de code om die data te plotten worden toegevoegd aan toekomstige, niet-gerelateerde verzoeken, wat wat irritant was.
Gevaren van codeassistenten
Onlangs zag ik meer programmeurs zorgen uiten, zoals in deze Reddit-thread, over hoe het gebruik van codeassistenten zoals Cursor of Copilot er langzaam voor zorgt dat ze vergeten hoe ze zelf moeten coderen.
Deze tools bieden onmiskenbaar enorme productiviteitswinst en ze niet gebruiken zet ons op achterstand ten opzichte van onze peers. Maar ik denk dat alles in het leven balans vereist, en bij AI-codetools is het makkelijk in de val te trappen om blind de gegenereerde code te accepteren. Neem op z’n minst de tijd om te lezen en te begrijpen wat er wordt gegenereerd.
Code completion lijkt ook een beter middenweg, omdat je in elk geval zelf iets moet beginnen te schrijven om je spiergeheugen te behouden en te voorkomen dat programmeurs te afhankelijk worden van AI-tools. Code completion levert bovendien vaak kleinere stukjes code, wat makkelijker te verwerken is.
Conclusie
AI-tools blijven zich ontwikkelen, met dalende kosten en toenemende toegankelijkheid. Gemini Code Assist illustreert deze trend door een robuuste AI-codeassistent gratis aan te bieden.
Dit initiatief van Google verlaagt de drempel voor ontwikkelaars, waardoor vrijwel iedereen krachtige AI-assistentie kan gebruiken bij zijn codetaken. Het is bijzonder prijzenswaardig dat Gemini Code Assist functies biedt die gelijkwaardig zijn aan, of zelfs concurreren met, betaalde diensten zoals Cursor en Copilot. Met tot 6.000 codegerelateerde verzoeken en 240 chatverzoeken per dag biedt het meer dan genoeg ondersteuning voor individuele ontwikkelaars of kleine projecten.

