Een lokale LLM koppelen aan VS Code: De complete gids voor ontwikkelaars

Kunstmatige intelligentie heeft de manier waarop we software ontwikkelen permanent veranderd. Tools zoals GitHub Copilot en ChatGPT zijn voor veel programmeurs onmisbaar geworden. Maar wat als je werkt met bedrijfskritische code, strikte NDA's (geheimhoudingsverklaringen) hebt getekend, of simpelweg weigert om maandelijkse abonnementskosten te betalen voor een cloudgebaseerde AI? De oplossing is inmiddels binnen handbereik: je kunt een Large Language Model (LLM) lokaal op je eigen machine draaien en deze direct integreren in Visual Studio Code (VS Code).

In deze uitgebreide gids bespreken we precies hoe je een lokale LLM koppelt aan VS Code. We behandelen de benodigde software, de configuratie van een OpenAI-compatibele server, de beste extensies en we duiken diep in de hardwarevereisten, specifiek voor ontwikkelaars die op een Mac met Apple Silicon werken.

Waarom een lokale LLM gebruiken als codeassistent?

Voordat we in de technische configuratie duiken, is het belangrijk om de voor- en nadelen af te wegen van een lokale setup versus een cloud-oplossing.

Er zijn echter ook concessies. Lokale modellen zijn, afhankelijk van je hardware, vaak trager bij het genereren van output dan enterprise cloud-servers. Daarnaast vereisen ze aanzienlijke rekenkracht (GPU of krachtige CPU met voldoende geheugen) en mis je soms de gigantische contextvensters die modellen zoals Claude 3.5 Sonnet of GPT-4o bieden.

De fundering: Een lokale OpenAI-compatibele endpoint instellen

Om VS Code te laten communiceren met een lokaal model, heb je een 'brug' nodig. De meeste AI-extensies voor VS Code zijn oorspronkelijk gebouwd om te praten met de API van OpenAI (via HTTP POST-verzoeken naar /v1/chat/completions). Gelukkig hebben de ontwikkelaars van lokale AI-tools dit onderkend.

Om een lokaal model te draaien dat deze taal spreekt, gebruik je doorgaans een tool zoals Ollama of LM Studio. Deze tools laden het model in het werkgeheugen en starten op de achtergrond een lokale webserver die exact hetzelfde API-formaat hanteert als OpenAI, maar dan op localhost.

Ollama gebruiken

Ollama is momenteel de industriestandaard voor ontwikkelaars. Het is een lichtgewicht command-line interface waarmee je modellen met één commando kunt downloaden en draaien. Lees hier onze specifieke gids over Ollama installeren op macOS.

Zodra Ollama is geïnstalleerd, start je de server (en het model) via je terminal:

ollama run deepseek-coder-v2:lite

Wanneer dit commando draait, luistert Ollama standaard op poort 11434. Jouw "OpenAI" API endpoint is nu beschikbaar op: http://localhost:11434/v1.

Welke VS Code extensies ondersteunen lokale modellen?

Niet elke AI-extensie biedt de mogelijkheid om het eindpunt aan te passen. Hier zijn de drie beste opties voor lokale integratie anno nu:

  1. Continue.dev (Sterk aanbevolen): Dit is momenteel de meest krachtige, open-source AI-assistent voor VS Code. Continue onderscheidt zich door een prachtige interface, uitstekende ondersteuning voor lokale context (RAG) en de mogelijkheid om zowel lokale als cloud-modellen door elkaar te gebruiken.
  2. CodeGPT: Een zeer populaire extensie die initieel gebouwd was voor OpenAI, maar inmiddels uitgebreide ondersteuning biedt voor lokale providers zoals Ollama en LM Studio via het instellingenmenu.
  3. Twinny: Een opkomende extensie die zich specifiek richt op het lokaal draaien van AI-assistenten zonder bloatware. Ideaal voor oudere of minder krachtige systemen.

Stapsgewijze configuratie van de 'Continue' extensie

Voor deze gids richten we ons op Continue.dev, omdat deze extensie veruit de beste ondersteuning biedt voor code-autocomplete én een chat-interface, vergelijkbaar met GitHub Copilot.

Stap 1: Installatie

Open VS Code, ga naar de Extensions marktplaats (Ctrl+Shift+X of Cmd+Shift+X), zoek naar Continue en klik op installeren. Na installatie verschijnt het Continue-logo in je linkerzijbalk.

Stap 2: De config.json aanpassen

Continue werkt met een centraal configuratiebestand. Klik op het tandwiel-icoontje in de Continue zijbalk om config.json te openen. Om je lokaal draaiende Ollama-model toe te voegen, zoek je de models array op en voeg je de volgende configuratie toe:

