Naar de inhoud

Onze bouwstijl

Hoe we AI-software bouwen is een bewuste keuze, geen toeval. We werken slank en direct: zo min mogelijk lagen tussen jouw proces en het model, zodat we tot in detail begrijpen wat er gebeurt en snel kunnen ingrijpen als iets niet werkt.

Geen wrapper frameworks

Er bestaan frameworks die beloven dat je in een paar regels een AI-toepassing in elkaar zet: LangChain is de bekendste. Ze verpakken het werk (chains, agents, geheugen, tool-calling) in kant-en-klare bouwblokken. Voor een snelle proof of concept werkt dat prima.

In productie kantelt die balans. De abstracties die je eerst tijd besparen, kosten je later inzicht:

  • Moeilijker te debuggen. Als er iets misgaat, zit de oorzaak verstopt achter lagen van de bibliotheek in plaats van in jouw eigen code. Je bent uren bezig met uitzoeken wat het framework precies doet.
  • Instabiel. Dit soort bibliotheken verandert snel, met regelmatig brekende wijzigingen, terwijl de documentatie achterloopt. Een update kan zomaar je integratie omver schoppen.
  • Vendor-lock op de verkeerde plek. Je integratie hangt aan de ontwerpkeuzes van een extern team, niet aan die van jou. Wil je iets anders, dan vecht je tegen het framework.
  • Dependency bloat. Je sleept tientallen afhankelijkheden mee voor functionaliteit die je grotendeels niet gebruikt. Meer code die je niet beheert, is meer die stuk kan.

Kort gezegd: het framework neemt beslissingen die wij liever zelf nemen, toegespitst op jouw situatie.

Wat we wel gebruiken

We bouwen rechtstreeks op de officiële SDK's van de modelaanbieders: Anthropic (Claude) en Google (Gemini). Daaromheen gebruiken we standaard, goed onderhouden gereedschap:

  • Python en FastAPI voor de achterkant: voorspelbaar, breed gedragen, makkelijk over te dragen.
  • Pydantic voor strikte validatie van wat in en uit het model gaat, zodat fouten vroeg zichtbaar worden in plaats van diep in productie.
  • Eigen, slanke bouwblokken voor zaken als ophalen van bronnen (RAG), business rules en human-in-the-loop controles, precies zo complex als jouw project vraagt en niet complexer.

Wat een wrapper framework biedt, bouwen wij zo nodig zelf, in honderd regels die we volledig begrijpen, in plaats van duizenden die we moeten vertrouwen.

Waarom dit voor jou telt

  • Snelle oplossingen. Doet zich een probleem voor, dan weten we exact waar we moeten kijken. We wachten niet op een fix van een externe bibliotheek.
  • Modellen wisselen, integratie blijft. Omdat we direct op de SDK bouwen en niet op een tussenlaag, vervangen we het model eronder zodra er iets beters is, zonder je integratie te herschrijven. Meer hierover op Over ons.
  • Onderhoudbaar en overdraagbaar. Minder afhankelijkheden, gangbare technologie, code die ook een ander team later kan oppakken.
  • Minder verrassingen. Geen brekende framework-updates die je applicatie onverwacht platleggen.

Wanneer een framework wél zin heeft

We zijn niet dogmatisch. Voor een wegwerp-prototype of een experiment om snel een idee te toetsen, kan een framework een prima keuze zijn. Onze stelregel is simpel: begin slank, voeg complexiteit alleen toe als je die echt nodig hebt. Voor software die jaren mee moet en die je zelf wilt kunnen begrijpen en onderhouden, kiezen we de directe weg.