language:
- en
task_categories: - text-generation
tags: - synthetic
- conversational
- reasoning
- chain-of-thought
size_categories: - 1K<n<10K
configs: - config_name: default
data_files:- split: train
path: train.parquet
dataset_info:
features: - name: source
dtype: string - name: category
dtype: string - name: messages
list:- name: role
dtype: string - name: content
dtype: string - name: reasoning
dtype: string
splits:
- name: role
- name: train
num_examples: 1000
- split: train
reasonable-chats
Synthetic multi-turn conversations between a user and a helpful assistant, where each
assistant turn carries an explicit reasoning trace whose length scales with the
difficulty of the question. Short questions get brief traces; complex ones get
step-by-step deliberation.
The conversations are generated by google/gemma-4-31b-it via structured output, seeded
by prompts from Dahoas/synthetic-hh-rlhf-prompts.
Fields
source— SHA-256 hash of the seed prompt the conversation was generated from.category— the topic type: one offactual,explanation,how_to,math,coding,writing,reasoning.messages— the conversation as an alternating list of turns, starting withuserand ending withassistant:role—userorassistant.content— the message text.reasoning— the assistant's private thinking trace for that turn;nullfor user messages.
Generation and filtering
Each seed prompt is first passed through a gate. Topics are rejected when a good answer
would require time-sensitive specifics (recent events, or any calendar year from 2000
onward), would make the assistant refer to itself or claim to be an AI, or would call for
a refusal or a "consult a professional" caveat. Accepted topics produce one to three
conversations of at least two turns each.
Generated conversations are then filtered. A conversation is dropped entirely if it leaks
assistant-identity or refusal language, defers the user to an expert, mentions a year
between 2000 and 2040, or opens its reasoning by restating the request. Markdown emphasis
and em/en-dashes are stripped from the text.
Loading
from datasets import load_dataset
dataset = load_dataset("breitburg/reasonable-chats", split="train")