eval-framework 0.10.0__tar.gz → 0.10.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {eval_framework-0.10.0 → eval_framework-0.10.4}/PKG-INFO +5 -7
- {eval_framework-0.10.0 → eval_framework-0.10.4}/README.md +0 -2
- eval_framework-0.10.4/pyproject.toml +162 -0
- eval_framework-0.10.0/pyproject.toml → eval_framework-0.10.4/pyproject.toml.orig +7 -7
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/base.py +50 -48
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/humaneval.py +31 -2
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +43 -6
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/eval_config.py +1 -3
- eval_framework-0.10.4/src/eval_framework/tasks/lazy.py +56 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/markdown_doc.py +0 -3
- eval_framework-0.10.4/src/eval_framework/tasks/registry.py +164 -0
- eval_framework-0.10.4/src/eval_framework/tasks/task.py +104 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/task_names.py +4 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/template_formatting/formatter.py +8 -6
- eval_framework-0.10.0/src/eval_framework/tasks/registry.py +0 -310
- {eval_framework-0.10.0 → eval_framework-0.10.4}/LICENSE +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/base_config.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/context/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/context/determined.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/context/eval.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/context/local.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/evaluation_generator.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/exceptions.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/drop_process_results.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/README.md +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/aleph_alpha.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/base.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/huggingface.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/models.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/llm/openai.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/logger.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/main.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/base.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/csv_format.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/f1.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/format_checker.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/ifeval.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/json_format.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/language_checker.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/length_control.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/repetition.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/completion/text_counter.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/base.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/language.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/models.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/llm/utils.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/py.typed +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/response_generator.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/result_processors/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/result_processors/base.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/result_processors/hf_uploader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/result_processors/result_processor.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/run.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/run_direct.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/shared/types.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/suite.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/arc.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/arc_de.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/arc_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/copa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/csqa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/csqa_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/drop.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/goldenswag.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gpqa_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/hellaswag.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/hellaswag_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/hle_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/medqa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mmlu.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/piqa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/piqa_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/sciq.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/simpleqa_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/siqa_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/squad.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/winogrande.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/winogrande_ellamind.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/dataset_revisions.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/hf-dataset-revisions.json +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/task_loader.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/task_style.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/utils.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/constants.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/file_ops.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/helpers.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/logging.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/packaging.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/utils/tqdm_handler.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/template_formatting/README.md +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/template_formatting/__init__.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/template_formatting/mistral_formatter.py +0 -0
- {eval_framework-0.10.0 → eval_framework-0.10.4}/src/template_formatting/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: eval-framework
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.4
|
|
4
4
|
Summary: Evaluation Framework
|
|
5
5
|
Author: Aleph Alpha Research
|
|
6
6
|
License: Apache License
|
|
@@ -218,7 +218,7 @@ Requires-Dist: xmltodict>=1.0.4,<1.1
|
|
|
218
218
|
Requires-Dist: pydantic>=2.13.4,<3
|
|
219
219
|
Requires-Dist: datasets>=5.0.1,<6
|
|
220
220
|
Requires-Dist: pycountry>=26.2.16,<27
|
|
221
|
-
Requires-Dist: nltk>=3.10.
|
|
221
|
+
Requires-Dist: nltk>=3.10.3,<4
|
|
222
222
|
Requires-Dist: python-dotenv>=1.2.2,<2
|
|
223
223
|
Requires-Dist: lingua-language-detector>=2.2.0,<3
|
|
224
224
|
Requires-Dist: google-crc32c>=1.8.0,<2
|
|
@@ -231,8 +231,8 @@ Requires-Dist: llm-sandbox[docker]==0.3.44
|
|
|
231
231
|
Requires-Dist: jsonlines>=4,<5
|
|
232
232
|
Requires-Dist: lxml>=6.1.1,<7
|
|
233
233
|
Requires-Dist: python-iso639>=2026.7.23
|
|
234
|
-
Requires-Dist: wandb>=0.28.
|
|
235
|
-
Requires-Dist: boto3>=1.43.
|
|
234
|
+
Requires-Dist: wandb>=0.28.2,<1
|
|
235
|
+
Requires-Dist: boto3>=1.43.72,<2
|
|
236
236
|
Requires-Dist: numpy>=2.5.2
|
|
237
237
|
Requires-Dist: antlr4-python3-runtime==4.11.0
|
|
238
238
|
Requires-Dist: scipy>=1.18.0,<2
|
|
@@ -241,7 +241,7 @@ Requires-Dist: eval-framework[determined,api,openai,transformers,accelerate,opti
|
|
|
241
241
|
Requires-Dist: aleph-alpha-client>=11.5.1 ; extra == 'api'
|
|
242
242
|
Requires-Dist: determined>=0.38.1,<0.39 ; extra == 'determined'
|
|
243
243
|
Requires-Dist: tensorboard==2.21.0 ; extra == 'determined'
|
|
244
|
-
Requires-Dist: openai>=
|
|
244
|
+
Requires-Dist: openai>=3.1.0,<4 ; extra == 'openai'
|
|
245
245
|
Requires-Dist: tiktoken>=0.13.0,<1 ; extra == 'openai'
|
|
246
246
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'openai'
|
|
247
247
|
Requires-Dist: transformers>=4.45.2,<5 ; extra == 'optional'
|
|
@@ -315,8 +315,6 @@ There are optional extras available to unlock specific features of the library:
|
|
|
315
315
|
|
|
316
316
|
As a short hand, the `all` extra installs all of the above.
|
|
317
317
|
|
|
318
|
-
For local vLLM inference, see the sibling [`local-vllm-server/`](./local-vllm-server/README.md) package.
|
|
319
|
-
|
|
320
318
|
We use `uv` to better resolve dependencies when downloading the extras. You can install uv with:
|
|
321
319
|
```bash
|
|
322
320
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -53,8 +53,6 @@ There are optional extras available to unlock specific features of the library:
|
|
|
53
53
|
|
|
54
54
|
As a short hand, the `all` extra installs all of the above.
|
|
55
55
|
|
|
56
|
-
For local vLLM inference, see the sibling [`local-vllm-server/`](./local-vllm-server/README.md) package.
|
|
57
|
-
|
|
58
56
|
We use `uv` to better resolve dependencies when downloading the extras. You can install uv with:
|
|
59
57
|
```bash
|
|
60
58
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "eval-framework"
|
|
3
|
+
version = "0.10.4"
|
|
4
|
+
description = "Evaluation Framework"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12,<3.15"
|
|
7
|
+
classifiers = [
|
|
8
|
+
"Operating System :: OS Independent",
|
|
9
|
+
"License :: OSI Approved :: Apache Software License",
|
|
10
|
+
"Programming Language :: Python",
|
|
11
|
+
"Programming Language :: Python :: 3.12",
|
|
12
|
+
"Programming Language :: Python :: 3.13",
|
|
13
|
+
"Programming Language :: Python :: 3.14",
|
|
14
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
15
|
+
"Topic :: Software Development :: Libraries",
|
|
16
|
+
"Typing :: Typed",
|
|
17
|
+
]
|
|
18
|
+
dependencies = [
|
|
19
|
+
"pyyaml>=6.0.3,<7",
|
|
20
|
+
"xmltodict>=1.0.4,<1.1",
|
|
21
|
+
"pydantic>=2.13.4,<3",
|
|
22
|
+
"datasets>=5.0.1,<6",
|
|
23
|
+
"pycountry>=26.2.16,<27",
|
|
24
|
+
"nltk>=3.10.3,<4",
|
|
25
|
+
"python-dotenv>=1.2.2,<2",
|
|
26
|
+
"lingua-language-detector>=2.2.0,<3",
|
|
27
|
+
"google-crc32c>=1.8.0,<2",
|
|
28
|
+
"langdetect>=1.0.9,<2",
|
|
29
|
+
"jsonschema>=4.26.0,<5",
|
|
30
|
+
"mysql-connector-python>=26.7.0,<27",
|
|
31
|
+
"psycopg2-binary>=2.9.12,<3",
|
|
32
|
+
"sympy>=1.14.0,<2",
|
|
33
|
+
"llm-sandbox[docker]==0.3.44",
|
|
34
|
+
"jsonlines>=4,<5",
|
|
35
|
+
"lxml>=6.1.1,<7",
|
|
36
|
+
"python-iso639>=2026.7.23",
|
|
37
|
+
"wandb>=0.28.2,<1",
|
|
38
|
+
"boto3>=1.43.72,<2",
|
|
39
|
+
"numpy>=2.5.2",
|
|
40
|
+
"antlr4-python3-runtime==4.11.0",
|
|
41
|
+
"scipy>=1.18.0,<2",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[project.license]
|
|
45
|
+
file = "LICENSE"
|
|
46
|
+
|
|
47
|
+
[[project.authors]]
|
|
48
|
+
name = "Aleph Alpha Research"
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
determined = [
|
|
52
|
+
"determined>=0.38.1,<0.39",
|
|
53
|
+
"tensorboard==2.21.0",
|
|
54
|
+
]
|
|
55
|
+
api = ["aleph-alpha-client>=11.5.1"]
|
|
56
|
+
openai = [
|
|
57
|
+
"openai>=3.1.0,<4",
|
|
58
|
+
"tiktoken>=0.13.0,<1",
|
|
59
|
+
"transformers>=4.45.2,<5",
|
|
60
|
+
]
|
|
61
|
+
transformers = [
|
|
62
|
+
"transformers>=4.45.2,<5",
|
|
63
|
+
"torch>=2.13.0,<3",
|
|
64
|
+
"accelerate>=1.14.0,<2",
|
|
65
|
+
]
|
|
66
|
+
accelerate = ["accelerate"]
|
|
67
|
+
optional = [
|
|
68
|
+
"transformers>=4.45.2,<5",
|
|
69
|
+
"jinja2>=3.1.6,<4",
|
|
70
|
+
]
|
|
71
|
+
all = ["eval_framework[determined,api,openai,transformers,accelerate,optional]"]
|
|
72
|
+
|
|
73
|
+
[project.urls]
|
|
74
|
+
repository = "https://github.com/Aleph-Alpha-Research/eval-framework"
|
|
75
|
+
|
|
76
|
+
[project.scripts]
|
|
77
|
+
eval_framework = "eval_framework.run:run"
|
|
78
|
+
|
|
79
|
+
[dependency-groups]
|
|
80
|
+
dev = [
|
|
81
|
+
"mypy>=2.3.0,<3",
|
|
82
|
+
"pytest>=9.1.1,<10",
|
|
83
|
+
"pytest-mock>=3.15.1",
|
|
84
|
+
"pytest-xdist>=3.8.0,<4",
|
|
85
|
+
"pytest-sugar>1.1,<2",
|
|
86
|
+
"types-pyyaml>=6.0.12.20260724,<7",
|
|
87
|
+
"types-python-dateutil>=2.9.0.20260807,<3",
|
|
88
|
+
"types-requests>=2.33.0.20260712,<3",
|
|
89
|
+
"plotly>=6.9.0,<7",
|
|
90
|
+
"ruff>=0.16.3",
|
|
91
|
+
"pip-licenses>=5.5.5",
|
|
92
|
+
]
|
|
93
|
+
flash-attn = [
|
|
94
|
+
"flash-attn>=2.8.3.post1,<2.9",
|
|
95
|
+
"torch",
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[build-system]
|
|
99
|
+
requires = ["uv_build>=0.12.5,<0.12.6"]
|
|
100
|
+
build-backend = "uv_build"
|
|
101
|
+
|
|
102
|
+
[tool.uv]
|
|
103
|
+
override-dependencies = ["requests>=2.32,<3"]
|
|
104
|
+
|
|
105
|
+
[tool.uv.build-backend]
|
|
106
|
+
module-name = [
|
|
107
|
+
"eval_framework",
|
|
108
|
+
"template_formatting",
|
|
109
|
+
]
|
|
110
|
+
|
|
111
|
+
[[tool.uv.extra-build-dependencies.flash-attn]]
|
|
112
|
+
requirement = "torch"
|
|
113
|
+
match-runtime = true
|
|
114
|
+
|
|
115
|
+
[tool.ruff]
|
|
116
|
+
line-length = 120
|
|
117
|
+
|
|
118
|
+
[tool.ruff.lint]
|
|
119
|
+
select = [
|
|
120
|
+
"E",
|
|
121
|
+
"F",
|
|
122
|
+
"UP",
|
|
123
|
+
"I",
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
[tool.ruff.lint.isort]
|
|
127
|
+
known-third-party = ["wandb"]
|
|
128
|
+
|
|
129
|
+
[tool.ruff.lint.extend-per-file-ignores]
|
|
130
|
+
"__init__.py" = ["F401"]
|
|
131
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_csqa_ellamind.py" = ["E501"]
|
|
132
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gpqa_ellamind.py" = ["E501"]
|
|
133
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_gsm8k_ellamind.py" = ["E501"]
|
|
134
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hendrycks_math_ellamind.py" = ["E501"]
|
|
135
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_hle_ellamind.py" = ["E501"]
|
|
136
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_mbpp_ellamind.py" = ["E501"]
|
|
137
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_piqa_ellamind.py" = ["E501"]
|
|
138
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_siqa_ellamind.py" = ["E501"]
|
|
139
|
+
"tests/tests_eval_framework/tasks/benchmarks/test_winogrande_ellamind.py" = ["E501"]
|
|
140
|
+
|
|
141
|
+
[tool.mypy]
|
|
142
|
+
plugins = "pydantic.mypy"
|
|
143
|
+
disallow_untyped_defs = true
|
|
144
|
+
ignore_missing_imports = true
|
|
145
|
+
files = [
|
|
146
|
+
"src",
|
|
147
|
+
"utils",
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
[tool.pytest.ini_options]
|
|
151
|
+
testpaths = ["./tests"]
|
|
152
|
+
minversion = 8.0
|
|
153
|
+
addopts = "-p 'no:legacypath' --doctest-modules -n auto"
|
|
154
|
+
markers = [
|
|
155
|
+
"gpu: needs a GPU runner, otherwise test can not be run",
|
|
156
|
+
"cpu_slow: runs for a long time (on CPU)",
|
|
157
|
+
"slow_download: smoke tests that download large datasets (>15s); excluded from CI, run manually with -m slow_download",
|
|
158
|
+
"external_api: needs external services for execution",
|
|
159
|
+
"formatter_hash: formatter consistency tests using hash comparisons",
|
|
160
|
+
]
|
|
161
|
+
filterwarnings = ["ignore::DeprecationWarning:datasets.utils._dill:"]
|
|
162
|
+
env = ["WANDB_MODE = disabled"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "eval-framework"
|
|
3
|
-
version = "0.10.
|
|
3
|
+
version = "0.10.4"
|
|
4
4
|
description = "Evaluation Framework"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -25,7 +25,7 @@ dependencies = [
|
|
|
25
25
|
"pydantic>=2.13.4,<3",
|
|
26
26
|
"datasets>=5.0.1,<6",
|
|
27
27
|
"pycountry>=26.2.16,<27",
|
|
28
|
-
"nltk>=3.10.
|
|
28
|
+
"nltk>=3.10.3,<4",
|
|
29
29
|
"python-dotenv>=1.2.2,<2",
|
|
30
30
|
"lingua-language-detector>=2.2.0,<3",
|
|
31
31
|
"google-crc32c>=1.8.0,<2",
|
|
@@ -38,8 +38,8 @@ dependencies = [
|
|
|
38
38
|
"jsonlines>=4,<5",
|
|
39
39
|
"lxml>=6.1.1,<7",
|
|
40
40
|
"python-iso639>=2026.7.23",
|
|
41
|
-
"wandb>=0.28.
|
|
42
|
-
"boto3>=1.43.
|
|
41
|
+
"wandb>=0.28.2,<1",
|
|
42
|
+
"boto3>=1.43.72,<2",
|
|
43
43
|
"numpy>=2.5.2",
|
|
44
44
|
# is a dependency of sympy, but not explicitly listed in the requirements.txt
|
|
45
45
|
# https://github.com/sympy/sympy/blob/0204fa34e8f6f6f8ccb4de01209be9a2345c9d6e/doc/src/contributing/dependencies.md?plain=1#L125
|
|
@@ -55,7 +55,7 @@ determined = [
|
|
|
55
55
|
]
|
|
56
56
|
api = ["aleph-alpha-client>=11.5.1"]
|
|
57
57
|
openai = [
|
|
58
|
-
"openai>=
|
|
58
|
+
"openai>=3.1.0,<4",
|
|
59
59
|
"tiktoken>=0.13.0,<1",
|
|
60
60
|
"transformers>=4.45.2,<5",
|
|
61
61
|
]
|
|
@@ -93,7 +93,7 @@ dev = [
|
|
|
93
93
|
"types-python-dateutil>=2.9.0.20260807,<3",
|
|
94
94
|
"types-requests>=2.33.0.20260712,<3",
|
|
95
95
|
"plotly>=6.9.0,<7",
|
|
96
|
-
"ruff>=0.16.
|
|
96
|
+
"ruff>=0.16.3",
|
|
97
97
|
"pip-licenses>=5.5.5",
|
|
98
98
|
]
|
|
99
99
|
flash-attn = [
|
|
@@ -102,7 +102,7 @@ flash-attn = [
|
|
|
102
102
|
]
|
|
103
103
|
|
|
104
104
|
[build-system]
|
|
105
|
-
requires = ["uv_build>=0.
|
|
105
|
+
requires = ["uv_build>=0.12.5,<0.12.6"]
|
|
106
106
|
build-backend = "uv_build"
|
|
107
107
|
|
|
108
108
|
[tool.uv.build-backend]
|
|
@@ -2,7 +2,6 @@ import logging
|
|
|
2
2
|
import os
|
|
3
3
|
import random
|
|
4
4
|
import traceback
|
|
5
|
-
from abc import ABC, abstractmethod
|
|
6
5
|
from collections.abc import Iterable, Sequence
|
|
7
6
|
from enum import Enum
|
|
8
7
|
from pathlib import Path
|
|
@@ -10,11 +9,11 @@ from typing import TYPE_CHECKING, Any, Self, TypeVar
|
|
|
10
9
|
|
|
11
10
|
import iso639
|
|
12
11
|
from datasets import DatasetDict, DownloadConfig, load_dataset
|
|
13
|
-
from pydantic import BaseModel, ConfigDict
|
|
14
12
|
|
|
15
13
|
from eval_framework.shared.types import BaseMetricContext, Completion, Error, RawCompletion
|
|
16
14
|
from eval_framework.tasks.dataset_revisions import pinned_revision
|
|
17
15
|
from eval_framework.tasks.markdown_doc import markdown_doc as render_markdown_doc
|
|
16
|
+
from eval_framework.tasks.task import EvalFactory, ResponseType, Sample, Task
|
|
18
17
|
from eval_framework.tasks.utils import classproperty, raise_errors
|
|
19
18
|
from template_formatting.formatter import BaseFormatter, Message, Role
|
|
20
19
|
|
|
@@ -26,11 +25,6 @@ RANDOM_SEED = 42
|
|
|
26
25
|
NO_SUBJECT = "no_subject"
|
|
27
26
|
|
|
28
27
|
|
|
29
|
-
class ResponseType(Enum):
|
|
30
|
-
COMPLETION = "completion"
|
|
31
|
-
LOGLIKELIHOODS = "loglikelihoods"
|
|
32
|
-
|
|
33
|
-
|
|
34
28
|
class TaskStyle(Enum):
|
|
35
29
|
MULTIPLE_CHOICE = "multiple_choice"
|
|
36
30
|
CLOZE = "cloze"
|
|
@@ -71,51 +65,11 @@ for language in iso639.ALL_LANGUAGES:
|
|
|
71
65
|
Language: type[Enum] = Language.add_members(languages) # type: ignore[no-redef]
|
|
72
66
|
|
|
73
67
|
|
|
74
|
-
class Sample(BaseModel):
|
|
75
|
-
model_config = ConfigDict(extra="forbid")
|
|
76
|
-
id: int
|
|
77
|
-
subject: str
|
|
78
|
-
messages: list[Message]
|
|
79
|
-
ground_truth: str | list[str] | None
|
|
80
|
-
possible_completions: list[str] | None
|
|
81
|
-
context: BaseMetricContext | list[BaseMetricContext] | None = None
|
|
82
|
-
|
|
83
|
-
|
|
84
68
|
SubjectType = TypeVar("SubjectType")
|
|
85
69
|
|
|
86
70
|
logger = logging.getLogger(__name__)
|
|
87
71
|
|
|
88
72
|
|
|
89
|
-
class Task(ABC):
|
|
90
|
-
"""The contract a caller relies on to run an evaluation"""
|
|
91
|
-
|
|
92
|
-
@abstractmethod
|
|
93
|
-
def iterate_samples(self, num_samples: int | None = None) -> Iterable[Sample]: ...
|
|
94
|
-
|
|
95
|
-
@abstractmethod
|
|
96
|
-
def generate_completions(
|
|
97
|
-
self,
|
|
98
|
-
llm: "BaseLLM",
|
|
99
|
-
samples: list[Sample],
|
|
100
|
-
stop_sequences: list[str] | None = None,
|
|
101
|
-
max_tokens: int | None = None,
|
|
102
|
-
fail_on_error: bool = True,
|
|
103
|
-
) -> list[Completion]:
|
|
104
|
-
"""Run ``llm`` over ``samples`` and return their completions."""
|
|
105
|
-
|
|
106
|
-
@abstractmethod
|
|
107
|
-
def get_metadata(self) -> dict[str, str | list[str]]:
|
|
108
|
-
"""Descriptive metadata about the eval for result reporting."""
|
|
109
|
-
|
|
110
|
-
@abstractmethod
|
|
111
|
-
def get_response_type(self) -> ResponseType: ...
|
|
112
|
-
|
|
113
|
-
@abstractmethod
|
|
114
|
-
def display_name(self) -> str:
|
|
115
|
-
"""Human-readable display name. Is allowed to have special characters and whitespaces."""
|
|
116
|
-
...
|
|
117
|
-
|
|
118
|
-
|
|
119
73
|
class BaseTask[SubjectType](Task):
|
|
120
74
|
NAME: str
|
|
121
75
|
DATASET_PATH: str
|
|
@@ -292,7 +246,6 @@ class BaseTask[SubjectType](Task):
|
|
|
292
246
|
|
|
293
247
|
return render_markdown_doc(
|
|
294
248
|
name=self.NAME,
|
|
295
|
-
module=type(self).__module__,
|
|
296
249
|
dataset_path=dataset_path,
|
|
297
250
|
sample_split=getattr(self, "SAMPLE_SPLIT", None),
|
|
298
251
|
fewshot_split=getattr(self, "FEWSHOT_SPLIT", None),
|
|
@@ -547,3 +500,52 @@ def resolve_overwrite_subjects[SubjectType](
|
|
|
547
500
|
)
|
|
548
501
|
|
|
549
502
|
return chosen_subjects
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
class Eager(EvalFactory):
|
|
506
|
+
"""Wraps an already-imported task class."""
|
|
507
|
+
|
|
508
|
+
def __init__(self, task: type[BaseTask]) -> None:
|
|
509
|
+
self._task = task
|
|
510
|
+
|
|
511
|
+
def id(self) -> str:
|
|
512
|
+
return self._task.__name__
|
|
513
|
+
|
|
514
|
+
def create(
|
|
515
|
+
self,
|
|
516
|
+
num_fewshot: int,
|
|
517
|
+
custom_subjects: list[str] | None,
|
|
518
|
+
custom_hf_revision: str | None,
|
|
519
|
+
user_prompt_suffix: str | None = None,
|
|
520
|
+
seed: int | None = None,
|
|
521
|
+
) -> BaseTask:
|
|
522
|
+
return self._task.with_overwrite(
|
|
523
|
+
num_fewshot=num_fewshot,
|
|
524
|
+
custom_subjects=custom_subjects,
|
|
525
|
+
custom_hf_revision=custom_hf_revision,
|
|
526
|
+
user_prompt_suffix=user_prompt_suffix,
|
|
527
|
+
seed=seed,
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
def response_type(self) -> ResponseType:
|
|
531
|
+
"""The eval's response type"""
|
|
532
|
+
return self._task.get_response_type()
|
|
533
|
+
|
|
534
|
+
def metrics(self) -> list[type["BaseMetric"]]:
|
|
535
|
+
"""The eval's metrics"""
|
|
536
|
+
return self._task.get_metrics()
|
|
537
|
+
|
|
538
|
+
def subjects(self) -> list[Any]:
|
|
539
|
+
"""The eval's subjects"""
|
|
540
|
+
return self._task.SUBJECTS
|
|
541
|
+
|
|
542
|
+
def display_name(self) -> str:
|
|
543
|
+
"""The eval's human-readable display name (the task's ``NAME``)."""
|
|
544
|
+
return self._task.NAME
|
|
545
|
+
|
|
546
|
+
def markdown_doc(self, formatters: Sequence[BaseFormatter]) -> str:
|
|
547
|
+
try:
|
|
548
|
+
task = self.create(num_fewshot=1, custom_subjects=None, custom_hf_revision=None, seed=RANDOM_SEED)
|
|
549
|
+
except (TypeError, ValueError, AssertionError):
|
|
550
|
+
task = self.create(num_fewshot=0, custom_subjects=None, custom_hf_revision=None, seed=RANDOM_SEED)
|
|
551
|
+
return task.markdown_doc(formatters)
|
{eval_framework-0.10.0 → eval_framework-0.10.4}/src/eval_framework/tasks/benchmarks/humaneval.py
RENAMED
|
@@ -104,6 +104,25 @@ class HumanEvalBPB(HumanEval):
|
|
|
104
104
|
return [gt] if gt else None
|
|
105
105
|
|
|
106
106
|
|
|
107
|
+
class HumanEvalBPB_V2(HumanEvalBPB):
|
|
108
|
+
"""
|
|
109
|
+
HumanEvalBPB variant that wraps the prompt and canonical solution in markdown code fences
|
|
110
|
+
instead of prefixing the solution with a leading space, so the loglikelihood boundary
|
|
111
|
+
starts on a new line.
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
NAME = "Human Eval BPB V2"
|
|
115
|
+
|
|
116
|
+
def _get_ground_truth(self, item: dict[str, Any]) -> str | None:
|
|
117
|
+
return item["canonical_solution"]
|
|
118
|
+
|
|
119
|
+
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
120
|
+
return "```python\n" + item["prompt"].rstrip() + "\n"
|
|
121
|
+
|
|
122
|
+
def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
|
|
123
|
+
return item["canonical_solution"].rstrip() + "\n```"
|
|
124
|
+
|
|
125
|
+
|
|
107
126
|
class HumanEval_OLMES(HumanEval):
|
|
108
127
|
"""HumanEval OLMES variant replicating codex_humaneval:3shot::olmo3:n32:v2 from oe_eval.
|
|
109
128
|
|
|
@@ -122,10 +141,10 @@ class HumanEval_OLMES(HumanEval):
|
|
|
122
141
|
self.max_tokens = 1024
|
|
123
142
|
|
|
124
143
|
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
125
|
-
return "```python\n" + item["prompt"]
|
|
144
|
+
return "```python\n" + item["prompt"].rstrip()
|
|
126
145
|
|
|
127
146
|
def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
|
|
128
|
-
return item["canonical_solution"] + "```"
|
|
147
|
+
return "\n" + item["canonical_solution"] + "```"
|
|
129
148
|
|
|
130
149
|
|
|
131
150
|
class HumanEvalInstruct(HumanEval):
|
|
@@ -147,3 +166,13 @@ class HumanEvalInstruct(HumanEval):
|
|
|
147
166
|
|
|
148
167
|
def _get_cue_text(self, item: dict[str, Any]) -> str:
|
|
149
168
|
return self.CUE_PREFIX + item["prompt"].lstrip()
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class HumanEval_NL(HumanEval_OLMES):
|
|
172
|
+
NAME = "Human Eval Newline OLMES"
|
|
173
|
+
|
|
174
|
+
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
175
|
+
return "```python\n" + item["prompt"].rstrip() + "\n"
|
|
176
|
+
|
|
177
|
+
def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
|
|
178
|
+
return item["canonical_solution"].lstrip("\n") + "```"
|
|
@@ -5,8 +5,8 @@ https://huggingface.co/datasets/ellamind/humaneval-multilingual
|
|
|
5
5
|
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from eval_framework.tasks.base import BaseTask, Language
|
|
9
|
-
from eval_framework.tasks.benchmarks.humaneval import HumanEval_OLMES
|
|
8
|
+
from eval_framework.tasks.base import BaseTask, Language, Sample
|
|
9
|
+
from eval_framework.tasks.benchmarks.humaneval import HumanEval_NL, HumanEval_OLMES
|
|
10
10
|
from eval_framework.tasks.dataset_revisions import HF_REVISIONS_LOCKFILE
|
|
11
11
|
from eval_framework.tasks.task_style import BPBStyle
|
|
12
12
|
|
|
@@ -29,10 +29,6 @@ class HumanEvalDE_OLMES(HumanEval_OLMES):
|
|
|
29
29
|
SUBJECTS = ["deu"]
|
|
30
30
|
LANGUAGE = Language.DEU
|
|
31
31
|
|
|
32
|
-
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
33
|
-
# Ensure that the code completion starts on a new line.
|
|
34
|
-
return "```python\n" + item["prompt"].rstrip() + "\n"
|
|
35
|
-
|
|
36
32
|
|
|
37
33
|
class HumanEvalDE_BPB_OLMES(BaseTask[str]):
|
|
38
34
|
"""German HumanEval - BPB format (loglikelihood of the canonical solution).
|
|
@@ -63,3 +59,44 @@ class HumanEvalDE_BPB_OLMES(BaseTask[str]):
|
|
|
63
59
|
|
|
64
60
|
def _get_correct_index(self, item: dict[str, Any]) -> int:
|
|
65
61
|
return 0
|
|
62
|
+
|
|
63
|
+
def _create_samples(self, item: dict[str, Any], index: int, subject: str) -> list[Sample]:
|
|
64
|
+
"""Creates one or more samples from a single dataset item. Default implementation returns single sample."""
|
|
65
|
+
messages = self._get_messages(item)
|
|
66
|
+
messages[-1].content = messages[-1].content.rstrip("\n")
|
|
67
|
+
return [
|
|
68
|
+
Sample(
|
|
69
|
+
id=index,
|
|
70
|
+
subject=str(subject),
|
|
71
|
+
messages=messages,
|
|
72
|
+
ground_truth=self._get_ground_truth(item),
|
|
73
|
+
possible_completions=self._get_possible_completions(item),
|
|
74
|
+
context=self._get_context(item),
|
|
75
|
+
)
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class HumanEvalDE_BPB_OLMES_V2(HumanEvalDE_BPB_OLMES):
|
|
80
|
+
"""HumanEvalDE_BPB_OLMES variant that wraps the prompt and canonical solution in markdown code
|
|
81
|
+
fences, mirroring the HumanEvalDE_OLMES completion prompt exactly.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
NAME = "HumanEvalDE_BPB_OLMES V2"
|
|
85
|
+
|
|
86
|
+
def _get_instruction_text(self, item: dict[str, Any]) -> str:
|
|
87
|
+
# Ensure that the code completion starts on a new line.
|
|
88
|
+
return "```python\n" + item["prompt"].rstrip()
|
|
89
|
+
|
|
90
|
+
def _get_fewshot_target_text(self, item: dict[str, Any]) -> str:
|
|
91
|
+
return "\n" + item["canonical_solution"].rstrip() + "\n```"
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class HumanEvalDE_NL(HumanEval_NL):
|
|
95
|
+
NAME = "HumanEvalDE_NL"
|
|
96
|
+
REVISION_LOCKFILE = HF_REVISIONS_LOCKFILE
|
|
97
|
+
|
|
98
|
+
DATASET_PATH = "ellamind/humaneval-multilingual"
|
|
99
|
+
SAMPLE_SPLIT = "test"
|
|
100
|
+
FEWSHOT_SPLIT = "test"
|
|
101
|
+
SUBJECTS = ["deu"]
|
|
102
|
+
LANGUAGE = Language.DEU
|
|
@@ -135,9 +135,7 @@ class EvalConfig(BaseConfig):
|
|
|
135
135
|
|
|
136
136
|
@field_serializer("judge_model_args")
|
|
137
137
|
def serialize_judge_model_args(self, value: dict[str, Any]) -> dict[str, Any]:
|
|
138
|
-
value.
|
|
139
|
-
value.pop("base_url", None)
|
|
140
|
-
return value
|
|
138
|
+
return {k: v for k, v in value.items() if k not in ("api_key", "base_url")}
|
|
141
139
|
|
|
142
140
|
def model_json_dump(self) -> str:
|
|
143
141
|
model_dump = self.model_dump(mode="json")
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from collections.abc import Callable, Sequence
|
|
2
|
+
from typing import TYPE_CHECKING, Any
|
|
3
|
+
|
|
4
|
+
from eval_framework.tasks.task import EvalFactory, ResponseType, Task
|
|
5
|
+
from template_formatting.formatter import BaseFormatter
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from eval_framework.metrics.base import BaseMetric
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Lazy(EvalFactory):
|
|
12
|
+
"""An ``EvalFactory`` that defers producing the real factory until first use.
|
|
13
|
+
|
|
14
|
+
Holds an ``id`` and a ``load`` thunk returning the wrapped ``EvalFactory``; every
|
|
15
|
+
other call is delegated to that factory, which is built (and memoized) on first
|
|
16
|
+
access. This keeps ``Lazy`` independent of any concrete task type — the thunk owns
|
|
17
|
+
whatever loading (e.g. importing a module) the wrapped factory requires.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def __init__(self, id: str, load: Callable[[], EvalFactory]) -> None:
|
|
21
|
+
self._id = id
|
|
22
|
+
self._load = load
|
|
23
|
+
self._factory: EvalFactory | None = None
|
|
24
|
+
|
|
25
|
+
def _loaded_factory(self) -> EvalFactory:
|
|
26
|
+
if self._factory is None:
|
|
27
|
+
self._factory = self._load()
|
|
28
|
+
return self._factory
|
|
29
|
+
|
|
30
|
+
def id(self) -> str:
|
|
31
|
+
return self._id
|
|
32
|
+
|
|
33
|
+
def create(
|
|
34
|
+
self,
|
|
35
|
+
num_fewshot: int,
|
|
36
|
+
custom_subjects: list[str] | None,
|
|
37
|
+
custom_hf_revision: str | None,
|
|
38
|
+
user_prompt_suffix: str | None = None,
|
|
39
|
+
seed: int | None = None,
|
|
40
|
+
) -> Task:
|
|
41
|
+
return self._loaded_factory().create(num_fewshot, custom_subjects, custom_hf_revision, user_prompt_suffix, seed)
|
|
42
|
+
|
|
43
|
+
def response_type(self) -> ResponseType:
|
|
44
|
+
return self._loaded_factory().response_type()
|
|
45
|
+
|
|
46
|
+
def metrics(self) -> list[type["BaseMetric"]]:
|
|
47
|
+
return self._loaded_factory().metrics()
|
|
48
|
+
|
|
49
|
+
def subjects(self) -> list[Any]:
|
|
50
|
+
return self._loaded_factory().subjects()
|
|
51
|
+
|
|
52
|
+
def display_name(self) -> str:
|
|
53
|
+
return self._loaded_factory().display_name()
|
|
54
|
+
|
|
55
|
+
def markdown_doc(self, formatters: Sequence[BaseFormatter]) -> str:
|
|
56
|
+
return self._loaded_factory().markdown_doc(formatters)
|
|
@@ -8,7 +8,6 @@ from template_formatting.formatter import BaseFormatter, Message
|
|
|
8
8
|
def markdown_doc(
|
|
9
9
|
*,
|
|
10
10
|
name: str,
|
|
11
|
-
module: str,
|
|
12
11
|
dataset_path: str | None,
|
|
13
12
|
sample_split: str | None,
|
|
14
13
|
fewshot_split: str | None,
|
|
@@ -44,8 +43,6 @@ def markdown_doc(
|
|
|
44
43
|
buf.write(f"LANGUAGE = {language!r}".strip() + "\n")
|
|
45
44
|
buf.write("````\n\n")
|
|
46
45
|
|
|
47
|
-
buf.write(f"- Module: `{module}`\n\n")
|
|
48
|
-
|
|
49
46
|
if http_path:
|
|
50
47
|
buf.write(f"- Link to dataset: [{http_path}]({http_path})\n")
|
|
51
48
|
else:
|