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, orraise). - 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_pokercommand can run multiple rounds using the specified LLMs.
Installation
- 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
- Running the Sample 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-chat. 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.
- Using the CLI If you installed with the included console script, you can do:
llm_poker --models gpt-4o --models claude-3-5-haiku-latest --rounds 5
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm_poker-0.1.6.tar.gz.
File metadata
- Download URL: llm_poker-0.1.6.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fbb950aa631691c5a1bbaad30dc7ff6634dff15c05b5cdd87b56afc6a0db636
|
|
| MD5 |
36ea5455d7e9b9e91668274401f7842a
|
|
| BLAKE2b-256 |
89980da5be85b4840d795ac6130915ebf224c4c77d33b6c3a9e2a5d4881509d9
|
File details
Details for the file llm_poker-0.1.6-py3-none-any.whl.
File metadata
- Download URL: llm_poker-0.1.6-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
350a9e885a1f039597294406ef0f6623773dec932095d56b52ce6b1f698fb970
|
|
| MD5 |
0a658f8207cbb2f53f38d383514c7da2
|
|
| BLAKE2b-256 |
a7dca2c1229c31df3d7956d27e6a5accce329bc23a4d691a6721ed78118b5205
|