Ergens in de systeemprompt van je telefoonassistent staat waarschijnlijk een zin dat hij zich niet moet laten onderbreken. Hij leest goed. Hij is concreet. Het is precies het soort regel dat iemand schrijft die zorgvuldig werkt. En op de meeste stemmodellen is het helemaal geen regel, want het model wordt niets gevraagd. Een promptregel die niets doet is erger dan een ontbrekende regel: een ontbrekende regel laat een gat achter dat je ziet, een dode regel ziet eruit alsof het geregeld is.
De vraag die alles bepaalt: wie gaat er over de beurt
Voordat je één regel van een assistentprompt schrijft, is er één ding de moeite waard om te weten over het model eronder: als de beller begint te praten terwijl de assistent aan het woord is, wie bepaalt dan wat er gebeurt?
Op de meeste stacks wordt het model niets gevraagd. Er zit spraakdetectie vóór het model die het kanaal van de beller in de gaten houdt. Zodra die besluit dat wat hij hoort spraak is, stopt het platform het uitgaande geluid en krijgt het model het achteraf te horen. Het model ontdekt dat het onderbroken is zoals jij ontdekt dat je verbinding wegviel. Het had geen stem in de zaak, het heeft geen herinnering aan het geluid dat het veroorzaakte, en geen zin in zijn prompt had er iets aan veranderd.
Bij een full-duplexmodel ligt dat anders. Dat model hoort de beller terwijl het zelf praat, in dezelfde stroom waar het in genereert, en het beslist zelf of het stopt. Dat is een echte afweging, en een afweging kun je instrueren.
Instructies werken alleen op beslissingen die het model echt neemt
Aan de andere kant van de keten geldt hetzelfde. Zit er een aparte spraaksynthesestap in, dan wordt de tekst van je taalmodel letterlijk voorgelezen en is spelling dus een geluidsbeslissing. Maakt het model het geluid zelf, dan leest niemand je tekst en heeft een regel over hoe je getallen schrijft niets om op aan te grijpen. Waar die milliseconden heen gaan schreven we eerder op in het latency-budget van een telefoongesprek; dit is dezelfde architectuur, bekeken vanaf de promptkant.
Vier families, drie verschillende sets knoppen
Sorteer de modellen die je krijgt aangeboden op die twee vragen en ze vallen in vier groepen uiteen. Wat er tussen die groepen verandert is niet de toon van de prompt, maar welke instructies überhaupt effect kunnen hebben.
| Familie | Aparte spraakstap | Wie gaat over de beurt | Wat een prompt stuurt |
|---|---|---|---|
| Klassieke pijplijn (herkenning → taalmodel → spraak) | Ja | Het platform, via endpointing en onderbreekdrempels | Woordkeuze, spelling, antwoordlengte, toon via taal |
| Native audio met detectie aan de serverkant (de meeste realtime-modellen) | Nee | Spraakdetectie vóór het model | Persona, regels, toolformulering, tempo in woorden beschreven |
| Full duplex (het model hoort terwijl het praat) | Nee | Het model zelf | Al het bovenstaande, plus onderbreken, meeluistergeluidjes en achtergrondstemmen |
| Gelaagd, met een redeneermodel erachter | Hangt af van de stemlaag | De stemlaag | Twee prompts: een voor de stem, een voor het denkwerk erachter |
Die laatste rij verdient een kanttekening. Een model dat zijn denkwerk uitbesteedt aan een tweede model heeft die splitsing op papier nodig, anders krijg je een assistent die stilvalt terwijl hij wacht of antwoordt voordat hij iets weet. Dat namen we uit elkaar in wat we moesten veranderen voor een full-duplexmodel aan de telefoon, en dezelfde vorm komt terug in hoe tool-calls zich gedragen onder een deadline.
Bij een pijplijn is de spelling het geluid
Het taalmodel van een pijplijn-assistent schrijft tekst die een spraakmodel letterlijk voorleest. Daarmee is de prompt voor een deel een uitspraakdocument, en het is de enige familie waar schrijfregels echt veranderen wat de beller hoort.
Schrijf alles voluit. Geen cijfers in lopende tekst, geen symbolen, geen afkortingen. De cijfers van een telefoonnummer of een referentie één voor één, met komma's ertussen. Waar een getal in jouw taal met een ander woord botst, schrijf je het zo dat het niet verkeerd gelezen kan worden. En wees voorzichtig met omrekenen: een kloktijd die in woorden wordt omgezet is een van de betrouwbaarste manieren om er met volle overtuiging een uur naast te zitten, en een verkeerd tijdstip is erger dan een lelijk tijdstip.
Leestekens zijn een zwakker gereedschap dan ze lijken. Komma's werken. Ze verdubbelen levert niets op. Drie puntjes en punten achter losse cijfers verlengen de pauze wel, maar ze leveren ook hoorbare artefacten op, want een leesteken dat het spraakmodel niet kent is een risico en geen rem. Wil je echte ruimte tussen twee onderwerpen, schrijf dan een korte gewone zin met een punt erin.
Never let yourself be interrupted. If the caller starts
speaking while you are mid-sentence, finish your sentence
first, then listen.Die instructie is goed geschreven en volstrekt inert. Of de assistent wijkt wordt bepaald voordat het taalmodel eraan te pas komt, door een minimale onderbrekingsduur en een set drempels die op echt telefoongeluid is afgesteld. Kapt je pijplijn-assistent bellers af of praat hij juist door ze heen, dan helpt geen enkele herformulering van de prompt; de oplossing zit in hoe de detectie is afgesteld op telefoongeluid.
Wat hier wél werkt is alles wat met woorden te maken heeft: wat de assistent zegt terwijl hij iets opzoekt, hoe hij een beller overdraagt, hoe hij slecht nieuws brengt. Zo'n overdracht is het waard om uit te schrijven in plaats van hem aan het model te laten, om redenen die we uitwerkten in wat er gebeurt als het doorverbinden mislukt.
Nog twee instructies in deze familie zijn bij voorbaat dood. Vragen om meeluistergeluidjes terwijl de beller praat, want een pijplijn luistert niet terwijl hij spreekt. En merknamen fonetisch herspellen in de prompt, wat alleen werkt op de zinnen die het model toevallig overneemt; uitspraak hoort in de vervangingslijst, waar hij geldt voor elke zin die de assistent ooit zegt.
Bij speech-to-speech is de spelling niets
Neem diezelfde prompt mee naar een native-audiomodel en de schrijfregels houden op iets te betekenen. Er gaat geen tekst naar een spraakmodel, dus er valt geen spelling goed te krijgen. Wat je daarbij inlevert zijn alle knoppen die je aan de spraakkant had: geen stabiliteitsschuif, geen snelheid, geen aparte steminstelling. Alles wat je eerder als parameter zette moet nu in woorden, binnen de instructie.
Over die omslag schreven we uitgebreider in het prompten van speech-to-speech-stemmodellen. De korte versie: de prompt is geen briefing voor een schrijver meer, maar een regieaanwijzing voor een stemacteur. “Spreek rustig, houd antwoorden op één of twee zinnen” doet het werk dat een komma hier niet kan doen.
Schrijf het zoals het moet klinken
- Spelling, cijfers en symbolen zijn uitspraakbeslissingen
- Komma's zijn de enige betrouwbare pauze
- Beurtwisseling zit in instellingen, niet in de prompt
- Uitspraakcorrecties gelden overal, buiten de prompt om
Beschrijf hoe het moet klinken
- Schrijfregels hebben niets om op aan te grijpen
- Tempo, register en warmte beschrijf je in gewone taal
- De instructie ligt meestal vast voor het hele gesprek
- Een lange prompt drijft juist meer af, niet minder
Dat laatste punt heeft een gevolg waar mensen op stuklopen. Op verschillende native-audiomodellen ligt de instructie vast zodra het gesprek loopt, dus er is geen stille correctie halverwege zoals bij een tekstmodel. Wat de assistent moet kunnen, moet in de prompt staan vóór het eerste woord valt. Dat is een sterk argument voor een korte, geordende prompt in plaats van een grondige.
Het ene model dat wel naar je luistert over luisteren
Full-duplexmodellen zijn de uitzondering die de regel zichtbaar maakt. Omdat het model de beller hoort terwijl het spreekt, en zijn eigen beurten bepaalt, doen de instructies die overal elders decoratie waren daar ineens iets. Je kunt zeggen of hij korte bevestigingen mag maken terwijl de beller praat. Je kunt zeggen dat hij wijkt voor de beller maar niet voor een kuch. Je kunt zeggen wat hij moet doen met een tweede stem in de kamer.
Dat laatste telt zwaarder dan het klinkt. De meest gehoorde klacht over telefoonassistenten in de praktijk is geen verkeerd antwoord; het is een beller op de speaker met iemand anders in de kamer, waarbij elke losse zin de assistent van zijn beurt duwt. Op een model met detectie ervoor valt dat vanuit de prompt niet te repareren. Op een full-duplexmodel is het een alinea.
Je gesprekspartner is alleen de persoon die je belt.
Een televisie, mensen in de kamer of geluid van straat zijn dat niet.
Een achtergrondstem onderbreekt je nooit: praat door, reageer er niet
op, en beantwoord geen vraag van iemand anders.
Weet je het echt niet, raad dan niet. Vraag kort of ze het tegen jou
hadden of tegen iemand anders.Wel goed om te weten voordat je erop vertrouwt: deze modellen scheiden de beller van de kamer vooral op inhoud en niet op stem. Een achtergrondzin die toevallig klinkt als een opdracht kan alsnog antwoord krijgen. Daarom is de laatste regel van dat blok de belangrijkste: vragen is beter dan raden, en een korte “had je het tegen mij?” kost een seconde en scheelt een ontspoord gesprek.
Waarom “af en toe” “steeds” wordt
Dit is de fout die we niet zagen aankomen, en de reden dat we op deze modellen zorgvuldiger met formuleringen omgaan dan op alle andere. Een full-duplexmodel hoort de beller continu. Geef het de instructie om de beller af en toe te bevestigen, en het toetst die instructie bij elke pauze. “Af en toe” is voor een model dat onafgebroken luistert geen frequentie; het is een staande toestemming.
Het resultaat is een assistent die door alles heen hummt en meemompelt, wat in een transcript aandachtig oogt en aan de telefoon vermoeiend klinkt. Hetzelfde gebeurt met toestemming om zelf in te haken: zeg je dat hij af en toe met iets nuttigs mag inhaken, dan haakt hij in zodra hem iets nuttigs invalt, en dat is aan de telefoon voortdurend.
Schrijf zwijgen als standaard, en baken de uitzondering af
De vorm is: standaard, reden, benoemde voorwaarde, maximum, en wat te doen bij twijfel. Elke “soms” die je niet afbakent lost het model zelf op, en het lost hem ruimhartiger op dan je bedoelde.
Zo vind je de dode regels in een prompt die er al staat
Je hebt hier geen raamwerk voor nodig. Lees je prompt met één vraag per zin in je hoofd: is dit een beslissing die het model zelf neemt? Drie rondes halen er vrijwel alles uit.
Ronde één, de beurt. Zoek elke zin over onderbreken, wachten, stoppen of geluid. Draait de assistent niet op een full-duplexmodel, dan werkt geen ervan. Haal ze weg en breng de bedoeling over naar de platforminstellingen, waar hij wel effect heeft.
Ronde twee, uitspraak. Zoek elke zin over hoe je getallen, datums, symbolen of merknamen schrijft. Draait de assistent op een native-audiomodel, dan werkt ook daarvan geen ervan. Op een pijplijn wel, maar de merknamen horen in de uitspraakvervangingen en niet in de prompt, zodat ze op elke zin werken in plaats van op de zinnen die het model overneemt.
Ronde drie, lengte. Wat er dan nog staat: inkorten. Dat loont op elk model en het is bijna verplicht op de native-audiomodellen, waar de instructie vastligt voor het gesprek en een uitgedijde prompt meer afdrijft dan een korte.
Wat je overhoudt is meestal korter dan waar je mee begon en het doet meer, omdat elke regel erin een regel is waar het model iets mee kan. De rest deed al niets. Die stond er alleen maar, en zag eruit als zorgvuldigheid.
Van model wisselen is geen instelling veranderen
De praktische conclusie is ongemakkelijk als je hoopte te kunnen shoppen. Een assistent van een pijplijn naar een native-audiomodel verhuizen, of tussen twee realtime-aanbieders wisselen, is geen keuzemenu. De prompt die je meeneemt is deels inert en deels onvolledig, en de assistent wordt subtiel slechter op een manier die nooit als fout zichtbaar wordt. Er gaat niets stuk. Het gedraagt zich alleen een beetje minder zoals het deed.
Behandel de prompt dus als iets dat bij het model hoort, niet bij de assistent. Verandert het model, dan wordt de prompt herschreven en niet gekopieerd. En weeg je twee modellen tegen elkaar af, kijk dan voorbij de stemkwaliteit en de minuutprijs naar de vraag eronder: wie gaat op dit model over de beurt? Dat antwoord bepaalt wat je later nog met woorden kunt repareren, en waar je mee zult moeten leven. Het staat naast de andere vraag die een modelkeuze voor je beslist, namelijk waar de audio verwerkt wordt.
Bronnen De promptgids van OpenAI voor GPT-Live voor de blokken over bevestigen, onderbreken en delegeren; de best practices voor de Live API van Google voor de opbouw van systeeminstructies en het afhandelen van onderbrekingen. Alles over hoe dit zich aan een echte telefoonlijn gedraagt komt uit onze eigen gesprekken.
