← Lesson
Nested Data (Traces)
Joeven
Run
Reset
Python loads on first run
trace = { "goal": "book a flight", "steps": [ {"role": "user", "content": "book a flight to nyc"}, { "role": "assistant", "tool": "search", "args": {"q": "flights nyc"}, }, { "role": "tool", "name": "search", "result": {"ok": True, "hits": ["flight A", "flight B"]}, }, ], } print("goal:", trace["goal"]) print("how many steps:", len(trace["steps"])) print("first role:", trace["steps"][0]["role"]) print("tool name:", trace["steps"][1]["tool"]) print("query:", trace["steps"][1]["args"]["q"]) # Change one field. The rest of the trace stays. trace["steps"][2]["result"]["ok"] = False print("updated ok:", trace["steps"][2]["result"]["ok"]) print("hits still there:", trace["steps"][2]["result"]["hits"]) # Safe .get chain: missing keys do not crash print("no meta:", trace.get("meta", {}).get("source", "missing")) steps = trace.get("steps", []) first = {} if steps: first = steps[0] print("first content:", first.get("content", "")) print("no thought:", first.get("thought", "")) print("last step:", steps[-1] if steps else {}) for i, step in enumerate(steps, start=1): print(i, step.get("role", "?"), step.get("tool") or step.get("name") or "") result = steps[2].get("result") if len(steps) > 2 else None if isinstance(result, dict): print("result ok field:", result.get("ok")) else: print("result was not a dict:", result)
Run to execute this in your browser. Nothing is sent to a server.