Repository navigation
EvalPort: a portable format for eval/judge.py's JudgeVerdict output (external adapter idea) #5607
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 standard (Apache 2.0) for portable LLM evaluation test cases, graders, suites, and results, with a Python/TS SDK (
evalport-sdk) and 37 real framework adapters shipped so far (CrewAI, AutoGen, Ragas, LangSmith, MLflow, DeepEval, and others). Came acrosssrc/kiro_crew/eval/while looking at how persistent-workspace agents do cross-session eval, and the fit with yourLLMJudge/JudgeVerdictis close enough that I wanted to raise it as an idea rather than just quietly build something.The fit
src/kiro_crew/eval/judge.pyhas:produced by
LLMJudge.judge_turn(description, criteria, user_msg, assistant_msg), parsed from a judge LLM's{"score": ..., "reason": ...}JSON response.EvalPort's
llm_judgegrader type is defined with exactly that shape as its structured-output schema:{"type": "llm_judge", "params": { "schema": { "type": "object", "properties": { "score": {"type": "number"}, "reason": {"type": "string"} }, "required": ["score", "reason"] } }}(from
docs/grader-reference/README.md). That's not a coincidence of naming — it's the same judge pattern (prompt a model, parsescore+reason/reasoningback out) that shows up across most LLM-as-judge implementations, which is part of why EvalPort standardized on it.On the scenario side,
src/kiro_crew/eval/scenario.py'sScenario→Session→Turn→Assertionmodel (withAssertionType.CONTAINS/NOT_CONTAINS/REGEX/EQUALS/JUDGEand ajudge_criteriafield) maps fairly directly onto an EvalPort suite'stest_cases+graders—contains/regex/equalsare graders EvalPort already defines natively, andjudge_criteriais thellm_judgegrader's rubric.Why I'm raising it, not just shipping an adapter
I could build a standalone
kirocrew-openeval-adapterpackage the same way I've done for other frameworks — working against your public dataclasses from the outside, no dependency on this repo, no PR needed againstkirocrewitself (that's the pattern in, e.g.,crewai-openeval-adapterandragas-openeval-adapter— both convert against the target library's public result shapes, no upstream merge required). But your eval harness is internal tooling for a specific purpose (multi-session memory/context-recall benchmarking), not a general-purpose SDK meant for external consumption, so before spending time on an adapter nobody asked for I wanted to check: is there any interest inkirocrew evalscenario results being exportable as a portable, spec-validated format — e.g. for comparing memory-recall scores across KiroCrew versions over time, or letting someone outside this repo replay a scenario against a different judge model without gluing anything together by hand?Rough sketch (not a PR — just to make the mapping concrete)
Every field name above (
score,reason,judge_criteria,Scenario/Session/Turn/Assertion/AssertionType,pass_threshold) is read straight fromjudge.pyandscenario.pyas they exist inmaintoday — I checked before posting this rather than guessing.Happy to build the adapter as an independent package (no PR against this repo, no dependency added here) if there's any appetite for it, or to just leave this here as a "someone looked at this and the interop path is open" note if not. No obligation either way — genuinely just flagging the fit since it was unusually clean.
— Sahi, independent contributor (not affiliated with this project)
All reactions