The-Podium / README.md
MannKnee's picture
Upload README.md
9e2e1f2 verified
|
Raw
History Blame Contribute Delete
4.17 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade
metadata
title: The Podium
emoji: 🎯
colorFrom: indigo
colorTo: purple
sdk: gradio
sdk_version: 5.20.0
python_version: '3.11'
app_file: app.py
pinned: false
tags:
  - thousand-token-wood
  - game
  - debate
  - llm
  - gradio
  - interactive
  - track:wood
  - achievement:offbrand
license: mit

The Podium

A strategic LLM debate game β€” Hugging Face "Build Small" hackathon entry.

You are the strategist, not the debater. Manage a finite word pool, pick your champion's archetype, play ability cards, and coach an AI debater through 3 rounds judged by wildly opinionated AI characters β€” each with their own agenda, biases, and scoring personality. Every word you choose costs something. Every judge changes the calculus. Outsmart the opponent AI, read the room, and claim The Podium.

Built with a custom Gradio HTML/JS hybrid UI (Off Brand badge candidate).


Demo

🎬 Demo video: The Podium Demo

πŸ“£ Social post: LinkedIn post


How to Play

  1. Setup β€” A word pool is generated with a hidden flavor seed. Choose your debater's archetype (Firebrand, Academic, Contrarian…). Receive 3 ability cards.
  2. Each Round β€” A topic is revealed along with a biased judge. Pick words from your pool and set their emphasis order. Optionally play an ability card.
  3. The Podium β€” Both AI debaters argue their assigned sides using your chosen words. The judge scores on coherence, persuasion, word integration, and judge appeal β€” in their own character's voice.
  4. Win 2 of 3 rounds (or most total points) to claim The Podium.

Tech Stack

Component Technology
UI Gradio 5.x with custom HTML/JS hybrid
Language Python 3.11
LLM (submission) google/gemma-4-31B-it via HF Inference API
LLM (dev) Claude Sonnet (Anthropic)
Deployment Hugging Face Spaces

Running Locally

pip install -r requirements.txt
cp .env.example .env
# Edit .env β€” set LLM_PROVIDER and the matching API key/token
python app.py

Environment variables:

Variable Required for
LLM_PROVIDER hf (HF Spaces) or anthropic (dev)
HF_TOKEN HF Inference API (when LLM_PROVIDER=hf)
ANTHROPIC_API_KEY Dev/local only (when LLM_PROVIDER=anthropic)

Headless / terminal mode (for prompt testing):

python engine.py

Provider Switching

The game runs against any LLM via a single env var β€” no code changes needed:

LLM_PROVIDER Model Setup
hf google/gemma-4-31B-it via HF Inference API Set HF_TOKEN
anthropic Claude Sonnet (dev only) Set ANTHROPIC_API_KEY

File Structure

app.py          # Gradio UI β€” no game logic
engine.py       # Pure-Python game engine β€” testable headless
llm.py          # Provider abstraction (HF Inference / Anthropic)
prompts.py      # All LLM prompt templates
content.py      # Static content: judges, archetypes, abilities, seed words
config.py       # Tunables and feature toggles

Archetypes

Archetype Style Judge Effect
πŸ”₯ The Firebrand Emotional, punchy +persuasion, -coherence
πŸŽ“ The Academic Precise, structured +coherence, -appeal w/ personality judges
🧒 The Everyman Plainspoken No modifiers (safe pick)
βš”οΈ The Contrarian Flips expectations Bonus when arguing the harder side
✨ The Charmer Witty, disarming +appeal with personality judges only

Ability Cards

Echo πŸ” Β· Wildcard πŸƒ Β· Hoard πŸ“¦ Β· Scramble πŸŒ€ Β· Plant 🌱 Β· Silence 🀫 Β· Appeal βš–οΈ Β· Bias 🎯 Β· Inspiration πŸ’‘


Built for the Hugging Face "Build Small" hackathon. Open-weight model ≀ 32B parameters.