Agent SkillsOpenDCAI/DataFlow-WebUI › bench-dataset-evaluator

bench-dataset-evaluator

GitHub

BenchDatasetEvaluator算子用于基准测试中对比预测答案与标准答案,支持数学精确匹配和基于LLM的语义评估两种模式,适用于模型评测流程。

skills/canonical/core_text/eval/bench-dataset-evaluator/SKILL.md OpenDCAI/DataFlow-WebUI

Trigger Scenarios

进行基准测试中的答案正确性评估 需要对比预测结果与Ground Truth

Install

npx skills add OpenDCAI/DataFlow-WebUI --skill bench-dataset-evaluator -g -y
More Options

Non-standard path

npx skills add https://github.com/OpenDCAI/DataFlow-WebUI/tree/main/skills/canonical/core_text/eval/bench-dataset-evaluator -g -y

Use without installing

npx skills use OpenDCAI/DataFlow-WebUI@bench-dataset-evaluator

指定 Agent (Claude Code)

npx skills add OpenDCAI/DataFlow-WebUI --skill bench-dataset-evaluator -a claude-code -g -y

安装 repo 全部 skill

npx skills add OpenDCAI/DataFlow-WebUI --all -g -y

预览 repo 内 skill

npx skills add OpenDCAI/DataFlow-WebUI --list

SKILL.md

Frontmatter
{
    "name": "bench-dataset-evaluator",
    "description": "Reference documentation for the BenchDatasetEvaluator operator. Covers the constructor, two comparison modes (match\/semantic), and pipeline usage.\nUse when: comparing predicted answers against ground truth answers in benchmark evaluation."
}

BenchDatasetEvaluator Operator Reference

BenchDatasetEvaluator compares predicted answers against ground truth using two modes: match (math verification) or semantic (LLM-based).

1. Import

from dataflow.operators.core_text import BenchDatasetEvaluator

2. Match Mode

Constructor

BenchDatasetEvaluator(
    eval_result_path=None,
    compare_method="match",
)
Parameter Required Default Description
eval_result_path No Auto-generated Path to save evaluation statistics JSON file
compare_method No "match" Must be "match"
system_prompt No "You are a helpful assistant..." Not used in match mode
llm_serving No None Not used in match mode
prompt_template No AnswerJudgePrompt Not used in match mode

run() Signature

op.run(
    storage=self.storage.step(),
    input_test_answer_key="generated_cot",
    input_gt_answer_key="golden_answer",
)
# returns: [input_test_answer_key, input_gt_answer_key, 'answer_match_result']
Parameter Required Default Description
storage Yes None DataFlowStorage step object
input_test_answer_key No "generated_cot" Column containing predicted answers
input_gt_answer_key No "golden_answer" Column containing ground truth answers

Runtime Logic

  1. Read DataFrame from storage.
  2. Create answer_match_result column initialized to False.
  3. For each row, extract answer using AnswerExtractor and compare with ground truth using math_verify_compare().
  4. Write results to answer_match_result column.
  5. Save statistics to eval_result_path.
  6. Return column list.

Usage Example

from dataflow.operators.core_text import BenchDatasetEvaluator
from dataflow.utils.storage import FileStorage

class MyPipeline:
    def __init__(self):
        self.storage = FileStorage(
            first_entry_file_name="./data/bench.jsonl",
            cache_path="./cache",
            file_name_prefix="step",
            cache_type="jsonl"
        )

        self.evaluator = BenchDatasetEvaluator(
            compare_method="match",
            eval_result_path="./results/match_eval.json"
        )

    def forward(self):
        self.evaluator.run(
            storage=self.storage.step(),
            input_test_answer_key="predicted_answer",
            input_gt_answer_key="ground_truth"
        )

if __name__ == "__main__":
    pipeline = MyPipeline()
    pipeline.forward()

3. Semantic Mode

Constructor

BenchDatasetEvaluator(
    eval_result_path=None,
    compare_method="semantic",
    system_prompt="You are a helpful assistant specialized in evaluating answer correctness.",
    llm_serving=llm_serving,
    prompt_template=None,
)
Parameter Required Default Description
eval_result_path No Auto-generated Path to save evaluation statistics JSON file
compare_method Yes None Must be "semantic"
system_prompt No "You are a helpful assistant..." System prompt for LLM
llm_serving Yes None LLM service object
prompt_template No AnswerJudgePrompt Pass None to use built-in fallback

run() Signature

