Skip to main content

Texas Hold'em environment with LLM players

Project description

README.md

llm_poker

A minimal Texas Hold’em environment that seats multiple LLM-based players (via the llm library) and manages everything from dealing hole cards to forced blinds, betting rounds, and a straightforward showdown.

Core features:

  • Blinds: Each hand forces a small blind and a big blind, ensuring there’s money in the pot.
  • Betting: We query each LLM once per betting round, requesting an action in strict JSON form (fold, call, or raise).
  • Local showdown logic: The environment determines the best 5-card hand from each player’s 7 cards and awards the pot.
  • Pydantic-based JSON validation: The LLM responses are parsed and validated. If invalid, we retry.
  • Optional CLI: The llm_poker command can run multiple rounds using the specified LLMs.

Installation

  1. Install the package:
    pip install llm_poker
    

You must also configure your llm library with the API keys for whichever LLM models you plan to use (e.g., gpt-4o, Anthropic, etc.). For example:

llm keys set openai

Quickstart Examples

  1. Just run run.py
python run.py

Deals up to 5 rounds between multiple players: gpt-4o, claude-3-5-haiku-latest, claude-3-5-sonnet-latest, deepseek-reasoner. Uses elimination_count=0 so the game does not stop early (unless someone busts). The minimum raise is 500 chips. Logs each hand’s actions, culminating in a final standings table.

  1. Using the CLI If you installed with the included console script, you can do:
llm_poker --models chatgpt-4o-latest \
          --models gemini-2.0-flash-thinking-exp-01-21 \
          --models claude-3-5-sonnet-latest \
          --models claude-3-5-haiku-latest \
          --models deepseek-reasoner \
          --rounds 5 \
          --elimination-count 0 \
          --stack 10000

llm_poker --models "chatgpt-4o-latest gemini-2.0-flash-thinking-exp-01-21 claude-3-5-sonnet-latest claude-3-5-haiku-latest deepseek-reasoner" --elimination-count 0 --stack 10000

This deals 5 rounds of heads-up between gpt-4o and claude-3-5-haiku-latest.

Once installed, you have access to:

llm_poker [OPTIONS]

--models/-m: Multiple model names or aliases recognized by llm (defaults to ["gpt-4o"]). --rounds/-r: How many hands to deal (default 3). --elimination-count/-e: Stop once only this many players remain (default 1). --stack/-s: Starting chip stack (default 10000).


Known Limitations

  • No side pots: Currently, if a player goes all-in, the environment doesn’t handle side pots.
  • Manual environment checks: If the LLM returns “check” while facing a bet, the code interprets it as invalid and re-prompts.
  • Fictitious ‘expert-level poker AI’: The LLM’s strategic brilliance is not guaranteed. This is more a demonstration environment than a truly advanced solver.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_poker-0.1.11.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_poker-0.1.11-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file llm_poker-0.1.11.tar.gz.

File metadata

  • Download URL: llm_poker-0.1.11.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for llm_poker-0.1.11.tar.gz
Algorithm Hash digest
SHA256 d59a82d94902630dce60b167356c7ef688f3e8f700706e0830e12fd6dd6ba68a
MD5 2b23c71c08902475ebab5023cca5991a
BLAKE2b-256 379a977e14cc05ba2b4b70344ea24aa42fbed9ae36c89c41cf00e02975051a54

See more details on using hashes here.

File details

Details for the file llm_poker-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: llm_poker-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for llm_poker-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 7138893efbc8d960cbe0cbbb31057361f82d837c478d41ec447c93b95ad83a13
MD5 f6f2d8dc4fb18f3a1e75dd15cd0eb1aa
BLAKE2b-256 f1a95bfd3e7ca9585cca3087d3abb0b00fbcc2f6d25f7b0cb64de8c1533faa6a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page