Skip to content
Rutger Hemrika
Menu
← Blog

Beslisrecords · 1/10

Bedrijfsregels worden buiten het model afgedwongen

Rutger Hemrika5 min leestijd

Beslisrecords, een van tien. Een architectuurbeslissing per stuk, uit een beheerst AI-agentplatform dat ik als prototype ontwierp en bouwde voor de Nederlandse lokale overheid.

De situatie

Een gemeente draait op regels. Wie in aanmerking komt voor een parkeervergunning, welke documenten een uitkeringsaanvraag nodig heeft, hoe lang een klacht mag blijven liggen voordat iemand moet reageren. Die regels staan op papier, ze veranderen volgens een vaste cyclus, en als ze verkeerd worden toegepast kan een inwoner in bezwaar gaan en kan een rechter de redenering bekijken.

De eerste reflex bij een taalmodel is om de regels in de prompt te zetten. In een demo werkt dat. Je schrijft “verleen de vergunning alleen als de aanvrager in zone B woont” en het model doet dat meestal. Meestal is het probleem. Een prompt is een suggestie aan een probabilistisch systeem, en het platform dat ik bouwde moest aan een auditor precies kunnen zeggen welke versie van welke regel op welke zaak was toegepast, en waarom.

Daarnaast speelde een tweede kwestie. Het platform moest zich ook verdedigen tegen prompt injection, en ik had genoeg gepubliceerd red-team-onderzoek gelezen om te weten dat injectiedetectie onvolledig is. Elke detector die ik voor het model kon zetten zou sommige aanvallen vangen en andere missen. Als het model ook het ding was dat de regels afdwong, was een gemiste injectie een gemiste regel.

De beslissing

modelprompt: legt de regel uitstuurt gedrag, dwingt niets afvoorstelbeleidsdienst, buiten het modelgeversioneerde, testbare regelsgeen beleid geladen: fail closed
De prompt mag een regel uitleggen. Een beleidsdienst buiten het model dwingt hem af, en faalt gesloten als er geen beleid geladen is.

Bedrijfsregels zijn uitvoerbare, geversioneerde, testbare artefacten, en ze worden afgedwongen door een beleidsdienst die buiten het model staat.

Concreet: een regel is een bestand in een repository, met een versie, een testsuite en een reviewgeschiedenis. De beleidsdienst laadt een specifieke bundel van die regels en evalueert ze tegen getypeerde invoer. Het model evalueert de regel nooit. Wanneer een agent-run op een punt komt waar een regel van toepassing is, roept de harness de beleidsdienst aan met de feiten van de zaak, krijgt een beslissing terug, en die beslissing is wat er gebeurt.

Het model mag een uitleg van de regel krijgen. Het is vaak nuttig dat het model weet dat een vergunning een bewijs van inschrijving vereist, zodat het de inwoner om het juiste document kan vragen. Maar het model dat de uitleg krijgt en het model dat de regel afdwingt zijn twee verschillende dingen. Het model mag behulpzaam zijn over de regel. Het mag niet beslissen of aan de regel is voldaan.

Dit sluit aan bij hoe ik met injection omga. Detectie draait, en de uitkomst gaat als signaal het record in en de beleidsinvoer in. Maar detectie informeert en beleid beslist. Een detector die zegt “dit ziet er goed uit” verleent nooit iets, en een detector die zegt “dit ziet er verdacht uit” is een feit extra dat het beleid kan meewegen, geen oordeel op zichzelf.

Wat ik afwees, en waarom

Afdwingen via de prompt. Het argument ervoor is snelheid: je past een regel in minuten aan door tekst te bewerken. Het argument ertegen is dat het helemaal geen afdwinging is. Prompts configureren gedrag. Ze vormen wat het model waarschijnlijk doet. Ze beperken niet wat het kan doen, en ze laten geen toetsbaar spoor van de beslissing achter buiten het verhaal dat het model er zelf over vertelt. Voor een systeem dat een bezwaarprocedure moet overleven is “het model zei dat het gecontroleerd had” geen bewijs dat het gecontroleerd heeft.

Ik heb ook naar een hybride gekeken waarbij het model afdwingt en een tweede model controleert. Dat verdubbelt de kosten en houdt het fundamentele probleem in stand: twee probabilistische componenten die het eens zijn, is nog steeds geen deterministische beslissing met een versienummer erop.

Een prompt vragen een regel af te dwingen is de verdachte vragen ook rechter te zijn, omdat hij de wet heeft gelezen en oprecht lijkt.

Wat het kost

Een aparte beleidsdienst. Dat is een echte component met een eigen deployment, eigen beschikbaarheidszorgen en een eigen testsuite, en in het prototype is het na identiteit het meest dragende stuk infrastructuur.

Hij is fail-closed. Als de beleidsdienst geen bundel geladen heeft, of de bundel niet kan laden, weigert de engine elke beslissing in plaats van standaard toe te staan. In de praktijk betekende dat dat een verkeerd geconfigureerde omgeving al het agentwerk stillegde tot iemand het had gerepareerd. Dat is het bedoelde gedrag en het is nog steeds vervelend om twee uur ’s middags.

En er is een vertaalkost. Iemand moet een alinea gemeentelijke regelgeving omzetten in een testbare regel, en die persoon moet zowel het recht als het format beheersen. Die vaardigheid is schaarser dan elk van de twee afzonderlijk.

Wat het niet doet

Het maakt de redenering van het model niet correct. Het model kan een inwoner nog steeds verkeerd begrijpen, de verkeerde feiten kiezen of om het verkeerde document vragen. De beleidsdienst vangt een verkeerde beslissing; hij vangt geen verkeerd gesprek.

Het dekt geen regels die nog niemand heeft opgeschreven. Als een gemeente een regel uit gewoonte toepast en nooit vastlegt, weet de beleidsdienst niet dat die bestaat. Het prototype maakt de geschreven regels afdwingbaar. Het ontdekt geen ongeschreven regels.

En de verificatie-instrumenten eromheen, de golden tests van de regelbundels tegen bekende zaken, waren in het ontwerp voorgesteld en slechts gedeeltelijk gebouwd. Ik zou niet beweren dat ze bewezen zijn.

Als je een ding meeneemt

Open een van je agentprompts en zoek een zin die begint met “altijd” of “nooit”. Vraag je af of iets anders dan de medewerking van het model die zin waar maakt. Als het antwoord niets is, dan is die regel een voorkeur, geen control, en moet je vandaag beslissen of hij er een moet worden.

De prompt vragen de regel af te dwingen is de Monty Python argument sketch: je betaalt voor een argument en krijgt tegenspraak, met grote stelligheid geleverd.

Verwijzingen

De knipogen en citaten in dit stuk, met hun herkomst:

  • An old legal maxim, nemo iudex in causa sua: no one may be judge in their own cause.
  • Monty Python’s Flying Circus (BBC, 1972), the Argument Clinic: “No it isn’t.”

Rutger Hemrika

AI-strategie en -governance voor sectorsoftware. Schrijft vanuit bouwen, niet vanuit slides; elke claim draagt een bewijsniveau.

Volledige ervaring · Over mij

De case achter deze reeksEen governed AI-agentplatform voor Nederlandse gemeentenVan de grond af ontworpen en gebouwd op de premisse dat agents alleen bestuurbaar zijn als elke grensoverschrijding wordt bestuurd.