CoolFace
Datasetpublic

AYipppp/gtow-llama-sft-v3

GTO Wizard — Heads-Up NL Hold'em 200BB — SFT dataset (v3) Supervised fine-tuning data for heads-up No-Limit Texas Hold'em, 200 big blinds deep. Each row is a single decision point: a natural-language description of the game state, paired with the game-theory-optimal action GTO Wizard chose in that spot. Intended for instruction-tuning a chat LLM to play HU 200BB poker (see the pokerbench agent it was built for). Schema Two flat columns: Column Description… See the full description on the dataset page: https://huggingface.co/datasets/AYipppp/gtow-llama-sft-v3.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes61downloads
Dataset Card

GTO Wizard — Heads-Up NL Hold'em 200BB — SFT dataset (v3)

Supervised fine-tuning data for heads-up No-Limit Texas Hold'em, 200 big blinds deep. Each row is a single decision point: a natural-language description of the game state, paired with the game-theory-optimal action GTO Wizard chose in that spot.

Intended for instruction-tuning a chat LLM to play HU 200BB poker (see the pokerbench agent it was built for).

Schema

Two flat columns:

ColumnDescription
instructionThe game scenario — blinds, positions, hole cards, board, action history, pot, legal actions, bet range. Ends with Your optimal action is:.
outputThe GTO action, wrapped in tags: <action>fold</action>, <action>call</action>, <action>raise 225</action>, …

System prompt (constant, not stored as a column — re-add it at train and inference time):

You are an expert poker player. Respond with your action in <action></action> tags.

Splits

SplitExamples
train25,571
validation3,159
test3,201

Split by `hand_id` — no hand appears in more than one split, so there is no leakage between train and eval.

How it was built

collect_data.py plays hands against the GTO Wizard researcher API; every action GTO Wizard takes becomes one labeled example. The public game state is rendered into the instruction text by prompt_formatter.format_prompt, using the exact wording the downstream agent sees at inference time.

Pre-action state correction (important)

The GTOWizard API only exposes the game state after an action lands, so a naively-collected pot/stack already includes the chips the player just committed — which leaks the label (a model can read the action straight off (pot, stack) and ignore the cards). This dataset is corrected: pot and stacks are rolled back to the pre-action state at the moment of the decision, matching what a live API serves before the action. Train on this, not on an uncorrected collection.

Action token reference

TokenMeaning
foldFold
callCall
checkCheck
raise N / bet NBet/raise to N chips (cumulative on the street)

Blinds are 50 / 100; starting stack 20,000 (200 BB).

Caveats

  • —The label is GTO Wizard's action — a strong GTO-approximate policy, not a guaranteed exact Nash solution.
  • —Opponent hole cards appear only when a hand reached showdown.
  • —Derived from the GTO Wizard API; respect their terms for redistribution.

Lineage

v3 is the larger of two collection runs (8,884 hands → 31,931 decisions), pre-action-corrected. v1/v2 were an earlier, smaller collection (5,646 hands). Training on uncorrected data caused a fold-collapse failure; see the project notes on post-action state leakage.