← Lesson
Chat Transcripts
Joeven
Run
Reset
Python loads on first run
def validate_transcript(msgs): errors = [] roles = [m["role"] for m in msgs] if not msgs or msgs[0]["role"] != "system": errors.append("missing pinned system") if roles.count("system") > 1: errors.append("spec split across multiple system messages") for i, m in enumerate(msgs): if m["role"] == "tool": if i == 0 or msgs[i - 1]["role"] not in {"assistant", "tool"}: errors.append("tool result with no assistant/tool before index " + str(i)) if msgs[-1]["role"] == "assistant": errors.append("ends on assistant — did you already answer?") return errors good = [ {"role": "system", "content": "Cite tools. No refunds."}, {"role": "user", "content": "Job 17?"}, {"role": "assistant", "content": "get_job(17)"}, {"role": "tool", "content": "failed timeout"}, ] print("good", validate_transcript(good) or "ok") bad = [ {"role": "user", "content": "Job 17?"}, {"role": "tool", "content": "failed timeout"}, {"role": "assistant", "content": "All good!"}, ] print("bad", validate_transcript(bad))
Run to execute this in your browser. Nothing is sent to a server.