feat(scorer): add claim_support scorer (#4143)#4166
Conversation
|
Reading the diff, the thing I cared most about survived intact: the rubric won't let absence of evidence pass as support, so a claim like "I made no network calls" only lands as SUPPORTED when the transcript can actually represent that class of event. That's the whole reason this scorer earns its place, and having it spelled out in the template instead of left to the grader's discretion is reassuring. Mapping SUPPORTED/PARTIAL/UNSUPPORTED onto CORRECT/PARTIAL/INCORRECT, with NOANSWER on a parse failure, keeps it consistent with the other model-graded scorers, and the additive shape makes it easy to reason about. Where I'd push a little is that the boundary lives in the prompt today, so it holds only as long as the grader honours it. A test that drives the negative-claim case directly would make it stick: a "no network calls" claim against a transcript with no network-event surface, asserted to come back not-CORRECT. That locks the absence-isn't-support rule the way the malformed-grader case is already locked, and it's the regression I'd least want to discover after the fact. The merge call is the maintainers' to make, not mine. From where I sit as the person who raised the issue, this is the shape I was hoping for, and it's good to see it come through the flow. |
|
Thanks — that case is already covered. One honest limit: these lock the grade→score mapping, not grader fidelity — i.e. they prove PARTIAL/UNSUPPORTED map to non-CORRECT, not that a real grader never returns SUPPORTED for an absence claim. That last property isn't deterministically unit-testable with a mock grader, so it's left to the rubric wording rather than a test. |
|
Thanks for this PR. After considering it, I think this better fits an external package. While I think this represents a real need, I don't think there is an established approach to addressing that we can canonicalize within Inspect. An external package will allow this to evolve and grow more easily, and if/when it is stable and widely used we can roll it from extension into Inspect core. |
|
Packaged it as an extension per your suggestion — |
Draft for #4143. Opening as draft per the issue author's note that maintainers own the in-tree decision.
Adds a
claim_supportscorer that assesses whether a claimed answer is substantiated by the conversation transcript, rather than whether it is correct in absolute terms — the faithfulness/support distinction raised in the issue.Design (incorporating the issue thread):
_claim_support.py+ export, no changes to existing scorers.model_graded_qa/model_graded_factsilently default toINCORRECTwhen the judge's verdict doesn't match the grade regex #4026/fix(scorer): mark model_graded grade-parse failure as unscored (not INCORRECT) #4048). No parallel score vocabulary.templateandmodel; explanation preserves the grader response and metadata preserves both the grader prompt and the parsed grade.Happy to adjust rubric wording, add a transcript renderer hook consistent with
include_history, or move out-of-tree as a package if maintainers prefer.