← Lesson
Tracing and Observability
Joeven
Run
Reset
Python loads on first run
import json spans = [] def span(name, parent, attrs, dur_ms): rec = {"name": name, "parent": parent, "dur_ms": dur_ms} rec.update(attrs) spans.append(rec) return rec span("job.run", None, {"job_id": "job_17", "tenant": "acme"}, 0) span("llm.complete", "job.run", {"model": "fake-small", "tokens_in": 900, "tokens_out": 40, "usd_est": 0.002}, 420) span("tool.search_kb", "job.run", {"ok": True, "usd_est": 0.0}, 80) span("llm.complete", "job.run", {"model": "fake-small", "tokens_in": 1200, "tokens_out": 60, "usd_est": 0.003}, 510) def summarize(rows): llm = [s for s in rows if s["name"] == "llm.complete"] tools = [s for s in rows if s["name"].startswith("tool.")] return { "llm_ms": sum(s["dur_ms"] for s in llm), "tool_ms": sum(s["dur_ms"] for s in tools), "usd": round(sum(s.get("usd_est", 0) for s in rows), 6), "llm_calls": len(llm), } print(json.dumps(spans, indent=2)) print("SUMMARY", summarize(spans))
Run to execute this in your browser. Nothing is sent to a server.