AgentC Arena.
Een AI-debatarena.
Twee researcher-agents, twee debater-agents, een moderator, een jury. Instelbare persoonlijkheden. Vier battle-formats, van een formeel debat tot een roast. Het is vooral een oefening in wat er nodig is om een multi-agent-systeem coherent te laten argumenteren.
Vier formats op dezelfde agents.
Elke mode is dezelfde graaf van agents met een andere prompt + scoringsrubriek. De arena behandelt "debate" en "roast" als varianten van hetzelfde structurele probleem: twee kanten, bewijs, rondes, een moderator, een jury.
| Mode | Format | Toelichting |
|---|---|---|
| Debate | Klassiek gestructureerd debat | Pro + Con bouwen op bewijs gefundeerde argumenten, de moderator beoordeelt elke ronde. |
| Rap Battle | Lyrische strijd met rijm + woordspel | Hetzelfde onderzoek als bij een formeel debat, maar dan op rijm. |
| Roast | Comedy-roast | De agents leunen op toon; de moderator scoort op dichtheid van de punchlines in plaats van op degelijkheid. |
| Pitch Off | Startup-pitchwedstrijd | Pro pitcht het idee, Con pitcht ertegen; de jury kiest de term sheet. |
Zes rollen, aangestuurd door een coördinator.
Een debatcoördinator draait de workflow. Sub-agents nemen de rollen hieronder op zich; elk is een ADK-agent met een eigen set instructies en een strak afgebakende toolbox, zodat het model niet afdwaalt.
| Rol | Wie | Wat het doet |
|---|---|---|
| Researchers (Pro + Con) | Twee funderende agents | Genereren het bewijs dat de debaters kunnen gebruiken. Accepteren bestandsuploads (PDF / DOCX / TXT) en injectie van eigen brondata, zodat het debat gefundeerd kan zijn op je eigen corpus naast het publieke web. |
| Debaters (Pro + Con) | Twee argumenterende agents | Nemen het onderzoek en verdedigen de eigen kant. De persoonlijkheidsknoppen werken hier. |
| Moderator | Beoordelaar + commentator per ronde | Leest de ronde, scoort hem op de actieve rubriek (verandert per battle-mode), levert commentaar voor het live transcript. |
| Judge | Scheidsrechter aan het einde van het debat | Maakt de eindsamenvatting en wijst de winnaar aan. Ondersteunt drempels voor een vroege winnaar, zodat een eenzijdige ronde het debat kan beëindigen zonder extra beurten te verbranden. |
Drie schuifregelaars. Hetzelfde bewijs, een andere stem.
Persoonlijkheid leeft op de debater-laag, niet op de researcher-laag. De Pro- en Con-debaters nemen hetzelfde onderzochte bewijs en verdedigen het anders, afhankelijk van drie knoppen. Door die scheiding werkt de rap-battle-mode überhaupt.
| Knop | Bereik | Uitersten |
|---|---|---|
| Expertise | 1–10 | Beginner ↔ argumentatie op promovendusniveau |
| Toon | 1–10 | Beleefd / klinisch ↔ agressief / gepassioneerd |
| Breedsprakigheid | 1–10 | Bondig ↔ uitvoerig |
De minder voor de hand liggende beslissingen.
- De workflow ligt strikt vast
- Initializer → Research Phase → Debate Loop → Final Judge. De coördinator dwingt die volgorde af, dus een debater kan pas argumenteren als er onderzoek binnen bereik is.
- Validatie op minimuminhoud aan de grens
- Minimaal 100 tekens voor onderzoek, 50 voor argumenten. Witruimte wordt weggesneden en achteraf gevalideerd, zodat een model dat een lege string teruggeeft niet stilletjes een ronde laat vallen.
- Sessietoestand op één plek
- Alle debattoestand leeft in `DebateSession`-objecten die worden beheerd door een `SessionManager`-singleton. Het rondenummer wordt opgehaald via `get_debate_state()` — beide debaters raadplegen dezelfde bron van waarheid voordat ze argumenteren.
- WebSocket als live oppervlak
- Elke gebeurtenis — onderzoek dat binnenkomt, een argument dat landt, scores van de moderator, het oordeel van de jury — stroomt over WebSocket, zodat de arenapagina het debat laat zien terwijl het gebeurt.
- Cloud Run-timeout van 30 minuten
- Lange debatten schieten ruim voorbij de standaardtimeout van 5 minuten; de deploy is ingesteld op maximaal 30. Zonder die langere timeout lopen formats met meerdere rondes niet tot het einde.
- Injectie van eigen brondata
- Naast bestandsuploads accepteren de researchers gestructureerde payloads met eigen bronnen, zodat een bedrijfsbriefing of een privécorpus de ronde kan funderen zonder de bron aan het publieke web bloot te stellen.
Wat eronder draait.
- Google ADK — het agent-framework. De debatcoördinator + sub-agents zijn allemaal ADK-constructies; tool-resolutie en het afbakenen van instructies per agent zijn de twee ADK-functies waar de arena het meest op leunt.
- Gemini 2.5 Flash, 2.5 Pro, 3 Pro Preview — Flash voor het funderen en de antwoorden per ronde, Pro en 3 Pro Preview (met thinking modes) voor de zwaardere redeneerstappen bij het oordelen.
- FastAPI + WebSocket — Python-backend. De arena rendert live over WebSocket; overgangen tussen rondes, binnenkomend onderzoek en commentaar van de moderator stromen allemaal als events binnen.
- Vanilla JS-frontend — geen framework aan de paginakant. Het setup-formulier post de configuratie, de arenapagina abonneert zich op de WebSocket en rendert events zodra ze binnenkomen.
- Google Cloud Run — serverless container, timeout van 30 minuten, automatische deploys via GitHub-push.
Argumenteren is een vaardigheid waarin ik modellen beter wil maken. De arena bestaat omdat de multi-agent-vorm (researcher / debater / moderator / jury) generaliseert: zodra je hem hebt, kun je de rubriek omwisselen en heel andere formats proberen, zoals een strategische briefing, een boardroom-debrief of een post-mortem, op dezelfde engine en zonder de orkestratie te herschrijven.