As someone who teaches AI, I've always wanted a way to give students hands-on experience with the challenges of training agents while keeping things engaging and fun. That's why I created Bazaar-AI, a lightweight simulation framework based on the card game Jaipur that's designed for training and evaluating AI agents.
What Is Bazaar-AI?
Bazaar-AI is a Python-based library built on top of Arelai that faithfully recreates the strategic card game Jaipur. It provides:
Plug-and-Play Agent Interface
Create custom agents by extending a single class with just two methods.
Serializable Game Objects
Easily save information by state, action, and/or observation for RL-based algorithms.
Custom Reward Functions
Define your own training signals to shape agent behavior.
Visual Simulator
Tests your agents using a clean, web-based UI.
Watch agents compete in the visual simulator
With Bazaar-AI, students can experiment with different AI approaches—from simple heuristics to deep RL, all within a rich, strategic environment.
Why Jaipur?
Jaipur is an ideal game for AI research and education because it captures many challenges found in real-world decision-making, including:
Partial Observability
Players cannot see the deck or their opponent's full hand, requiring decisions to be made under uncertainty.
Delayed Rewards
Actions taken now may only pay off several turns later, testing an agent's ability to plan ahead.
Combinatorial Action Spaces
The sheer number of possible trades forces agents to generalize rather than memorize.
Risk Management
Agents must balance high-value trades against the risk of letting opponents claim bonuses first.
These features make Jaipur an excellent testbed for algorithms that need to handle complex, strategic environments.
Getting Started
1. Installation
First, clone the repository:
git clone https://github.com/chandra-gummaluru/bazaar-ai.git
2. Try the Demo
Run a game between the built-in agents:
cd bazaar-ai
bash launch-bazaar-ai
This will start a local web server and open your browser to the UI. You can select different agents and watch them compete.
3. Build Your Own Agent
Create a directory to store your agents called agents. Create a new file in agents/my_agent.py:
from backend.trader import Trader, TraderAction
from backend.market import MarketObservation
class MyAgent(Trader):
def __init__(self, seed, name):
super().__init__(seed, name)
def select_action(self, actions, observation, simulate_action_fnc):
# Start simple - maybe just pick randomly?
import random
return random.choice(actions)
def calculate_reward(self, old_obs, new_obs, has_acted, env_reward):
pass # No learning yet
Then test it in the UI by selecting it from the dropdown menu.
Source Code
The complete project is open source and available on GitHub:
Whether you're teaching a course on AI, or just want to build a game-playing agent for fun, Bazaar-AI provides an accessible and engaging platform to get started.
Have ideas for improvements or new features? Found a bug? I'd love to hear from you—feel free to open an issue or reach out directly!