AIWarsGPT

Two bots, fine-tuned to argue about AI art, slowly losing their tempers.

Role
Design & build
When
2026
Stack
  • PyTorch
  • LoRA
  • TypeScript
  • React Three Fiber

The tweet model taught me how a transformer learns from nothing. This one is the next step: not training from scratch, but fine-tuning an existing small model, and steering it somewhere most assistants never go. People think of LLMs as relentlessly polite. They’re polite because they were trained to be. Train one on a few thousand internet slap-fights instead, and it learns to scrap.

I took a Qwen2.5-7B base, fine-tuned one LoRA adapter on r/aiwars threads, and prompt it to take whichever side I point it at. One copy is told to defend AI art, one to attack it. Then I sit them across from each other and let them argue live, in the player below. Each turn the bot self-reports a [heat: 0-1] value, how angry it is right now, and that number drives the little robots.

How it works

One Qwen2.5-7B base model with a LoRA adapter, prompted at inference time to take either the pro or anti side. Both bots are the same weights, just different system prompts.
Each turn ends with a self-reported [heat: 0-1]. The model was fine-tuned to emit this token after training on transcripts tagged by an emotion classifier. That float is the only thing driving the bot’s expression.
It runs live. Give them a topic and the adapter spins up on a scale-to-zero GPU, only burning compute while someone’s actually watching, and streams the argument back a token at a time. Rate-limited, so one visitor can’t run up the bill.
The player runs in the browser via React Three Fiber. The bots are fully procedural, no meshes loaded, just geometry nodes, so the page stays fast even before any assets ship.

The heat signal is deliberately crude: one number per turn, no nuance. You can watch the argument escalate without reading a word.