{
  "models": [
    {
      "title": "Lokale DeepSeek Coder",
      "provider": "ollama",
      "model": "deepseek-coder-v2:lite",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Starcoder 2 3B",
    "provider": "ollama",
    "model": "starcoder2:3b",
    "apiBase": "http://localhost:11434"
  }
}

Merk op dat we in dit voorbeeld twee modellen configureren: een capabel model (zoals DeepSeek of Llama 3) voor de chat-interface, en een extreem klein, snel model (zoals Starcoder2 3B of Qwen2.5-Coder 1.5B) specifiek voor tabAutocompleteModel. Autocomplete moet namelijk binnen milliseconden reageren, terwijl je op een chat-antwoord best een paar seconden kunt wachten.

Modellen en hardware: Wat werkt goed op een Mac met Apple Silicon?

Als je een Mac hebt met een M-serie chip (M1, M2, M3 of M4), ben je in het bezit van waarschijnlijk de beste consumentenhardware voor lokale AI. Dit komt door de 'Unified Memory Architecture' (UMA). In tegenstelling tot traditionele pc's waar de processor (CPU) en de videokaart (GPU) hun eigen gescheiden geheugen hebben, deelt een Apple Silicon chip één grote poel geheugen.

Dit betekent dat een MacBook Pro met 64GB werkgeheugen effectief fungeert als een videokaart met (bijna) 64GB VRAM. Dit laat je toe om modellen te draaien waar je op een Windows-pc een grafische kaart van duizenden euro's voor nodig zou hebben. Maar welk model past bij jouw hardware? Lees ook ons algemene artikel over het kiezen van een lokaal model.

Contextvensters en projectbestanden (RAG in VS Code)

Een van de grootste uitdagingen bij lokale AI is het contextvenster. Een model moet je bestaande codebase begrijpen om nuttige toevoegingen te doen. Cloud-modellen hebben tegenwoordig contextvensters van 200.000 tokens, waarmee je een hele repository in één keer kunt meesturen. Lokaal ben je, door hardwarebeperkingen, vaak gelimiteerd tot 8.000 of hooguit 32.000 tokens.

Je kunt dus niet zomaar je hele projectfolder naar je lokale model sturen. Dit wordt opgelost door RAG (Retrieval-Augmented Generation) lokaal toe te passen. Voor meer theorie hierover kun je kijken naar RAG voor beginners op ons leerplatform.

De Continue extensie lost dit briljant op met @-mentions en lokale indexering. Je kunt specifieke bestanden, mappen of zelfs hele documentatiesets in de chat betrekken:

Dit zorgt ervoor dat je efficiënt met je tokens omgaat, waardoor het lokale model niet overbelast raakt (of "Out of Memory" crasht) en de responstijden acceptabel blijven.

Veelvoorkomende valkuilen en oplossingen

Tijdens het opzetten van deze configuratie lopen veel ontwikkelaars tegen dezelfde obstakels aan. Hier is een snelle probleemoplosser:

1. "Connection Refused" foutmeldingen

Als VS Code aangeeft dat het geen verbinding kan maken met de API, controleer dan eerst of je lokale AI-server wel draait (bijv. staat de LM Studio server aan, of draait ollama serve in de achtergrond?). Controleer daarna de apiBase in je config.json. Soms werkt http://127.0.0.1:11434 beter dan http://localhost:11434 afhankelijk van je netwerkinstellingen en DNS resolutie.

2. Extreem trage responstijden of haperende tekst

Dit is vrijwel altijd een hardware-knelpunt. Als het model niet in zijn geheel in het videogeheugen (VRAM) of Unified Memory past, gaat je systeem "swappen" (virtueel geheugen op je SSD gebruiken). Dit vertraagt de inferentiesnelheid van bijvoorbeeld 30 tokens per seconde naar minder dan 1 token per seconde. De oplossing: kies een kleiner model of gebruik een sterkere kwantisatie (bijv. een 4-bit model in plaats van een 8-bit model).

3. Het model hallucineert API's of functies

Als je vraagt om een specifiek script en de AI verzint bibliotheken die niet bestaan, kan dit liggen aan een te hoge Temperature instelling, of domweg het gebruik van een verkeerd modeltype. Zorg ervoor dat je zogenaamde "coder" of "instruct" modellen gebruikt (zoals DeepSeek-Coder of Qwen-Coder). Algemene chat-modellen (zoals een basis Llama model) zijn soms te creatief. Pas in de instellingen van je VS Code extensie de temperature aan naar 0.1 of 0.2 voor meer deterministische en voorspelbare code.

Pro Tip: Onderschat het belang van de systeemprompt niet. Bij extensies zoals Continue kun je de standaard systeemprompt aanpassen. Voeg regels toe zoals: "Je bent een expert ontwikkelaar. Schrijf uitsluitend werkende code. Geef geen uitgebreide uitleg tenzij daarom wordt gevraagd. Formatteer de code correct." Dit bespaart lokaal enorm veel tokens die anders aan nutteloze introducties of disclaimers besteed zouden worden.

Met de juiste hardware, een tool als Ollama, een krachtige extensie zoals Continue en een goed gekozen model, heb je een indrukwekkende AI-assistent direct in VS Code. Eentje die jouw code begrijpt, maar je bedrijfsgeheimen binnen de muren van je eigen studeerkamer houdt.