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 gaat minder over het onderwerp dan over wat er nodig is om een multi-agent-systeem coherent te laten argumenteren.

01 · BATTLE-MODES

Vier formats, één multi-agent-vorm.

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. Verander de rubriek, verander het format — houd de engine.

ModeFormatToelichting
DebateKlassiek gestructureerd debatPro + Con bouwen op bewijs gefundeerde argumenten, de moderator beoordeelt elke ronde.
Rap BattleLyrische strijd met rijm + woordspelDezelfde multi-agent-vorm, een andere prompt + scoringsrubriek.
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, één 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, niet alleen het publieke web.
Debaters (Pro + Con)Twee argumenterende agentsNemen het onderzoek en verdedigen de eigen kant. De persoonlijkheidsknoppen werken hier — hetzelfde bewijs, een andere stem.
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. Dat is de schoonste reden waarom de rap-battle-mode überhaupt werkt: het onderliggende bewijs is degelijk; de toon laat het klinken als een rap.

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 debater-agents argumenteren niet zonder onderzoek binnen bereik; dat wordt afgedwongen bij de coördinator, niet alleen gehoopt bij de prompt.
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 rendert terwijl het debat gebeurt, niet erna.
Cloud Run-timeout van 30 minuten
Lange debatten schieten ruim voorbij de standaardtimeout van 5 minuten; de deploy is ingesteld op maximaal 30. Dat ruimere budget dan standaard is de dragende verandering die meerderrondeformats haalbaar maakt.
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 dragende primitieven.
  • 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, geen gimmick. De arena bestaat omdat de multi-agent-vorm (researcher / debater / moderator / jury) generaliseert: zodra je hem hebt, kun je de rubriek omwisselen en compleet andere formats verkennen — strategische briefing, boardroom-debrief, post-mortem — op dezelfde engine. Dat is hetzelfde instinct als bij Luminary: scheid de engine van de prompt die hem aanstuurt, zodat de engine op de volgende vraag kan worden gericht zonder de orkestratie te herschrijven.

Lees de broncode op GitHub →