← Lesson
Traces and Replay
Joeven
Run
Reset
Python loads on first run
import json import hashlib def digest(obj): blob = json.dumps(obj, sort_keys=True) return hashlib.sha256(blob.encode()).hexdigest()[:8] def record(trace, event): event = dict(event) if "result" in event: event["result_digest"] = digest(event["result"]) text = json.dumps(event["result"]) event["result_excerpt"] = text[:80] trace.append(event) def replay(trace, tools): mismatches = [] for e in trace: if e.get("type") != "tool": continue got = tools[e["name"]](**e["args"]) d = digest(got) if d != e["result_digest"]: mismatches.append({"name": e["name"], "want": e["result_digest"], "got": d}) return mismatches TOOLS = {"get_job": lambda job_id: {"id": job_id, "status": "failed"}} trace = [] record(trace, {"type": "llm", "raw": "CALL get_job"}) record(trace, {"type": "tool", "name": "get_job", "args": {"job_id": 17}, "result": TOOLS["get_job"](17)}) record(trace, {"type": "stop", "why": "final"}) print("events", [e["type"] for e in trace]) print("replay same world", replay(trace, TOOLS)) TOOLS2 = {"get_job": lambda job_id: {"id": job_id, "status": "ok"}} print("after world change", replay(trace, TOOLS2))
Run to execute this in your browser. Nothing is sent to a server.