Enable users to define custom output schemas for `judge_input_output` and `judge_output` functions, moving beyond the fixed `GradingOutput` to allow for more structured and programmatically actionable `reason` fields.
### Description `judge_input_output` and `judge_output` currently return a fixed `GradingOutput(pass_: bool, reason: str, score: float)`. The `reason` field is a free-text string produced by the LLM, which makes it hard to act on programmatically. A common pattern when using these functions inside an `output_validator` is to raise `ModelRetry(grading.reason)` — but because reason is unstructured, the retry message is vague and doesn't point the model to the specific field or rule that failed. Feature request: add an optional `output_type` parameter to `judge_input_output` and `judge_output` that accepts a custom Pydantic model as the judge's `output` schema, similar to how `Agent(output_type=...)` works. This would allow callers to define structured grading output with typed fields such as: ```python class StructuredGrading(BaseModel): pass_: bool failed_rules: list[str] field_paths: list[str] reason: str ``` Callers could then build precise `ModelRetry` messages t