promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_

Getting JSON back — make the model return data, not prose — step 9 of 9

Checkpoint

One last thing before we move on. pass this to mark the lesson done, or skip and keep moving. hop to the next when you're ready.

Final drill. Write safe_extract(raw) that parses a JSON string the model returned and validates a Ticket shape:

  • email must be a non-empty str
  • severity must be an int between 1 and 5 inclusive

If any check fails, return the dict {"ok": False, "error": "<reason>"} where <reason> is one of "bad json", "missing email", "bad severity". On success, return {"ok": True, "data": <parsed dict>}.

Then the script will run it on three inputs and print the result of each. Expected output:

ok=True [email protected]
ok=False error=missing email
ok=False error=bad severity

full-screen editor opens — close anytime to keep reading.