De vraag waarmee alles begon
"Waarom kan niet elk personage een eigen tekstballon hebben, zoals in andere apps?"
Die vraag krijgen we vaak. En eerlijk gezegd is het een goede vraag. De meeste chatapps tonen berichten als aparte tekstballonnen - één per persoon. Waarom combineert onze groepschat dan de antwoorden van meerdere personages in één bericht?
Het antwoord is geen luiheid of slordigheid. Het is een bewuste technische keuze, voortgekomen uit maanden experimenteren met drie fundamenteel verschillende benaderingen van AI-groepsgesprekken.
De drie architecturen
Wie AI-gesprekken met meerdere personages bouwt, staat voor dezelfde keuze als elk ander platform. Er zijn precies drie manieren om het te doen, elk met ingrijpende gevolgen voor kosten, kwaliteit en gebruikerservaring.
1. Gestructureerde output (JSON-arrays)
De meest gangbare aanpak in de branche. Je vraagt de AI om een JSON-array terug te geven waarin elk element het antwoord van één personage voorstelt:
[
{
"speaker": "Sherlock",
"emotion": "intrigued",
"content": "Fascinating. The mud pattern suggests..."
},
{
"speaker": "Watson",
"emotion": "confused",
"content": "Holmes, what do you mean?"
}
]
De aantrekkingskracht:
- Eén API-aanroep, één keer credits
- Makkelijk te parsen en weer te geven als aparte tekstballonnen
- Kan rijke metadata bevatten (emoties, acties, scènebeschrijvingen)
- Perfect om antwoordsuggesties voor de gebruiker te genereren
De werkelijkheid:
- Alleen dure premiummodellen (Claude, GPT-4) ondersteunen gestructureerde output betrouwbaar - de meeste betaalbare modellen hebben moeite met consistente JSON-opmaak
- Opmaakfouten maken het hele antwoord kapot
- JSON-instructies kosten tokens en laten minder ruimte voor creativiteit
- Modellen voelen zich "beperkt" - de creativiteit lijdt er vaak onder
- Inhoudsbeperkingen worden strenger: de modus voor gestructureerde output activeert vaak agressievere contentfilters, waardoor volwassen of gewaagde roleplayscenario's vaker mislukken
- Vervuilde context: je gespreksgeschiedenis loopt vol met JSON-structuren
- Complexe foutafhandeling: wat gebeurt er als het parsen halverwege de stream misgaat?
De meeste externe personageplatforms gebruiken deze aanpak. Het werkt, maar de beperkingen zijn echt.
2. Tool calling (agentmodus)
De meest "intelligente" aanpak. De AI bepaalt welk personage als volgende moet spreken, roept een tool aan om dat aan te geven en genereert dan het antwoord van dat personage. Dat herhaalt zich tot de scène af voelt.
AI thinks: "Watson should react to this revelation"
→ calls tool: next_speaker("Watson")
→ generates Watson's response
→ AI thinks: "Now Sherlock would interject"
→ calls tool: next_speaker("Sherlock")
→ generates Sherlock's response
...
De aantrekkingskracht:
- De meest natuurlijke gespreksflow
- De AI heeft volledige creatieve controle over het tempo van de scène
- Elk antwoord van een personage krijgt een eigen generatie, met de volle kwaliteit
- Levert vanzelf aparte berichten per personage op
De werkelijkheid:
- Meerdere API-aanroepen = meerdere keren credits
- Vertraging stapelt zich op: N personages = N rondes heen en terug
- Alleen topmodellen (Claude, GPT-4) gaan betrouwbaar om met tool calling - goedkopere modellen falen vaak of hallucineren tool calls
- Complex statusbeheer over meerdere aanroepen heen
- Risico op oneindige lussen of onverwacht afbreken
- Debugnachtmerries: problemen zijn moeilijk te reproduceren
Dit is de "droomarchitectuur" die op papier prachtig oogt, maar op grote schaal veel operationele hoofdpijn bezorgt.
3. Vrije tekstoutput (onze huidige keuze)
De eenvoudigste aanpak. Vraag de AI om de scène natuurlijk te schrijven en laat hem zelf bepalen hoe hij meerdere personages in vloeiend proza presenteert:
Sherlock leaned forward, eyes sharp. "Fascinating. The mud
pattern suggests our suspect came from the east side."
Watson frowned. "Holmes, what do you mean? It's just mud."
"Just mud?" Sherlock smiled. "My dear Watson, there's no
such thing as 'just' anything."
De aantrekkingskracht:
- Werkt met elk AI-model, geen speciale functies nodig
- Maximale creatieve vrijheid - de AI schrijft natuurlijk
- Schone context: de gespreksgeschiedenis leest als een roman
- Uitstekende streamingervaring
- Eén aanroep, voorspelbare kosten
- Het eenvoudigst te bouwen en te onderhouden
De werkelijkheid:
- Alle personages in één berichtblok
- Je kunt niet makkelijk het antwoord van één personage opnieuw genereren
- De flexibiliteit van de UI is beperkt
- Gebruikers die tekstballonnen in chatstijl verwachten, raken mogelijk in de war
We hebben dit op de harde manier geleerd
Iets wat we nog nooit openbaar hebben gedeeld: de eerste versie van onze groepschat gebruikte tool calling.
We geloofden in de "droomarchitectuur". Een AI die bepaalt wie er als volgende spreekt, een eigen generatie voor elk personage, prachtige aparte tekstballonnen. Het was elegant. Het was intelligent. Het was in productie ook een ramp.
Gebruikers kregen te maken met onvoorspelbare kosten - soms 3x zoveel als ze voor hetzelfde gesprek verwachtten. Reactietijden liepen enorm uiteen, afhankelijk van hoeveel personages de AI erbij wilde betrekken. Goedkopere modellen hallucineerden tool calls of bleven in lussen hangen. Onze foutlogs liepen vol met randgevallen die we nooit hadden voorzien.
Na maanden van patches en noodoplossingen namen we de moeilijke beslissing om alles opnieuw op te bouwen met vrije tekstoutput. Het voelde als een stap terug. Maar soms is de "minder intelligente" oplossing de slimmere keuze.
Waarom we deze keuze maakten
Na uitgebreid testen van alle drie de benaderingen - en er één in productie te hebben gebracht - kozen we voor vrije tekst in groepschats. Dit is waarom:
Stabiliteit boven functies - Gestructureerde output faalt onvoorspelbaar. Als je groepschat midden in een gesprek vastloopt, kunnen aparte tekstballonnen gebruikers niets meer schelen - ze willen gewoon dat het werkt. Vrije tekst faalt nooit door opmaakproblemen.
Kwaliteit boven kwantiteit - Beperkende formaten verminderen de creativiteit van de AI op subtiele wijze. Toen we de output vergeleken, leverde vrije tekst steeds levendigere, natuurlijker aanvoelende interacties tussen personages op. De AI kon zich richten op het verhaal in plaats van op JSON-syntaxis.
Voorspelbare kosten - Agentmodus rekent per personage per antwoord. Een scène met vijf personages kon 5-10x zoveel kosten als verwacht. Gebruikers verdienen voorspelbare prijzen.
Universele compatibiliteit - We ondersteunen meerdere AI-modellen. Ze ondersteunen niet allemaal even goed gestructureerde output of tool calling. Vrije tekst werkt overal, waardoor gebruikers uit meer modellen kunnen kiezen.
De afweging die we accepteren
Ja, we leveren de ervaring van "één tekstballon per personage" in. Maar we winnen:
- IJzersterke betrouwbaarheid
- Betere creatieve kwaliteit
- Voorspelbare kosten
- Ondersteuning voor meer modellen
- Een schonere gespreksgeschiedenis
Bij roleplay in groepen, waar immersie het belangrijkst is, vinden we deze afweging het waard.
Wat eraan komt: verhaalmodus
Iets spannends: we bouwen een nieuwe verhaalmodus die gestructureerde output gebruikt.
Waarom een andere aanpak? De verhaalmodus heeft andere prioriteiten:
- Nauwkeurige controle over scènes weegt zwaarder dan vrije creativiteit
- Rijke metadata (camerahoeken, muzieksignalen, hoofdstukovergangen) voegt waarde toe
- Het formaat is voorspelbaarder (een duidelijke structuur van hoofdstukken en scènes)
- Gebruikers verwachten een meer "geproduceerde" ervaring
Verschillende toepassingen verdienen verschillende architecturen. We zweren niet bij één enkele aanpak - we kiezen wat gebruikers het best dient.
De eerlijke waarheid
Er is geen perfecte oplossing voor AI-gesprekken met meerdere personages. Elke aanpak ruilt iets waardevols in voor iets anders.
Andere platforms die aparte tekstballonnen tonen? Die gebruiken waarschijnlijk gestructureerde output en accepteren de beperkingen daarvan. Platforms met "intelligentere" scèneregie? Waarschijnlijk tool calling, met hogere kosten en meer vertraging.
Wij kozen de weg die voorrang geeft aan wat onze gebruikers het meest waarderen: betrouwbare, creatieve en kosteneffectieve roleplay in groepen.
Aparte tekstballonnen zijn mooi. Maar niet ten koste van al het andere.
Wat we verkennen
We experimenteren met hybride benaderingen:
- Parsen achteraf: lichte modellen gebruiken om vrije tekst na het genereren op te splitsen in stukken per personage
- Optionele gestructureerde modus: fanatieke gebruikers gestructureerde output laten kiezen als ze precieze controle nodig hebben
- Slimme scènedetectie: automatisch natuurlijke breekpunten herkennen voor een betere weergave in de UI
Het doel is niet om het "juiste" antwoord te vinden. Het is om de ervaring steeds beter te maken en tegelijk te behouden wat werkt.
Heb je ideeën over hoe groepschat zou moeten werken? We horen graag van je.

