Skip to content
D · 05 · TECHNICAL WRITE-UP

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.

01 · BATTLE-MODES

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.

ModeFormatToelichting
DebateKlassiek gestructureerd debatPro + Con bouwen op bewijs gefundeerde argumenten, de moderator beoordeelt elke ronde.
Rap BattleLyrische strijd met rijm + woordspelHetzelfde onderzoek als bij een formeel debat, maar dan op rijm.
RoastComedy-roastDe agents leunen op toon; de moderator scoort op dichtheid van de punchlines in plaats van op degelijkheid.
Pitch OffStartup-pitchwedstrijdPro pitcht het idee, Con pitcht ertegen; de jury kiest de term sheet.
02 · DE AGENTS

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.

RolWieWat het doet
Researchers (Pro + Con)Twee funderende agentsGenereren 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 agentsNemen het onderzoek en verdedigen de eigen kant. De persoonlijkheidsknoppen werken hier.
ModeratorBeoordelaar + commentator per rondeLeest de ronde, scoort hem op de actieve rubriek (verandert per battle-mode), levert commentaar voor het live transcript.
JudgeScheidsrechter aan het einde van het debatMaakt 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.
03 · PERSOONLIJKHEIDSKNOPPEN

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.

KnopBereikUitersten
Expertise1–10Beginner ↔ argumentatie op promovendusniveau
Toon1–10Beleefd / klinisch ↔ agressief / gepassioneerd
Breedsprakigheid1–10Bondig ↔ uitvoerig
04 · OPVALLENDE ONTWERPKEUZES

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.
05 · STACK

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.
WAAROM DIT BESTAAT

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.

Lees de broncode op GitHub →