feat: expose evaluator row status for LLM evaluators - #11333
Conversation
|
@SeCuReDmE-main-dev is attempting to deploy a commit to the deepset Team on Vercel. A member of the Team first needs to authorize it. |
|
Phase 2 base work is complete and stacked on top of this Phase 1 branch. Downstream stacked PR: SeCuReDmE-main-dev#1 |
|
Phase 3 base work is complete and the stacked progression now reaches explicit HITL decision contracts. Downstream stacked PR: SeCuReDmE-main-dev#2 |
Pause boundary — awaiting maintainer feedbackAll three stacked phases are now validated and documented:
All branches pass No further work will be performed until maintainers respond. The next action depends entirely on your feedback — whether that is naming guidance, scope adjustment, acceptance, or rejection. The corresponding RFC is #11332. Happy to answer any questions. |
|
@coderabbitai review |
anakin87
left a comment
There was a problem hiding this comment.
Sorry for the long delay and thanks for your work.
First of all, I'd not modify LLMEvaluator: a user can already just check results[i] is None.
I'd focus on inheriting evaluators instead, where evaluation status might get wrongly discarded.
There, I'd add status to the results dict. Something like this in _postprocess_results:
for idx, res in enumerate(result["results"]):
if res is None:
result["results"][idx] = {"statements": [], "statement_scores": [], "score": float("nan"), "status": "error"}
continue
res["status"] = "evaluated"
...This would not require modifying @component.output_types.
Also, since _postprocess_results is shared by run and run_async, this will work on both paths.
Feel free to modify this PR or open another one.
|
This was part of the rfc #11332 can you please judge the entire thing over there and write me what you desire more clearly it will be a pleasure for me to help you guys |
Yes, I skimmed that. For the moment, I suggest just doing what I proposed in #11333 (review): it's a small contribution but already improves things. |
|
Perfect im not home i will do when im home this will be done by the end of today thanks you |
|
im on it |
|
While I have your attention, this project is published on the Neutrosophic Science International Association website.
I also have an ongoing study related to Haystack, with a published white paper available here. Finally, I created a cool tool that I think you may find useful: Neutrosophic Lab VM Public Guide. Go check it out! ^_- |
6afd6db to
4625ab8
Compare
|
Updated the PR with the scoped change you proposed: status is now preserved inside the ContextRelevanceEvaluator and FaithfulnessEvaluator result dictionaries, with no LLMEvaluator output change. Sync/async and success, zero-score, generation/parsing, partial-failure, and all-failure cases are covered. The focused local evaluator suites pass; CI is running. |
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
||||||||||||||||||||||||||||||||||||

Summary
This is Phase 1 for RFC #11332.
It adds a narrow top-level
evaluation_statusesoutput toLLMEvaluatorresults so callers can distinguish rows that were successfully evaluated from rows that failed during generation or parsing whenraise_on_failure=Falseis used.Scope
Included:
LLMEvaluatornow returnsevaluation_statusesalongside existingresultsandmeta.evaluated.raise_on_failure=Falseare marked aserror.ContextRelevanceEvaluatorandFaithfulnessEvaluatorpass through the new status list while preserving their currentnanbehavior.releasenotes/notes.Intentionally excluded:
EvaluationRunResultreporting changes;indeterminatestatus yet;Phase 2 and Phase 3 remain dependent on maintainer feedback from the RFC and this PR.
Tests
Results:
38 passed, 2 skippedruff check: passedruff format --check: passedreno lint: passed