Idea: a devops-bench ↔ EvalPort adapter for portable benchmark results #131
adhabnr-ux
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi — I maintain EvalPort, an open interchange spec (
TestCase/Grader/Result/ResultSet/GraderResult, Apache 2.0, Python + TS SDKs) for making LLM/agent eval data portable across frameworks. Posting this as a discussion rather than an issue since it's a "does this interest anyone" question, not a scoped work item yet.I read the real source before writing this (not just the README):
devops_bench/core/results.py'sStatusenum (PASSED/FAILED/ERROR/SKIPPED) andResult(status,reason,elapsed_sec,details,.ok), plusdevops_bench/verification/spec.py'sVerificationEntry(name,role: objective|safeguard,severity,weight,check) and a real task (tasks/common/opa-remediation/task.yaml) to see howprompt+verification_specactually look in practice.The shapes line up well:
prompt(rendered) → EvalPortTestCase.input;expected_output(your judge rubric text) →TestCase.expected_output.VerificationEntry→ one EvalPortGrader(type: "custom"), withrole/severity/weightcarried ingrader.paramssince EvalPort has no first-class equivalent for "safeguard vs. objective, weighted."Result→ oneGraderResult:passed = result.ok,scorederived fromweightwhen passed,reason = result.reason, withstatus/elapsed_sec/detailspreserved undermetadata.devops_benchrather than dropped.GraderResultlist for a task → EvalPortResultSet.results[i]; a whole benchmark session → theResultSet.The closest real precedent in EvalPort's own adapter set is
deepeval-openeval-adapter(verified real code, not a scaffold) — it does the same "many framework-native check objects → oneGraderResulteach, framework specifics preserved inmetadata" translation for DeepEval'sMetricData. Yourrole/severity/weightscoring model is actually closer to what EvalPort'sTestCasewas shaped for than most adapters need, since nothing here has to be invented.Rough sketch of the two conversions:
Motivation, concretely: this would let a devops-bench run be reported in a format other eval tooling (or a dashboard, or a comparison against a non-K8s benchmark) can consume without writing devops-bench-specific parsing — and conversely, an EvalPort-shaped suite could seed new devops-bench tasks. Happy to build this as a standalone adapter package (zero footprint on this repo, same pattern as the DeepEval one) and open a PR if there's interest — just didn't want to send a PR cold without checking this is wanted first, especially since I see the CLA requirement in CONTRIBUTING.md.
Does this seem useful, and if so, is a standalone
devops-bench-openeval-adapter(living in the EvalPort repo, depending ondevops-benchas a library) the right shape, or would maintainers rather see conversion helpers live in-tree here instead?— Sahi, independent contributor (not affiliated with this project)
All reactions