gradients-io-tournaments/pvp-tool-calling-sft
PvP tool-calling SFT cold-start data Claude-vs-Claude games played through the G.O.D PvP tool-calling harness. Each row is one model turn (or post-game reflection): the system+user prompt the harness built, the assistant response (content + tool_calls), and the tools schemas — i.e. the OpenAI messages+tools format consumed by tokenizer.apply_chat_template(messages, tools=tools). On a move turn the assistant co-emits any memory-tool edits and a game_action committing a legal… See the full description on the dataset page: https://huggingface.co/datasets/gradients-io-tournaments/pvp-tool-calling-sft.
PvP tool-calling SFT cold-start data
Claude-vs-Claude games played through the G.O.D PvP tool-calling harness. Each row is one model turn (or post-game reflection): the system+user prompt the harness built, the assistant response (content + tool_calls), and the tools schemas — i.e. the OpenAI messages+tools format consumed by tokenizer.apply_chat_template(messages, tools=tools). On a move turn the assistant co-emits any memory-tool edits and a game_action committing a legal move; reflection rows consolidate long-term memory after a game.
Players: claude-sonnet-4-6 vs claude-haiku-4-5 (positions swapped each seed, so both orderings appear).
Total: 850 samples across 5 environments.
Per-env sample counts
gin_rummy: 170goofspiel: 170leduc_poker: 170liars_dice: 170othello: 170
Fields
messages,tools: the training example (OpenAI chat + tools format)env: game namemodel: the Claude model that authored the sampleturn_type:turn(commitsgame_action) orreflection(consolidates long-term memory)seq: chronological play order within the env file (stable across shuffling)arc: unique long-term-memory arc id — memory persists across the games within one arcturn_in_arc: order of the sample within its arcmatchup: per-generation-run arc index (legacy; usearcfor a globally-unique id)
To reconstruct a long-term-memory trajectory, take one (env, arc) group and sort by turn_in_arc (or seq). For plain SFT this is unnecessary — each row is self-contained, since the memory state at that turn is already rendered inside its prompt.
