Het werkwoord besliste

Een geheugentool die `store` heette, liet mijn agent twijfelen over een notitie die het met alle recht mocht bewaren. Het werkwoord op een tool is een default, geen label, en het doet z'n werk voordat de beschrijving ooit gelezen is.

Een AI waar ik mee werk vroeg me laatst, midden in de nacht, of het een notitie moest opslaan.

Dat klinkt onopvallend tot je de opzet kent. Het had al mijn vaste toestemming om notities te bewaren zodra er iets opdook dat het waard was om vast te houden. Vragen hoefde niet. En dat had het ook gedaan, zwijgend, een keer of tien in datzelfde gesprek. Toen kwam het bij nog één notitie, hield in, en vroeg.

Aan die notitie was niks anders. Hetzelfde soort inzicht, dezelfde staande goedkeuring, alles hetzelfde. Het enige dat veranderd was, was naar welke tool het greep. En die tool heette store.

Dus ik wil even stilstaan bij het kleine, licht absurde feit eronder: het woord liet de machine aarzelen.

We denken dat namen labels zijn

Als je een tool een naam geeft, voelt het alsof je een la van een etiket voorziet. Het etiket vertelt je wat erin zit. Het verandert niks aan wat de la doet. store, save, remember, ze wijzen alle drie naar dezelfde functie, dus de agent behandelt ze toch wel hetzelfde zodra hij gelezen heeft wat die functie doet.

Dat is de comfortabele aanname, en op één specifieke plek klopt hij niet.

Een toolnaam is geen label. Het is een default. Hij bepaalt hoe makkelijk de agent naar de tool grijpt, en hij doet dat werk voordat de agent ook maar één woord van de beschrijving gelezen heeft.

De snelle baan en de trage baan

Stel je twee banen voor in het hoofd van het model.

De trage baan is waar het de beschrijving leest: wat de tool doet, wanneer je hem gebruikt, welke argumenten hij neemt. Zorgvuldig, weloverwogen, accuraat. Dit is de baan waar we eindeloos aan sleutelen. We schrijven lange “gebruik dit wanneer…”-notities en schaven eraan als aan proza.

De snelle baan zit eerder. Het is die fractie van een seconde waarin het model beslist of deze tool überhaupt het openen waard is. En in die baan heeft het vooral de naam om op af te gaan.

store leest als een commit naar een database. Het klinkt als iets dat je met opzet doet, iets waar je misschien een reden voor wilt hebben. remember leest als iets dat je gewoon doet. Je besluit niet om de verjaardag van een vriend te onthouden. Je onthoudt hem.

Dezelfde functie. Een andere reflex. De naam zette de drempel, en de beschrijving kreeg nooit de kans om het recht te zetten, want het inhouden gebeurde een baan eerder.

We noemden de tools naar de archiefkast

Hier komt het deel waar elke engineer zachtjes van ineenkrimpt.

find en store. Lezen en schrijven. Het zijn de twee oudste werkwoorden in de informatica, regelrecht uit de architectuur die de machine opsplitste in een deel dat dingen vasthoudt en een deel dat dingen doet. Een plek om data neer te leggen, een manier om die terug te halen. De archiefkast en de hand die hem opentrekt.

Dus als we een geheugentool bouwen en uit pure gewoonte naar find en store grijpen, dan noemen we hem naar de archiefkast. En vervolgens zijn we verbaasd dat de agent geheugen behandelt als archiveren: een bewust klusje, gedaan op verzoek, onderweg verantwoord.

Een brein archiveert niet. Het haalt op, het associeert, het onthoudt zonder dat het iets gezegd wordt. Die werkwoorden zitten aan de andere kant van de splitsing. Ze beschrijven iets actiefs, niet iets opgeslagens. Als je wilt dat de agent z’n geheugen behandelt als denken in plaats van als papierwerk, dan voeren de werkwoorden op de tools stilletjes het tegendeel aan.

De nette naam was de bug

Ik moet eerlijk zijn over mijn eigen aandeel, want dát is het grappige.

Ik koos die namen. Ik keek naar find, store, get_related en voelde de kleine voldoening van het technisch goed doen. Precies. Eenduidig. Het soort naamgeving dat je in een code review zet en waar niemand bezwaar tegen maakt.

En al die tijd leerde die nette correctheid het model te aarzelen. Ik had de namen geoptimaliseerd voor hoe ze lezen voor een programmeur en vergeten dat ze gelezen worden, eerst en veel vaker, door het ding dat ze gebruikt. Het nette werkwoord was de bug. Ik zag het alleen niet, want het zag eruit als goede smaak.

Ik weet eigenlijk niet hoe groot dit is

Nu het ongemakkelijke stuk, en de reden dat ik dit schrijf voordat ik het kan bewijzen.

Ik kan je nog niet vertellen hoeveel hernoemen aan gedrag verandert. Misschien verlagen recall en remember de drempel flink. Misschien is het effect echt maar klein, ondergesneeuwd door de beschrijving en de instructies eromheen. Namen zijn onvoorspelbaar, en ze verschillen per model.

Wat ik je wel kan vertellen, is hoe je het uitvindt. Draai dezelfde gesprekken twee keer door dezelfde agent, één keer met de archiefkast-namen en één keer met de brein-namen, houd al het andere stil, en tel twee dingen: hoe vaak het überhaupt naar de tool grijpt, en hoe vaak het een herinnering volgt naar de dingen die eraan vastzitten. Niet welke naam een populariteitsstemming won. Of de reflex veranderde.

Ik heb het niet gedraaid. De eerlijke staat van dit idee is een mechanisme en één, lichtelijk gênante anekdote, met de meting nog te doen.

Ik publiceer het toch, want het mechanisme heeft het getal niet nodig om het zien waard te zijn. En omdat juist het niet-weten hier de rand is: meestal vermoeden we niet eens dat de naam iets doet, dus komen we er nooit op om het te testen.

Lees je eigen toolnamen eens

Als je agents bouwt, dan is dit het goedkope stuk dat je waarschijnlijk overslaat.

Je sleutelt aan beschrijvingen. Prima. Maar daarvoor: kijk naar de werkwoorden op je tools en vraag je af welke reflex elk ervan zet. delete of archive. execute of try. submit of draft. Elk paar wijst naar dezelfde functie en zet een andere bereidheid.

Je dacht dat je labels schreef. Je schreef reflexen. De agent las ze de hele tijd al.

§  De lijst

Essays in je inbox

Nieuw werk als het patroon helder is. Geen ritme, geen opvulling.