Synthetic SFT data
problem
a tool-calling assistant needs training dialogues that match what its backend really returns, and hand-written ones drift from that.
what I built
- a pipeline that writes multi-turn dialogues grounded in real backend tool outputs
- multi-tool routing driven by versioned YAML constraint prompts
- regex validators with corrective retry loops, in place of hard-coded output patches
results
- synthetic artifacts get caught and retried instead of leaking into the training data