HiPhO#
概述#
HiPhO 是首个专注于高中物理奥林匹克竞赛并采用人类对齐评估的基准测试。它汇集了 13 场近期(2024–2025 年)的国际及区域性奥赛试题,涵盖多种模态,包括纯文本题目和基于图表的题目。
任务描述#
任务类型:自由形式的物理问题求解,依据官方评分标准进行评分
输入:一道物理题(包含常数表、上下文和问题),可选附带图表
输出:逐步推导的解答,最终答案用
<answer>...</answer>包裹并以\boxed{}标注模态:纯文本,以及文本+图表(示意图 / 变量图 / 数据图)
主要特性#
共计 403 道题目,来自 14 套试卷(IPhO、APhO、EuPhO、NBPhO、PanPhO、PanMechanics、CPhO、F=MA),每套试卷作为一个独立子集。
英文试卷使用英文提示,中文试卷(CPhO、PanMechanics)使用中文提示,遵循官方语言对应关系。
复现论文中的两种评分机制,按题目分别应用:
步骤级评分:适用于提供官方评分标准的题目,LLM 评委会对每个评分项打分,并将得分累加。
答案级评分:适用于无评分标准的题目,通过基于规则的数学检查匹配
\boxed{}中的最终答案;若规则检查失败,则由 LLM 评委会作为后备方案。
评估说明#
需要 LLM 评委会:设置
judge.strategy='llm'(或'auto',该选项会为此基准自动启用评委会),并提供judge.models。不支持judge.strategy='rule'。主要指标:
accuracy,即每道题得分与满分之比(范围[0, 1]),按子集取平均值聚合。对于步骤级题目,满分为各评分项分数之和;
对于拥有多个官方评分方案的题目(如 EuPhO、NBPhO),采用得分最高的方案,与论文一致。
本基准报告的是每场考试的标准化得分,不计算论文中金/银/铜牌的分数线,后者需要原始总分和官方截断值。
解答可能很长,且图表题需要视觉输入;请为被测模型设置较大的
generation_config.max_tokens。若解答在<answer>块前被截断,则无法提取最终答案,导致得分接近零,这与模型的物理能力无关。图表以内联 base64 形式发送,最大约 1.5 MB;若所用模型对单图有更小的限制,请在
dataset_args中设置max_image_bytes。
属性#
属性 |
值 |
|---|---|
基准测试名称 |
|
数据集ID |
|
论文 |
|
标签 |
|
指标 |
|
默认示例数 |
0-shot |
评估分割 |
|
数据统计#
指标 |
值 |
|---|---|
总样本数 |
403 |
提示词长度(平均) |
3020.35 字符 |
提示词长度(最小/最大) |
653 / 9336 字符 |
各子集统计:
子集 |
样本数 |
提示平均长度 |
提示最小长度 |
提示最大长度 |
|---|---|---|---|---|
|
45 |
4624.02 |
2496 |
8787 |
|
43 |
2041.81 |
960 |
3745 |
|
7 |
1924.29 |
1468 |
2051 |
|
6 |
1646.33 |
1422 |
1856 |
|
25 |
1598.76 |
1279 |
1957 |
|
25 |
1721.2 |
1395 |
2513 |
|
37 |
4152.57 |
2201 |
6701 |
|
39 |
6359.74 |
3362 |
9336 |
|
24 |
2305.25 |
1317 |
4486 |
|
20 |
2677.7 |
1359 |
4808 |
|
29 |
878.55 |
653 |
1283 |
|
23 |
874.87 |
667 |
1150 |
|
33 |
2820.55 |
1448 |
3880 |
|
47 |
3526.47 |
1561 |
6209 |
图像统计:
指标 |
值 |
|---|---|
图像总数 |
413 |
每样本图像数 |
最小: 1, 最大: 5, 平均: 1.5 |
分辨率范围 |
456x60 - 3200x1645 |
格式 |
png |
样例示例#
子集: APhO_2025
{
"input": [
{
"id": "41868500",
"content": [
{
"text": "You are participating in a high school physics Olympiad exam.\nPlease read the following question carefully and provide a clear, step-by-step solution with full reasoning.\nInstructions:\n1. Use LaTeX to format all variables, equations, and calc ... [TRUNCATED 3334 chars] ... gamma} R^{\\delta}$ \nwhere $G$ is the gravitational constant, and $\\beta, \\gamma$ and $\\delta$ are constant exponents.\nQuestion (Answer only the question stated below):\nFind the values of exponents: (1) $\\beta$, (2) $\\gamma$, and (3) $\\delta$."
},
{
"image": "[BASE64_IMAGE: png, ~101.8KB]"
}
]
}
],
"target": "",
"id": 0,
"group_id": 0,
"subset_key": "APhO_2025",
"metadata": {
"id": "APhO_2025_1_A_1",
"source": "APhO_2025",
"question": "Find the values of exponents: (1) $\\beta$, (2) $\\gamma$, and (3) $\\delta$.",
"answers": [
"\\boxed{$\\beta = 2$}",
"\\boxed{$\\gamma = -1$}",
"\\boxed{$\\delta = 4$}"
],
"marking": [
[
"Award 0.2 pt if the answer correctly expresses the dimension of $G$ as $[G] = L^3 M^{-1} T^{-2}$, where $L$ is the base dimensions length, $M$ is mass, and $T$ is time. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer correctly sets up the exponent equation $0 = 2 - \\beta$. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer correctly sets up the exponent equation $0 = \\gamma + 1$. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer correctly sets up the exponent equation $1 = \\delta - 3$. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer obtains the correct value $\\beta = 2$. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer obtains the correct value $\\gamma = -1$. Otherwise, award 0 pt.",
"Award 0.1 pt if the answer obtains the correct value $\\delta = 4$. Otherwise, award 0 pt."
]
]
}
}
注:部分内容为显示目的已截断。
提示模板#
未定义提示模板。
使用方法#
使用 CLI#
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets hipho \
--limit 10 # 正式评估时请删除此行
使用 Python#
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['hipho'],
dataset_args={
'hipho': {
# subset_list: ['APhO_2025', 'CPhO_2025', 'EuPhO_2024'] # 可选,用于评估特定子集
}
},
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)