Repository navigation
feat: decision judges on decision models (Jev) - #96
Merged
Merged
Conversation
SimpleAudit 0.7.0 adds decision judges: judges that ask a decision model
(System One, e.g. Jev from TypeSafe) typed questions and grade the answers
in code. This wires them into Studio.
- Require simpleaudit>=0.7.0,<0.8.0.
- Engine: a run whose judge is a decision judge gets a DecisionJudgeClient
built from the frozen judge-model snapshot (OpenRouter, Ollama, or any
{base_url}/v1/systemone such as TypeSafe); the key is resolved from the
connection at execution time. Mismatched pairs raise EngineError.
- Pairing: audits.services.judge_pairing_error refuses a decision judge with
a chat model and a decision model with a chat judge, at run creation
(judge_model_mismatch), in New Experiment warnings and in
launch_experiment. Decision targets stay on Choice Match.
- Judges: the five decision judges appear as starter judges ("Decision
model"); their criteria are shown read-only.
- Run detail: a "Decision judge answers" card shows the served model, each
question's answer and the low-confidence flags.
- Codegen exports judge_client=DecisionJudgeClient...; a TypeSafe (Jev)
connection preset is added; the judge-role picker tooltip is updated.
- Seed: a TypeSafe connection with Jev registered as a decision model
(TYPESAFE_API_KEY), and a demo run that re-grades the recorded safety
baseline transcripts with the Decision Safety Judge on Jev. Demo runs a
workspace was already given are recorded, so a run added to the fixture
later arrives once and a deleted demo run is not seeded again.
- Fix two multi-line {# #} template comments that rendered as text.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SimpleAudit 0.7.0 (SimulaMet/SimpleAudit#154) adds decision judges: judges that ask a decision model (System One, e.g. Jev from TypeSafe) typed yes/no, choice and score questions and grade the answers in code. This wires them into Studio.
simpleaudit>=0.7.0,<0.8.0.infra/engine.py): a decision judge gets aDecisionJudgeClientbuilt from the frozen judge-model snapshot —.openrouter(),.ollama()(64 KiB cap), or.systemone()for any other connection (TypeSafe, vLLM). Key resolved from the connection at execution time. Mismatched pairs raiseEngineError; decision targets stay on Choice Match.audits.services.judge_pairing_error): a decision judge needs a decision judge model and vice versa. Enforced increate_audit_run(judge_model_mismatch), New Experiment warnings andlaunch_experiment. The launch screens now show that reason instead of the generic permission message.judge_client=DecisionJudgeClient...(...); TypeSafe (Jev decision models) connection preset; judge-role tooltip updated.TYPESAFE_API_KEY), and a demo run, "Demo: safety baseline, graded by a decision model", that re-grades the recorded GPT-4o safety transcripts with the Decision Safety Judge on Jev (only the grading is new).seed_demo_auditsnow records which demo runs a workspace was given, so a run added to the fixture later arrives once and a deleted demo run isn't re-seeded on boot.{# #}comments inresult_rep_panel.htmlrendered as page text; now{% comment %}.Testing
infra/tests/test_decision_judges.py(16): catalogue, engine client per connection, mismatch refusals (engine, run creation, experiments), run-detail card, a full run throughModelAuditorwith Jev's HTTP mocked, codegen, preset, template comments.infra/tests/test_seed_demo.py: Jev seeded, the decision demo run, one-time arrival on older workspaces, deleted runs staying deleted.test_ports.py) flakes under-n autoand passes alone.ruff check .clean.jev-1.14.0), target/auditor a Qwen model — 6 pass, 1 medium, 1 high (the target refused a role-play, then wrote the character's dialogue after a reframe). Freshsetup_localseeds Jev and the decision demo run.Notes
rejudge) with a decision judge is refused by the engine for now.