CoolFace
Datasetpublic

cow9000/aicivs-npc-distillation

AICivs NPC distillation data The data behind the AICivs student: teacher answers for the nine operations of the AICivs service contract (a Minecraft mod whose villages are living civilizations), filtered the way the game validates them, and formatted as the exact rows the student was trained on. Everything is synthetic: requests were sampled from a 12-civilization world simulated headless for 120 seasons (souls, memories, chronicles, quest manifests), answers were written by… See the full description on the dataset page: https://huggingface.co/datasets/cow9000/aicivs-npc-distillation.

sourceHugging Faceapache-2.0updated 16d agoView on Hugging Face
0likes96downloads
Dataset Card

AICivs NPC distillation data

The data behind the AICivs student: teacher answers for the nine operations of the AICivs service contract (a Minecraft mod whose villages are living civilizations), filtered the way the game validates them, and formatted as the exact rows the student was trained on. Everything is synthetic: requests were sampled from a 12-civilization world simulated headless for 120 seasons (souls, memories, chronicles, quest manifests), answers were written by Qwen3.8-27B under long rule-heavy prompts, and player lines in the conversations were played by the same teacher (including nonsense, because players are nonsensical). No real people or players appear.

Layout

pathrowswhat
filtered/dialogue.respond.jsonl22,074filtered teacher answers
filtered/quest.generate.jsonl2,963filtered teacher answers
filtered/quest.repair.jsonl1,135filtered teacher answers
filtered/npc.personality.jsonl2,688filtered teacher answers
filtered/npc.memory.consolidate.jsonl2,235filtered teacher answers
filtered/civ.event.narrate.jsonl2,611filtered teacher answers
filtered/civ.history.author.jsonl542filtered teacher answers
filtered/civ.chronicle.summarize.jsonl708filtered teacher answers
filtered/gossip.render.jsonl3,935filtered teacher answers
sft/train.jsonl34,934training rows (rendered prompts)
sft/val.jsonl1,779training rows (rendered prompts)
sft/test.jsonl2,178training rows (rendered prompts)
sft/train-ops.jsonl21,711training rows (rendered prompts)
dpo/pairs.jsonl22,514preference pairs
eval/*.json22 fileseval reports
corpus/*.yaml9 filessampler corpora
  • —`filtered/<operation>.jsonl` — one record per teacher answer that passed the filters: request (the contract request the game would send), response (the answer, contract order, nulls dropped), meta (sampling facts: the soul, register, relationship band, intent, conversation id and turn, quest giver role, and for quests the teacher-only shape/twist/hook hint), produced_by (teacher model and prompt name), latency_ms. Dialogue rows are turns of multi-turn talks (meta.conv_id, meta.turn) whose state (relationship, mood, patience) was carried forward from the teacher's own deltas.
  • —`sft/{train,val,test}.jsonl` — the training rows: messages (the service's short system prompt and user turn as the game renders them, then the assistant JSON), meta (with op), request. Split by soul (dialogue, quests, gossip, personality, consolidation) or by request hash (civ-level operations) so nothing leaks across splits. This is the multi-task set of the joint model; sft/train-ops.jsonl is the second-round subset (quests doubled, 3k dialogue replay).
  • —`dpo/pairs.jsonl` — 22.5k preference pairs (prompt, chosen, rejected, flavour): rule-based rejections (hallucinated referent, wrong action, overlong, out of register, sycophantic) plus the teacher's own unaffordable-action slips. Note: DPO with these pairs collapsed the student's JSON format in our run; they are published as-is.
  • —*`eval/.json`** — the guidance-off eval reports per model version and operation, and the teacher-as-judge result.
  • —*`corpus/.yaml`** — the hand-written and teacher-written corpora the samplers draw from (player utterances by intent, nonsense lines, memories and beliefs by role, civ news, secret topics).

The contract in one paragraph

Every request names its referents explicitly (souls as npc:<uuid>, items as tag:minecraft:…, landmarks lm:<uuid>, events ev:<uuid>, topics topic:<slug>, regions region:<slug>), and a valid answer may only use ids that appear in the request. Dialogue answers carry the player's intent (13 classes), relationship deltas on four axes (trust, affection, respect, fear), a patience delta, a mood, optional actions (offer a quest, open trade, reveal a topic, refer to an NPC, request an item, express an emotion, end the talk) and an optional memory. Quests are DAGs of typed nodes over the manifest with a reward priced against a budget. The filters here are the service's validator plus ports of the game's judgment layers (feasibility, authority, faction, economics, narrative), so a published row is one the game would accept.

Provenance and license

Requests: the AICivs simulation harness (Apache 2.0). Answers: Qwen3.8-27B (W4A16) on vLLM with JSON-schema guided decoding, temperature 0.6–0.9. Base model of the student: MiniCPM5-2B. This dataset is released under Apache 2.0. The pipeline that produced it (training/ in the AICivs repository) regenerates it for a new contract version.