op.run(
    storage=self.storage.step(),
    input_test_answer_key="generated_cot",
    input_gt_answer_key="golden_answer",
)
# returns: [input_test_answer_key, input_gt_answer_key, 'answer_match_result']
Parameter Required Default Description
storage Yes None DataFlowStorage step object
input_test_answer_key No "generated_cot" Column containing predicted answers
input_gt_answer_key No "golden_answer" Column containing ground truth answers

Runtime Logic

  1. Read DataFrame from storage.
  2. Create answer_match_result column initialized to False.
  3. Skip rows where ground truth is empty/NaN.
  4. Build prompts using only answer and reference_answer fields.
  5. Call LLM to judge correctness.
  6. Parse LLM response for "judgement_result": true/false.
  7. Write results to answer_match_result column.
  8. Save statistics to eval_result_path.
  9. Return column list.

Usage Example

from dataflow.operators.core_text import BenchDatasetEvaluator
from dataflow.serving import APILLMServing_request
from dataflow.utils.storage import FileStorage

class MyPipeline:
    def __init__(self):
        self.storage = FileStorage(
            first_entry_file_name="./data/bench.jsonl",
            cache_path="./cache",
            file_name_prefix="step",
            cache_type="jsonl"
        )

        self.llm_serving = APILLMServing_request(
            api_url="https://api.openai.com/v1/chat/completions",
            key_name_of_api_key="DF_API_KEY",
            model_name="gpt-4o",
            max_workers=10
        )

        self.evaluator = BenchDatasetEvaluator(
            compare_method="semantic",
            llm_serving=self.llm_serving,
            prompt_template=None,
            eval_result_path="./results/semantic_eval.json"
        )

    def forward(self):
        self.evaluator.run(
            storage=self.storage.step(),
            input_test_answer_key="predicted_answer",
            input_gt_answer_key="ground_truth"
        )

if __name__ == "__main__":
    pipeline = MyPipeline()
    pipeline.forward()

4. AnswerJudgePrompt

AnswerJudgePrompt is the default prompt template class for semantic mode.

Important Notes

  1. Default value issue: Constructor default is prompt_template=AnswerJudgePrompt (class, not instance).
  2. Recommended usage: Pass prompt_template=None to use built-in fallback.
  3. Custom template: Pass an instance if you need custom prompts.

Prompt Structure

The prompt template builds a JSON-formatted request:

  • answer: The predicted answer to evaluate
  • reference_answer: The ground truth answer

LLM response must contain:

{
  "judgement_result": true  // or false
}

Custom Template Example

from dataflow.prompts.core_text import AnswerJudgePrompt

custom_prompt = AnswerJudgePrompt()
# Modify if needed

evaluator = BenchDatasetEvaluator(
    compare_method="semantic",
    llm_serving=llm_serving,
    prompt_template=custom_prompt
)

Version History

  • 2e95d40 Current 2026-08-27 09:03

Same Skill Collection

skills/canonical/core_text/eval/bench-dataset-evaluator-question/SKILL.md
skills/canonical/core_text/eval/prompted-evaluator/SKILL.md
skills/canonical/core_text/eval/text2qa-sample-evaluator/SKILL.md
skills/canonical/core_text/eval/unified-bench-dataset-evaluator/SKILL.md
skills/canonical/core_text/filter/general-filter/SKILL.md
skills/canonical/core_text/filter/kcentergreedy-filter/SKILL.md
skills/canonical/core_text/filter/prompted-filter/SKILL.md
skills/canonical/core_text/generate/bench-answer-generator/SKILL.md
skills/canonical/core_text/generate/chunked-prompted-generator/SKILL.md
skills/canonical/core_text/generate/embedding-generator/SKILL.md
skills/canonical/core_text/generate/format-str-prompted-generator/SKILL.md
skills/canonical/core_text/generate/prompted-generator/SKILL.md
skills/canonical/core_text/generate/retrieval-generator/SKILL.md
skills/canonical/core_text/generate/text2multihopqa-generator/SKILL.md
skills/canonical/core_text/refine/pandas-operator/SKILL.md
skills/canonical/core_text/refine/prompted-refiner/SKILL.md
skills/canonical/core_text/SKILL.md
skills/canonical/dataflow-dev/SKILL.md
skills/canonical/dataflow-operator-builder/SKILL.md
skills/canonical/generating-dataflow-pipeline/SKILL.md
skills/canonical/prompt-template-builder/SKILL.md
skills/canonical/core_text/generate/random-domain-knowledge-row-generator/SKILL.md

Metadata

Files
0
Version
2e95d40
Hash
f67952a9
Indexed
2026-08-27 09:03

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-28 01:24
浙ICP备14020137号-1 $Map of visitor$