eval-framework 0.11.3__tar.gz → 0.11.8__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.
Files changed (185) hide show
  1. {eval_framework-0.11.3 → eval_framework-0.11.8}/PKG-INFO +6 -6
  2. {eval_framework-0.11.3 → eval_framework-0.11.8}/pyproject.toml +7 -7
  3. {eval_framework-0.11.3 → eval_framework-0.11.8}/pyproject.toml.orig +7 -7
  4. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/benchmarks/arc_de.py +21 -14
  5. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/benchmarks/csqa_ellamind.py +38 -16
  6. eval_framework-0.11.8/src/eval_framework/benchmarks/gpqa_ellamind.py +90 -0
  7. eval_framework-0.11.8/src/eval_framework/benchmarks/hellaswag_ellamind.py +84 -0
  8. eval_framework-0.11.8/src/eval_framework/benchmarks/hle_ellamind.py +83 -0
  9. eval_framework-0.11.8/src/eval_framework/benchmarks/piqa_ellamind.py +95 -0
  10. eval_framework-0.11.8/src/eval_framework/benchmarks/simpleqa_ellamind.py +91 -0
  11. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/benchmarks/siqa_ellamind.py +38 -16
  12. eval_framework-0.11.8/src/eval_framework/benchmarks/winogrande_ellamind.py +116 -0
  13. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/composed.py +75 -89
  14. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/contract.py +3 -1
  15. eval_framework-0.11.8/src/eval_framework/eval_kind.py +86 -0
  16. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/evaluation_generator.py +11 -5
  17. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/dataset_loading.py +41 -1
  18. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/markdown_doc.py +1 -1
  19. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/task_names.py +15 -44
  20. eval_framework-0.11.3/src/eval_framework/benchmarks/piqa_ellamind.py +0 -66
  21. eval_framework-0.11.3/src/eval_framework/tasks/benchmarks/gpqa_ellamind.py +0 -114
  22. eval_framework-0.11.3/src/eval_framework/tasks/benchmarks/hellaswag_ellamind.py +0 -73
  23. eval_framework-0.11.3/src/eval_framework/tasks/benchmarks/hle_ellamind.py +0 -101
  24. eval_framework-0.11.3/src/eval_framework/tasks/benchmarks/simpleqa_ellamind.py +0 -94
  25. eval_framework-0.11.3/src/eval_framework/tasks/benchmarks/winogrande_ellamind.py +0 -140
  26. {eval_framework-0.11.3 → eval_framework-0.11.8}/LICENSE +0 -0
  27. {eval_framework-0.11.3 → eval_framework-0.11.8}/README.md +0 -0
  28. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/__init__.py +0 -0
  29. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/base_config.py +0 -0
  30. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/benchmarks/__init__.py +0 -0
  31. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/choices.py +0 -0
  32. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/context/__init__.py +0 -0
  33. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/context/determined.py +0 -0
  34. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/context/eval.py +0 -0
  35. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/context/local.py +0 -0
  36. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/exceptions.py +0 -0
  37. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/drop_process_results.py +0 -0
  38. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/ifeval_impl/README.md +0 -0
  39. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/ifeval_impl/instructions.py +0 -0
  40. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/ifeval_impl/instructions_registry.py +0 -0
  41. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/ifeval_impl/instructions_util.py +0 -0
  42. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/external/ifeval_impl/utils.py +0 -0
  43. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/__init__.py +0 -0
  44. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/aleph_alpha.py +0 -0
  45. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/base.py +0 -0
  46. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/huggingface.py +0 -0
  47. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/models.py +0 -0
  48. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/llm/openai.py +0 -0
  49. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/logger.py +0 -0
  50. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/main.py +0 -0
  51. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/__init__.py +0 -0
  52. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/aggregators/__init__.py +0 -0
  53. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/aggregators/aggregators.py +0 -0
  54. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/base.py +0 -0
  55. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/__init__.py +0 -0
  56. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/accuracy_completion.py +0 -0
  57. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/code_assertion.py +0 -0
  58. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/code_execution_pass_at_one.py +0 -0
  59. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/concordance_index.py +0 -0
  60. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/csv_format.py +0 -0
  61. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/drop_completion.py +0 -0
  62. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/exponential_similarity.py +0 -0
  63. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/f1.py +0 -0
  64. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/format_checker.py +0 -0
  65. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/grid_difference.py +0 -0
  66. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/ifeval.py +0 -0
  67. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/json_format.py +0 -0
  68. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/language_checker.py +0 -0
  69. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/length_control.py +0 -0
  70. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/math_minerva_completion.py +0 -0
  71. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/math_reasoning_completion.py +0 -0
  72. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/minerva_math_utils.py +0 -0
  73. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/multipl_e_assertion.py +0 -0
  74. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/placeholder_checker.py +0 -0
  75. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/repetition.py +0 -0
  76. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/rouge_1.py +0 -0
  77. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/rouge_2.py +0 -0
  78. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/rouge_geometric_mean.py +0 -0
  79. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/rouge_l.py +0 -0
  80. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/completion/text_counter.py +0 -0
  81. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/efficiency/__init__.py +0 -0
  82. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/efficiency/bytes_per_sequence_position.py +0 -0
  83. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/efficiency/token_counters.py +0 -0
  84. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/__init__.py +0 -0
  85. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/base.py +0 -0
  86. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/chatbot_style_grader.py +0 -0
  87. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/coherence_grader.py +0 -0
  88. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/comparison_grader.py +0 -0
  89. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/conciseness_grader.py +0 -0
  90. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/contains_names_grader.py +0 -0
  91. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/format_correctness_grader.py +0 -0
  92. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/instruction_grader.py +0 -0
  93. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/language.py +0 -0
  94. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/long_context_grader.py +0 -0
  95. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/models.py +0 -0
  96. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/refusal_grader.py +0 -0
  97. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/sql_quality_grader.py +0 -0
  98. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/graders/summary_world_knowledge_grader.py +0 -0
  99. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_chatbot_style.py +0 -0
  100. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_coherence.py +0 -0
  101. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_completion_accuracy.py +0 -0
  102. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_conciseness.py +0 -0
  103. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_contains_names.py +0 -0
  104. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_format_correctness.py +0 -0
  105. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_instruction.py +0 -0
  106. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_mtbench_pair.py +0 -0
  107. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_mtbench_single.py +0 -0
  108. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_refusal.py +0 -0
  109. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_sql.py +0 -0
  110. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/llm_judge_world_knowledge.py +0 -0
  111. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/llm/utils.py +0 -0
  112. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/__init__.py +0 -0
  113. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/accuracy_loglikelihood.py +0 -0
  114. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/base.py +0 -0
  115. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/bits_per_byte.py +0 -0
  116. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/confidence_weighted_accuracy.py +0 -0
  117. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/dcs.py +0 -0
  118. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/probability_mass.py +0 -0
  119. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/metrics/loglikelihood/ternary.py +0 -0
  120. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/py.typed +0 -0
  121. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/response_generator.py +0 -0
  122. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/result_processors/__init__.py +0 -0
  123. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/result_processors/base.py +0 -0
  124. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/result_processors/hf_uploader.py +0 -0
  125. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/result_processors/result_processor.py +0 -0
  126. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/result_processors/wandb_uploader.py +0 -0
  127. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/run.py +0 -0
  128. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/run_direct.py +0 -0
  129. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/shared/errors.py +0 -0
  130. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/shared/types.py +0 -0
  131. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/subjects.py +0 -0
  132. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/suite.py +0 -0
  133. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/Dockerfile_codebench +0 -0
  134. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/__init__.py +0 -0
  135. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/base.py +0 -0
  136. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/__init__.py +0 -0
  137. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/arc.py +0 -0
  138. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/arc_ellamind.py +0 -0
  139. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/bigcodebench.py +0 -0
  140. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/copa.py +0 -0
  141. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/csqa.py +0 -0
  142. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/drop.py +0 -0
  143. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/global_mmlu.py +0 -0
  144. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/goldenswag.py +0 -0
  145. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/gpqa.py +0 -0
  146. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/gsm8k.py +0 -0
  147. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/gsm8k_ellamind.py +0 -0
  148. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/hellaswag.py +0 -0
  149. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/hendrycks_math_ellamind.py +0 -0
  150. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/humaneval.py +0 -0
  151. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/humaneval_ellamind.py +0 -0
  152. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/ifeval.py +0 -0
  153. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/math_reasoning.py +0 -0
  154. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/mbpp.py +0 -0
  155. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/mbpp_ellamind.py +0 -0
  156. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/medqa.py +0 -0
  157. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/mmlu.py +0 -0
  158. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/mmlu_pro.py +0 -0
  159. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/multipl_e.py +0 -0
  160. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/naturalqs_open.py +0 -0
  161. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/piqa.py +0 -0
  162. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/sciq.py +0 -0
  163. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/social_iqa.py +0 -0
  164. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/squad.py +0 -0
  165. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/benchmarks/winogrande.py +0 -0
  166. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/dataset_revisions.py +0 -0
  167. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/eval_config.py +0 -0
  168. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/frozen-hf-dataset-revisions.json +0 -0
  169. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/hf-dataset-revisions.json +0 -0
  170. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/lazy.py +0 -0
  171. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/registry.py +0 -0
  172. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/task_loader.py +0 -0
  173. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/task_style.py +0 -0
  174. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/tasks/utils.py +0 -0
  175. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/constants.py +0 -0
  176. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/file_ops.py +0 -0
  177. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/helpers.py +0 -0
  178. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/logging.py +0 -0
  179. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/packaging.py +0 -0
  180. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/eval_framework/utils/tqdm_handler.py +0 -0
  181. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/template_formatting/README.md +0 -0
  182. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/template_formatting/__init__.py +0 -0
  183. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/template_formatting/formatter.py +0 -0
  184. {eval_framework-0.11.3 → eval_framework-0.11.8}/src/template_formatting/mistral_formatter.py +0 -0
  185. {eval_framework-0.11.3 → eval_framework-0.11.8}/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.11.3
