Benchmark · coding
BigCodeBench
BigCodeBench 是一个 Python 代码生成基准,包含 1140 个真实编程任务,每个任务都需要组合调用多个库;采用基于执行的 Pass@1 评分——即生成的解答通过全部单元测试的任务比例。
了解更多
- 示例
- 典型任务给出函数签名和详细的 docstring——例如“读取一个 CSV,用 pandas 计算分组汇总统计,再用 matplotlib 绘制柱状图”——要求模型写出正确串联多个库调用的函数体。
- 评分方式
- 指标是校准后的 Pass@1,通常采用贪心解码:每个生成的程序在沙箱中针对该任务的单元测试运行,只有全部测试通过才算解出该任务,得分即解出任务的百分比。共报告两个划分——Complete(补全由 docstring 搭好框架的函数)和 Instruct(仅给自然语言指令)——以及一个包含 148 个任务的 Hard 子集。
- 验证方式
- 验收完全依据执行:解答在隔离环境中运行时必须通过该任务全部手写的单元测试(平均每题约 5.6 个,平均分支覆盖率约 99%)。没有部分得分,也不与参考文本比对。
- 为何重要
- 与 HumanEval 等仅含单一函数的简短基准不同,BigCodeBench 考察模型能否遵循复杂指令并正确使用横跨 139 个库、7 个领域的多样真实 API,更贴近实际的软件工作;Instruct 划分和 Hard 子集进一步考验指令遵循与工具组合能力。
示例解析
任务
```python
import pandas as pd
import numpy as np
def task_func(df, column):
"""
将 DataFrame 中给定的数值列标准化为零均值、单位方差,并返回修改后的 DataFrame。
依赖:
- pandas
- numpy
参数:
df (pd.DataFrame): 输入数据。
column (str): 要标准化的数值列的名称。
返回:
pd.DataFrame: 该列已标准化的 DataFrame。
示例:
>>> df = pd.DataFrame({'a': [1, 2, 3, 4, 5]})
>>> round(task_func(df, 'a')['a'].mean(), 5)
0.0
"""
```
解答
```python
df[column] = (df[column] - np.mean(df[column])) / np.std(df[column])
return df
```
解析
减去列均值再除以总体标准差(np.std,ddof=0)会把数值重新缩放为均值 0、单位方差,满足文档字符串及其 doctest(均值四舍五入为 0.0),并且用到了两个必需的库。评分基于实际执行:BigCodeBench 用任务的隐藏单元测试运行补全后的函数,只有当每个测试都通过时才给予 Pass@1。
该 benchmark 暂无已验证的得分。