3
+ Version: 0.11.8
4
4
  Summary: Evaluation Framework
5
5
  Author: Aleph Alpha Research
6
6
  License: Apache License
@@ -215,7 +215,7 @@ Classifier: Topic :: Software Development :: Libraries
215
215
  Classifier: Typing :: Typed
216
216
  Requires-Dist: pyyaml>=6.0.3,<7
217
217
  Requires-Dist: xmltodict>=1.0.4,<1.1
218
- Requires-Dist: pydantic>=2.13.4,<3
218
+ Requires-Dist: pydantic>=2.13.5,<3
219
219
  Requires-Dist: datasets>=5.0.1,<6
220
220
  Requires-Dist: pycountry>=26.2.16,<27
221
221
  Requires-Dist: nltk>=3.10.3,<4
@@ -229,10 +229,10 @@ Requires-Dist: psycopg2-binary>=2.9.12,<3
229
229
  Requires-Dist: sympy>=1.14.0,<2
230
230
  Requires-Dist: llm-sandbox[docker]==0.3.44
231
231
  Requires-Dist: jsonlines>=4,<5
232
- Requires-Dist: lxml>=6.1.2,<7
232
+ Requires-Dist: lxml>=6.1.3,<7
233
233
  Requires-Dist: python-iso639>=2026.7.23
234
234
  Requires-Dist: wandb>=0.29.0,<1
235
- Requires-Dist: boto3>=1.43.82,<2
235
+ Requires-Dist: boto3>=1.43.87,<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.1,<2
@@ -241,13 +241,13 @@ 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>=3.5.0,<4 ; extra == 'openai'
244
+ Requires-Dist: openai>=3.7.0,<4 ; extra == 'openai'
245
245
  Requires-Dist: tiktoken>=0.14.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'
248
248
  Requires-Dist: jinja2>=3.1.6,<4 ; extra == 'optional'
249
249
  Requires-Dist: transformers>=4.45.2,<5 ; extra == 'transformers'
250
- Requires-Dist: torch>=2.13.0,<3 ; extra == 'transformers'
250
+ Requires-Dist: torch>=2.14.0,<3 ; extra == 'transformers'
251
251
  Requires-Dist: accelerate>=1.14.0,<2 ; extra == 'transformers'
252
252
  Requires-Python: >=3.12, <3.15
253
253
  Project-URL: repository, https://github.com/Aleph-Alpha-Research/eval-framework
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eval-framework"
3
- version = "0.11.3"
3
+ version = "0.11.8"
4
4
  description = "Evaluation Framework"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12,<3.15"
@@ -18,7 +18,7 @@ classifiers = [
18
18
  dependencies = [
19
19
  "pyyaml>=6.0.3,<7",
20
20
  "xmltodict>=1.0.4,<1.1",
21
- "pydantic>=2.13.4,<3",
21
+ "pydantic>=2.13.5,<3",
22
22
  "datasets>=5.0.1,<6",
23
23
  "pycountry>=26.2.16,<27",
24
24
  "nltk>=3.10.3,<4",
@@ -32,10 +32,10 @@ dependencies = [
32
32
  "sympy>=1.14.0,<2",
33
33
  "llm-sandbox[docker]==0.3.44",
34
34
  "jsonlines>=4,<5",
35
- "lxml>=6.1.2,<7",
35
+ "lxml>=6.1.3,<7",
36
36
  "python-iso639>=2026.7.23",
37
37
  "wandb>=0.29.0,<1",
38
- "boto3>=1.43.82,<2",
38
+ "boto3>=1.43.87,<2",
39
39
  "numpy>=2.5.2",
40
40
  "antlr4-python3-runtime==4.11.0",
41
41
  "scipy>=1.18.1,<2",
@@ -54,13 +54,13 @@ determined = [
54
54
  ]
55
55
  api = ["aleph-alpha-client>=11.5.1"]
56
56
  openai = [
57
- "openai>=3.5.0,<4",
57
+ "openai>=3.7.0,<4",
58
58
  "tiktoken>=0.14.0,<1",
59
59
  "transformers>=4.45.2,<5",
60
60
  ]
61
61
  transformers = [
62
62
  "transformers>=4.45.2,<5",
63
- "torch>=2.13.0,<3",
63
+ "torch>=2.14.0,<3",
64
64
  "accelerate>=1.14.0,<2",
65
65
  ]
66
66
  accelerate = ["accelerate"]
@@ -96,7 +96,7 @@ flash-attn = [
96
96
  ]
97
97
 
98
98
  [build-system]
99
- requires = ["uv_build>=0.12.7,<0.12.8"]
99
+ requires = ["uv_build>=0.12.9,<0.12.10"]
100
100
  build-backend = "uv_build"
101
101
 
102
102
  [tool.uv]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eval-framework"
3
- version = "0.11.3"
3
+ version = "0.11.8"
4
4
  description = "Evaluation Framework"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -22,7 +22,7 @@ classifiers = [
22
22
  dependencies = [
23
23
  "pyyaml>=6.0.3,<7",
24
24
  "xmltodict>=1.0.4,<1.1",
25
- "pydantic>=2.13.4,<3",
25
+ "pydantic>=2.13.5,<3",
26
26
  "datasets>=5.0.1,<6",
27
27
  "pycountry>=26.2.16,<27",
28
28
  "nltk>=3.10.3,<4",
@@ -36,10 +36,10 @@ dependencies = [
36
36
  "sympy>=1.14.0,<2",
37
37
  "llm-sandbox[docker]==0.3.44",
38
38
  "jsonlines>=4,<5",
39
- "lxml>=6.1.2,<7",
39
+ "lxml>=6.1.3,<7",
40
40
  "python-iso639>=2026.7.23",
41
41
  "wandb>=0.29.0,<1",
42
- "boto3>=1.43.82,<2",
42
+ "boto3>=1.43.87,<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,13 +55,13 @@ determined = [
55
55
  ]
56
56
  api = ["aleph-alpha-client>=11.5.1"]
57
57
  openai = [
58
- "openai>=3.5.0,<4",
58
+ "openai>=3.7.0,<4",
59
59
  "tiktoken>=0.14.0,<1",
60
60
  "transformers>=4.45.2,<5",
61
61
  ]
62
62
  transformers = [
63
63
  "transformers>=4.45.2,<5",
64
- "torch>=2.13.0,<3",
64
+ "torch>=2.14.0,<3",
65
65
  "accelerate>=1.14.0,<2",
66
66
  ]
67
67
  accelerate = ["accelerate"]
@@ -102,7 +102,7 @@ flash-attn = [
102
102
  ]
103
103
 
104
104
  [build-system]
105
- requires = ["uv_build>=0.12.7,<0.12.8"]
105
+ requires = ["uv_build>=0.12.9,<0.12.10"]
106
106
  build-backend = "uv_build"
107
107
 
108
108
  [tool.uv.build-backend]
@@ -5,8 +5,9 @@ from typing import Any, final, override
5
5
  from eval_framework.choices import ChoiceFields, ChoiceReader
6
6
  from eval_framework.composed import ComposedBenchmark
7
7
  from eval_framework.contract import Benchmark
8
- from eval_framework.subjects import NoSubject
8
+ from eval_framework.eval_kind import Choice
9
9
  from eval_framework.tasks.base import Language
10
+ from eval_framework.tasks.dataset_loading import DatasetPolicy
10
11
  from eval_framework.tasks.dataset_revisions import pinned_by_framework
11
12
  from eval_framework.tasks.task_style import ClozeStyle, answer_key_to_index
12
13
 
@@ -28,16 +29,22 @@ class ArcDeReader(ChoiceReader):
28
29
  )
29
30
 
30
31
 
31
- # ARC-DE as cloze/ranked classification.
32
- # https://huggingface.co/datasets/LeoLM/ArcChallenge_de
33
- ARC_DE_BENCHMARK: Benchmark = ComposedBenchmark.compose(
34
- id="ARC_DE",
35
- display_name="ARC German",
36
- styler=ClozeStyle(question_prefix="Frage: ", cue_text="Antwort:"),
37
- reader=ArcDeReader(),
38
- sample_split="test",
39
- fewshot_split="validation",
40
- subjects=NoSubject(),
41
- dataset_policy=pinned_by_framework("LeoLM/ArcChallenge_de"),
42
- language=Language.DEU,
43
- )
32
+ def arc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
33
+ """ARC-DE as cloze/ranked classification.
34
+
35
+ https://huggingface.co/datasets/LeoLM/ArcChallenge_de
36
+ """
37
+ kind = Choice(reader=ArcDeReader(), styler=ClozeStyle(question_prefix="Frage: ", cue_text="Antwort:"))
38
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("LeoLM/ArcChallenge_de")
39
+ return ComposedBenchmark.compose(
40
+ id="ARC_DE",
41
+ display_name="ARC German",
42
+ kind=kind,
43
+ sample_split="test",
44
+ fewshot_split="validation",
45
+ dataset_policy=dataset_policy,
46
+ language=Language.DEU,
47
+ )
48
+
49
+
50
+ ARC_DE_BENCHMARK: Benchmark = arc_de()
@@ -10,8 +10,10 @@ from typing import Any, Literal, final, override
10
10
  from eval_framework.choices import ChoiceFields, ChoiceReader
11
11
  from eval_framework.composed import ComposedBenchmark
12
12
  from eval_framework.contract import Benchmark
13
+ from eval_framework.eval_kind import Choice
13
14
  from eval_framework.subjects import ListOfSubjects
14
15
  from eval_framework.tasks.base import Language
16
+ from eval_framework.tasks.dataset_loading import DatasetPolicy
15
17
  from eval_framework.tasks.dataset_revisions import pinned_by_framework
16
18
  from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
17
19
 
@@ -34,30 +36,50 @@ class CsqaReader(ChoiceReader):
34
36
  return ChoiceFields(raw_question=item["question"], choices=choices, correct_index=correct_index)
35
37
 
36
38
 
37
- # One styler per format, all sharing the German prefix/cue. The easy/hard distractor axis belongs to
38
- # the reader, so it is orthogonal to the styler choice.
39
- CSQA_ELLAMIND_CLOZE_STYLER = ClozeStyle.for_language(Language.DEU)
40
- CSQA_ELLAMIND_MC_STYLER = MCStyle.for_language(Language.DEU)
41
- CSQA_ELLAMIND_BPB_STYLER = BPBStyle.for_language(Language.DEU)
42
-
43
-
44
- def _csqa_ellamind_benchmark(id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"]) -> Benchmark:
39
+ def _csqa_ellamind_benchmark(
40
+ id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
41
+ ) -> Benchmark:
42
+ kind = Choice(reader=CsqaReader(distractor_level), styler=styler)
43
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/csqa-multilingual")
45
44
  return ComposedBenchmark.compose(
46
45
  id=id,
47
- styler=styler,
48
- reader=CsqaReader(distractor_level),
46
+ kind=kind,
49
47
  sample_split="validation",
50
48
  fewshot_split="validation",
51
49
  subjects=ListOfSubjects(["deu"]),
52
- dataset_policy=pinned_by_framework("ellamind/csqa-multilingual"),
50
+ dataset_policy=dataset_policy,
53
51
  language=Language.DEU,
54
52
  )
55
53
 
56
54
 
55
+ def csqa_ellamind_mc_easy_de(dataset: DatasetPolicy | None = None) -> Benchmark:
56
+ return _csqa_ellamind_benchmark("CSQA_ELLAMIND_MC_EASY_DE", MCStyle.for_language(Language.DEU), "easy", dataset)
57
+
58
+
59
+ def csqa_ellamind_mc_hard_de(dataset: DatasetPolicy | None = None) -> Benchmark:
60
+ return _csqa_ellamind_benchmark("CSQA_ELLAMIND_MC_HARD_DE", MCStyle.for_language(Language.DEU), "hard", dataset)
61
+
62
+
63
+ def csqa_ellamind_cloze_easy_de(dataset: DatasetPolicy | None = None) -> Benchmark:
64
+ return _csqa_ellamind_benchmark(
65
+ "CSQA_ELLAMIND_CLOZE_EASY_DE", ClozeStyle.for_language(Language.DEU), "easy", dataset
66
+ )
67
+
68
+
69
+ def csqa_ellamind_cloze_hard_de(dataset: DatasetPolicy | None = None) -> Benchmark:
70
+ return _csqa_ellamind_benchmark(
71
+ "CSQA_ELLAMIND_CLOZE_HARD_DE", ClozeStyle.for_language(Language.DEU), "hard", dataset
72
+ )
73
+
74
+
75
+ def csqa_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
76
+ return _csqa_ellamind_benchmark("CSQA_ELLAMIND_BPB_DE", BPBStyle.for_language(Language.DEU), "easy", dataset)
77
+
78
+
57
79
  CSQA_ELLAMIND_BENCHMARKS: list[Benchmark] = [
58
- _csqa_ellamind_benchmark("CSQA_ELLAMIND_MC_EASY_DE", CSQA_ELLAMIND_MC_STYLER, "easy"),
59
- _csqa_ellamind_benchmark("CSQA_ELLAMIND_MC_HARD_DE", CSQA_ELLAMIND_MC_STYLER, "hard"),
60
- _csqa_ellamind_benchmark("CSQA_ELLAMIND_CLOZE_EASY_DE", CSQA_ELLAMIND_CLOZE_STYLER, "easy"),
61
- _csqa_ellamind_benchmark("CSQA_ELLAMIND_CLOZE_HARD_DE", CSQA_ELLAMIND_CLOZE_STYLER, "hard"),
62
- _csqa_ellamind_benchmark("CSQA_ELLAMIND_BPB_DE", CSQA_ELLAMIND_BPB_STYLER, "easy"),
80
+ csqa_ellamind_mc_easy_de(),
81
+ csqa_ellamind_mc_hard_de(),
82
+ csqa_ellamind_cloze_easy_de(),
83
+ csqa_ellamind_cloze_hard_de(),
84
+ csqa_ellamind_bpb_de(),
63
85
  ]
@@ -0,0 +1,90 @@
1
+ """German GPQA (Graduate-level Professional QA, EllaMind) tasks.
2
+
3
+ https://huggingface.co/datasets/ellamind/gpqa-multilingual
4
+
5
+ GPQA uses a single distractor set (``incorrect_answers``). The diamond variants restrict evaluation to
6
+ the diamond subset — the 198 hardest questions (``is_diamond``) from the original GPQA-Diamond benchmark.
7
+ """
8
+
9
+ from typing import Any, final, override
10
+
11
+ from eval_framework.choices import ChoiceFields, ChoiceReader
12
+ from eval_framework.composed import ComposedBenchmark
13
+ from eval_framework.contract import Benchmark
14
+ from eval_framework.eval_kind import Choice
15
+ from eval_framework.subjects import ListOfSubjects
16
+ from eval_framework.tasks.base import Language
17
+ from eval_framework.tasks.dataset_loading import DatasetPolicy, Subset
18
+ from eval_framework.tasks.dataset_revisions import pinned_by_framework
19
+ from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
20
+
21
+
22
+ @final
23
+ class GpqaReader(ChoiceReader):
24
+ """Reads a GPQA item: a single ``incorrect_answers`` distractor set, shuffled in with the correct answer."""
25
+
26
+ @override
27
+ def read(self, item: dict[str, Any]) -> ChoiceFields:
28
+ choices, correct_index = shuffle_correct_with_distractors(
29
+ correct=item["correct_answer"],
30
+ distractors=item["incorrect_answers"],
31
+ seed_text=item["question"] + item["correct_answer"],
32
+ )
33
+ return ChoiceFields(raw_question=item["question"], choices=choices, correct_index=correct_index)
34
+
35
+
36
+ def _gpqa_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
37
+ kind = Choice(reader=GpqaReader(), styler=styler)
38
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/gpqa-multilingual")
39
+ return ComposedBenchmark.compose(
40
+ id=id,
41
+ kind=kind,
42
+ sample_split="train",
43
+ fewshot_split="train",
44
+ subjects=ListOfSubjects(["deu"]),
45
+ dataset_policy=dataset_policy,
46
+ language=Language.DEU,
47
+ )
48
+
49
+
50
+ def _gpqa_ellamind_diamond_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
51
+ source = dataset if dataset is not None else pinned_by_framework("ellamind/gpqa-multilingual")
52
+ return _gpqa_ellamind_benchmark(id, styler, Subset(source, keep=lambda row: row["is_diamond"]))
53
+
54
+
55
+ def gpqa_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
56
+ return _gpqa_ellamind_benchmark("GPQA_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
57
+
58
+
59
+ def gpqa_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
60
+ return _gpqa_ellamind_benchmark("GPQA_ELLAMIND_CLOZE_DE", ClozeStyle.for_language(Language.DEU), dataset)
61
+
62
+
63
+ def gpqa_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
64
+ return _gpqa_ellamind_benchmark("GPQA_ELLAMIND_BPB_DE", BPBStyle.for_language(Language.DEU), dataset)
65
+
66
+
67
+ def gpqa_ellamind_diamond_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
68
+ return _gpqa_ellamind_diamond_benchmark("GPQA_ELLAMIND_DIAMOND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
69
+
70
+
71
+ def gpqa_ellamind_diamond_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
72
+ return _gpqa_ellamind_diamond_benchmark(
73
+ "GPQA_ELLAMIND_DIAMOND_CLOZE_DE", ClozeStyle.for_language(Language.DEU), dataset
74
+ )
75
+
76
+
77
+ def gpqa_ellamind_diamond_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
78
+ return _gpqa_ellamind_diamond_benchmark(
79
+ "GPQA_ELLAMIND_DIAMOND_BPB_DE", BPBStyle.for_language(Language.DEU), dataset
80
+ )
81
+
82
+
83
+ GPQA_ELLAMIND_BENCHMARKS: list[Benchmark] = [
84
+ gpqa_ellamind_mc_de(),
85
+ gpqa_ellamind_cloze_de(),
86
+ gpqa_ellamind_diamond_mc_de(),
87
+ gpqa_ellamind_diamond_cloze_de(),
88
+ gpqa_ellamind_bpb_de(),
89
+ gpqa_ellamind_diamond_bpb_de(),
90
+ ]
@@ -0,0 +1,84 @@
1
+ """German HellaSwag (EllaMind) tasks.
2
+
3
+ https://huggingface.co/datasets/ellamind/hellaswag-multilingual
4
+
5
+ HellaSwag is a sentence-completion task: the prompt is a partial sentence (``"{activity}: {context}"``)
6
+ and the model scores full-sentence endings. There is no natural MC variant. HellaSwag supplies separate
7
+ easy and hard distractors.
8
+ """
9
+
10
+ from typing import Any, Literal, final, override
11
+
12
+ from eval_framework.choices import ChoiceFields, ChoiceReader
13
+ from eval_framework.composed import ComposedBenchmark
14
+ from eval_framework.contract import Benchmark
15
+ from eval_framework.eval_kind import Choice
16
+ from eval_framework.subjects import ListOfSubjects
17
+ from eval_framework.tasks.base import Language
18
+ from eval_framework.tasks.dataset_loading import DatasetPolicy
19
+ from eval_framework.tasks.dataset_revisions import pinned_by_framework
20
+ from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, TaskStyler, shuffle_correct_with_distractors
21
+
22
+
23
+ @final
24
+ class HellaswagReader(ChoiceReader):
25
+ """Reads a HellaSwag item: the partial sentence ``"{activity}: {context}"``, with the easy/hard
26
+ full-sentence endings for the level shuffled in with the correct ending."""
27
+
28
+ def __init__(self, distractor_level: Literal["easy", "hard"]) -> None:
29
+ self._distractor_level = distractor_level
30
+
31
+ @override
32
+ def read(self, item: dict[str, Any]) -> ChoiceFields:
33
+ distractors = item["easy_distractors"] if self._distractor_level == "easy" else item["hard_distractors"]
34
+ choices, correct_index = shuffle_correct_with_distractors(
35
+ correct=item["correct_ending"],
36
+ distractors=distractors,
37
+ seed_text=item["context"] + item["correct_ending"],
38
+ )
39
+ return ChoiceFields(
40
+ raw_question=f"{item['activity'].strip()}: {item['context'].strip()}",
41
+ choices=choices,
42
+ correct_index=correct_index,
43
+ )
44
+
45
+
46
+ def _hellaswag_ellamind_benchmark(
47
+ id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
48
+ ) -> Benchmark:
49
+ kind = Choice(reader=HellaswagReader(distractor_level), styler=styler)
50
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/hellaswag-multilingual")
51
+ return ComposedBenchmark.compose(
52
+ id=id,
53
+ kind=kind,
54
+ sample_split="validation",
55
+ fewshot_split="validation",
56
+ subjects=ListOfSubjects(["deu"]),
57
+ dataset_policy=dataset_policy,
58
+ language=Language.DEU,
59
+ )
60
+
61
+
62
+ # Sentence-completion: no question prefix, no cue, the continuation follows the context directly.
63
+ def _cloze_completion_style() -> ClozeStyle:
64
+ return ClozeStyle(question_prefix="", trailing_newline=False, cue_text="")
65
+
66
+
67
+ def hellaswag_ellamind_easy_de(dataset: DatasetPolicy | None = None) -> Benchmark:
68
+ return _hellaswag_ellamind_benchmark("HELLASWAG_ELLAMIND_EASY_DE", _cloze_completion_style(), "easy", dataset)
69
+
70
+
71
+ def hellaswag_ellamind_hard_de(dataset: DatasetPolicy | None = None) -> Benchmark:
72
+ return _hellaswag_ellamind_benchmark("HELLASWAG_ELLAMIND_HARD_DE", _cloze_completion_style(), "hard", dataset)
73
+
74
+
75
+ def hellaswag_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
76
+ styler = BPBStyle(question_prefix="", trailing_newline=False, cue_text="")
77
+ return _hellaswag_ellamind_benchmark("HELLASWAG_ELLAMIND_BPB_DE", styler, "easy", dataset)
78
+
79
+
80
+ HELLASWAG_ELLAMIND_BENCHMARKS: list[Benchmark] = [
81
+ hellaswag_ellamind_easy_de(),
82
+ hellaswag_ellamind_hard_de(),
83
+ hellaswag_ellamind_bpb_de(),
84
+ ]
@@ -0,0 +1,83 @@
1
+ """German HLE (Humanity's Last Exam, EllaMind) tasks.
2
+
3
+ https://huggingface.co/datasets/ellamind/hle-multilingual
4
+
5
+ HLE uses a single distractor set (``incorrect_answers``). The NATIVE variants restrict evaluation to the
6
+ items that are natively multiple-choice in the original benchmark (``answer_type == "multipleChoice"``).
7
+ """
8
+
9
+ from typing import Any, final, override
10
+
11
+ from eval_framework.choices import ChoiceFields, ChoiceReader
12
+ from eval_framework.composed import ComposedBenchmark
13
+ from eval_framework.contract import Benchmark
14
+ from eval_framework.eval_kind import Choice
15
+ from eval_framework.subjects import ListOfSubjects
16
+ from eval_framework.tasks.base import Language
17
+ from eval_framework.tasks.dataset_loading import DatasetPolicy, Subset
18
+ from eval_framework.tasks.dataset_revisions import pinned_by_framework
19
+ from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
20
+
21
+
22
+ @final
23
+ class HleReader(ChoiceReader):
24
+ """Reads an HLE item: a single ``incorrect_answers`` distractor set, shuffled in with the correct answer."""
25
+
26
+ @override
27
+ def read(self, item: dict[str, Any]) -> ChoiceFields:
28
+ choices, correct_index = shuffle_correct_with_distractors(
29
+ correct=item["correct_answer"],
30
+ distractors=item["incorrect_answers"],
31
+ seed_text=item["question"] + item["correct_answer"],
32
+ )
33
+ return ChoiceFields(raw_question=item["question"], choices=choices, correct_index=correct_index)
34
+
35
+
36
+ def _hle_ellamind_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
37
+ kind = Choice(reader=HleReader(), styler=styler)
38
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/hle-multilingual")
39
+ return ComposedBenchmark.compose(
40
+ id=id,
41
+ kind=kind,
42
+ sample_split="test",
43
+ fewshot_split="test",
44
+ subjects=ListOfSubjects(["deu"]),
45
+ dataset_policy=dataset_policy,
46
+ language=Language.DEU,
47
+ )
48
+
49
+
50
+ def _hle_ellamind_native_benchmark(id: str, styler: TaskStyler, dataset: DatasetPolicy | None = None) -> Benchmark:
51
+ source = dataset if dataset is not None else pinned_by_framework("ellamind/hle-multilingual")
52
+ return _hle_ellamind_benchmark(id, styler, Subset(source, keep=lambda row: row["answer_type"] == "multipleChoice"))
53
+
54
+
55
+ def hle_ellamind_mc_de(dataset: DatasetPolicy | None = None) -> Benchmark:
56
+ return _hle_ellamind_benchmark("HLE_ELLAMIND_MC_DE", MCStyle.for_language(Language.DEU), dataset)
57
+
58
+
59
+ def hle_ellamind_cloze_de(dataset: DatasetPolicy | None = None) -> Benchmark:
60
+ return _hle_ellamind_benchmark("HLE_ELLAMIND_CLOZE_DE", ClozeStyle.for_language(Language.DEU), dataset)
61
+
62
+
63
+ def hle_ellamind_mc_native_de(dataset: DatasetPolicy | None = None) -> Benchmark:
64
+ return _hle_ellamind_native_benchmark("HLE_ELLAMIND_MC_NATIVE_DE", MCStyle.for_language(Language.DEU), dataset)
65
+
66
+
67
+ def hle_ellamind_cloze_native_de(dataset: DatasetPolicy | None = None) -> Benchmark:
68
+ return _hle_ellamind_native_benchmark(
69
+ "HLE_ELLAMIND_CLOZE_NATIVE_DE", ClozeStyle.for_language(Language.DEU), dataset
70
+ )
71
+
72
+
73
+ def hle_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
74
+ return _hle_ellamind_benchmark("HLE_ELLAMIND_BPB_DE", BPBStyle.for_language(Language.DEU), dataset)
75
+
76
+
77
+ HLE_ELLAMIND_BENCHMARKS: list[Benchmark] = [
78
+ hle_ellamind_mc_de(),
79
+ hle_ellamind_cloze_de(),
80
+ hle_ellamind_mc_native_de(),
81
+ hle_ellamind_cloze_native_de(),
82
+ hle_ellamind_bpb_de(),
83
+ ]
@@ -0,0 +1,95 @@
1
+ """German PIQA (EllaMind) tasks.
2
+
3
+ https://huggingface.co/datasets/ellamind/piqa-multilingual
4
+
5
+ PIQA supplies separate easy and hard distractors.
6
+ """
7
+
8
+ from typing import Any, Literal, final, override
9
+
10
+ from eval_framework.choices import ChoiceFields, ChoiceReader
11
+ from eval_framework.composed import ComposedBenchmark
12
+ from eval_framework.contract import Benchmark
13
+ from eval_framework.eval_kind import Choice
14
+ from eval_framework.subjects import ListOfSubjects
15
+ from eval_framework.tasks.base import Language
16
+ from eval_framework.tasks.dataset_loading import DatasetPolicy
17
+ from eval_framework.tasks.dataset_revisions import pinned_by_framework
18
+ from eval_framework.tasks.task_style import BPBStyle, ClozeStyle, MCStyle, TaskStyler, shuffle_correct_with_distractors
19
+
20
+
21
+ @final
22
+ class PiqaReader(ChoiceReader):
23
+ """Reads a PIQA item: a single easy/hard distractor per level, shuffled in with the correct solution."""
24
+
25
+ def __init__(self, distractor_level: Literal["easy", "hard"]) -> None:
26
+ self._distractor_level = distractor_level
27
+
28
+ @override
29
+ def read(self, item: dict[str, Any]) -> ChoiceFields:
30
+ distractor = item["easy_distractor"] if self._distractor_level == "easy" else item["hard_distractor"]
31
+ choices, correct_index = shuffle_correct_with_distractors(
32
+ correct=item["correct_solution"],
33
+ distractors=[distractor],
34
+ seed_text=item["goal"] + item["correct_solution"],
35
+ )
36
+ return ChoiceFields(raw_question=item["goal"], choices=choices, correct_index=correct_index)
37
+
38
+
39
+ _QUESTION_PREFIX = "Ziel: "
40
+ _CUE_TEXT = "Antwort:"
41
+
42
+
43
+ def _piqa_ellamind_benchmark(
44
+ id: str, styler: TaskStyler, distractor_level: Literal["easy", "hard"], dataset: DatasetPolicy | None = None
45
+ ) -> Benchmark:
46
+ kind = Choice(reader=PiqaReader(distractor_level), styler=styler)
47
+ dataset_policy = dataset if dataset is not None else pinned_by_framework("ellamind/piqa-multilingual")
48
+ return ComposedBenchmark.compose(
49
+ id=id,
50
+ kind=kind,
51
+ sample_split="validation",
52
+ fewshot_split="validation",
53
+ subjects=ListOfSubjects(["deu"]),
54
+ dataset_policy=dataset_policy,
55
+ language=Language.DEU,
56
+ )
57
+
58
+
59
+ def piqa_ellamind_cloze_easy_de(dataset: DatasetPolicy | None = None) -> Benchmark:
60
+ return _piqa_ellamind_benchmark(
61
+ "PIQA_ELLAMIND_CLOZE_EASY_DE", ClozeStyle(question_prefix=_QUESTION_PREFIX, cue_text=_CUE_TEXT), "easy", dataset
62
+ )
63
+
64
+
65
+ def piqa_ellamind_cloze_hard_de(dataset: DatasetPolicy | None = None) -> Benchmark:
66
+ return _piqa_ellamind_benchmark(
67
+ "PIQA_ELLAMIND_CLOZE_HARD_DE", ClozeStyle(question_prefix=_QUESTION_PREFIX, cue_text=_CUE_TEXT), "hard", dataset
68
+ )
69
+
70
+
71
+ def piqa_ellamind_mc_easy_de(dataset: DatasetPolicy | None = None) -> Benchmark:
72
+ return _piqa_ellamind_benchmark(
73
+ "PIQA_ELLAMIND_MC_EASY_DE", MCStyle(question_prefix=_QUESTION_PREFIX, cue_text=_CUE_TEXT), "easy", dataset
74
+ )
75
+
76
+
77
+ def piqa_ellamind_mc_hard_de(dataset: DatasetPolicy | None = None) -> Benchmark:
78
+ return _piqa_ellamind_benchmark(
79
+ "PIQA_ELLAMIND_MC_HARD_DE", MCStyle(question_prefix=_QUESTION_PREFIX, cue_text=_CUE_TEXT), "hard", dataset
80
+ )
81
+
82
+
83
+ def piqa_ellamind_bpb_de(dataset: DatasetPolicy | None = None) -> Benchmark:
84
+ return _piqa_ellamind_benchmark(
85
+ "PIQA_ELLAMIND_BPB_DE", BPBStyle(question_prefix=_QUESTION_PREFIX, cue_text=_CUE_TEXT), "easy", dataset
86
+ )
87
+
88
+
89
+ PIQA_ELLAMIND_BENCHMARKS: list[Benchmark] = [
90
+ piqa_ellamind_cloze_easy_de(),
91
+ piqa_ellamind_cloze_hard_de(),
92
+ piqa_ellamind_mc_easy_de(),
93
+ piqa_ellamind_mc_hard_de(),
94
+ piqa_ellamind_bpb_de(),
95
+ ]