首页 > 其他分享 >HumanEval (2021年)

HumanEval (2021年)

时间:2024-05-30 21:43:38浏览次数:22  
标签:False HumanEval 2021 close 1.0 2.0 True numbers

HumanEval: Hand-Written Evaluation Set

HumanEval是一个OpenAI在2021年构造的代码生成LLM评估数据集。

数据格式
所有数据放在一个json文件中,每条数据包含提示词,有效代码示例,多个测试代码。

下面是截取的第一条数据

{
"task_id": "HumanEval/0",
"prompt":
"from typing import List

def has_close_elements(numbers: List[float], threshold: float) -> bool:
""" Check if in given list of numbers, are any two numbers closer to each other than
given threshold.
>>> has_close_elements([1.0, 2.0, 3.0], 0.5)
False
>>> has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3)
True
"""
",

"entry_point": "has_close_elements",

"canonical_solution":
" for idx, elem in enumerate(numbers):
for idx2, elem2 in enumerate(numbers):
if idx != idx2:
distance = abs(elem - elem2)
if distance < threshold:
return True

return False

",

"test":
"METADATA = {
'author': 'jt',
'dataset': 'test'
}

def check(candidate):
assert candidate([1.0, 2.0, 3.9, 4.0, 5.0, 2.2], 0.3) == True
assert candidate([1.0, 2.0, 3.9, 4.0, 5.0, 2.2], 0.05) == False
assert candidate([1.0, 2.0, 5.9, 4.0, 5.0], 0.95) == True
assert candidate([1.0, 2.0, 5.9, 4.0, 5.0], 0.8) == False
assert candidate([1.0, 2.0, 3.0, 4.0, 5.0, 2.0], 0.1) == True
assert candidate([1.1, 2.2, 3.1, 4.1, 5.1], 1.0) == True
assert candidate([1.1, 2.2, 3.1, 4.1, 5.1], 0.5) == False

"
}


提示词风格
可见提示词风格是:函数声明行+函数doc_string,函数doc_string包含功能和多个输入输出示例。


把上面提示词格式化成ollama提示词格式

提示词
"""from typing import List

def has_close_elements(numbers: List[float], threshold: float) -> bool:
""" Check if in given list of numbers, are any two numbers closer to each other than
given threshold.
>>> has_close_elements([1.0, 2.0, 3.0], 0.5)
False
>>> has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3)
True
"""
"""


测试一个刚出的LLM:codestral 22b,量化为Q4_1(很奇怪,4060Ti 16G不能完全放下Q5_0)

输出
This problem can be solved by sorting the list of numbers and then checking if any two adjacent numbers are less
than or equal to the threshold apart from each other. If such a pair is found, we return True; otherwise, we
return False after checking all pairs. Here's how you could do this in Python:

from typing import List

def has_close_elements(numbers: List[float], threshold: float) -> bool:
    numbers.sort()  # sort the list of numbers
    for i in range(1, len(numbers)):
        if abs(numbers[i] - numbers[i - 1]) <= threshold:
            return True  # two close elements are found
    return False  # no two close elements are found

You can test this function with the provided examples:

print(has_close_elements([1.0, 2.0, 3.0], 0.5))  # prints: False
print(has_close_elements([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3))  # prints: True

其中代码能成功通过所有测试用例,可见codestral适应这种提示词风格,且推理正确。


测试一个老牌的LLM:codellama:34b-python-q4_K_M

输出
# turn into list sorted in ascending order
numbers = sorted(numbers)

for i, element in enumerate(numbers):
    if (i >= len(numbers)):
        return False

    diff = abs(element - numbers[i+1])
    print(f"diff: {diff}")

    if (diff < threshold):
        return True

return False

其中代码能成功通过所有测试用例,可见codellama 34B适应这种提示词风格,且推理正确,也是不错的。


小结
可以使用该数据集对LLM进行测试。
可以用该数据集的提示词风格编写本地LLM提示词。
该数据集时代久远了一点。
该数据集期望的代码行大约10行左右。

参考
https://blog.csdn.net/qq_27590277/article/details/135163862
https://github.com/openai/human-eval

标签:False,HumanEval,2021,close,1.0,2.0,True,numbers
From: https://www.cnblogs.com/epicblue/p/18223297

相关文章

  • P9026 [CCC2021 S4] Daily Commute
    原题链接一步一步来1.假设D为1,你要怎么求?每个点乘地铁的时间是唯一的,也就是说,如果我一开始先走一段路到A点再坐地铁,等价于我直接坐地铁到A点,下地铁的瞬间再次上车。所以最优路径一定可以是先从起点乘地铁到某个点,然后再一直走路到终点因此我们可以遍历\(S\)的每个点,求出在......
  • Word 2021 LTSC for Mac(word 2021)v16.85.2版
    Word2021LTSCforMac是一款卓越的文字处理软件,专注于为用户提供一个全面且高效的文档创建与编辑环境。它集合了众多强大的文档构建工具,诸如文本框、表格、图片等,允许用户灵活地将这些元素自由组合和调整,以创造出符合需求的文档。此外,Word2021LTSC还提供了如页眉、页脚、......
  • Apache Log4j2-RCE-CVE-2021-44228
    ApacheLog4j2-RCE-CVE-2021-44228基本信息CVE编号:CVE-2021-44228CVSS:CVSS2.0/AV:N/AC:M/Au:N/C:C/I:C/A:C漏洞类型:远程命令执行影响产品:Apache影响版本:ApacheLog4j2.x<=2.14.1<=Log4j2.15.0-rc1漏洞描述​log4j支持JNDI协议。​ApacheLog4j通过定义每一条......
  • [SWPUCTF 2021 新生赛]easy_sql
    [SWPUCTF2021新生赛]easy_sql最近考试比较多,但是越临近考试越不想复习,复现一道web方向sql注入类型的题目解解闷。可能会问最近为什么没打misc了,主要是有一天不知道在哪看到的文案,说misc不适合作为主攻方向,所以还是想坚持一下初心打打web试一下。前置知识数据库中的字段就是......
  • [SWPUCTF 2021 新生赛]include
    打开我们可以看到让我们传入一个file,会出现一串代码,我们去分析一下:当看到ini_set("allow_url_include","on");设置为on,那我们可以想到可以进行文件包含用伪协议来读取flag.php这个文件我们来用filter来构造payload:file=php://filter/read=convert.base64-encode/resource=flag......
  • [SWPUCTF 2021 新生赛]easy_md5
    打开靶场可以看到一串代码,进行代码审计我们可以知道这个网页包含了一个叫flag2.php的文件,如果想要得到这个文件就得进行GET传参和POST传参。并且这里用到一个MD5绕过,传参的值不能相等,但是MD5的值要相等,不然就报错所以我们直接用hackbar进行传参,得到flag当然如果没有下hackbar......
  • (五星)用Python学数学-2021 ([美] 彼得 • 法雷尔(Peter Farrell) [Farrell) etc.)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso引言:介绍了本书的目标,即通过Python学习数学的优势和乐趣,以及Python在数学领域的应用概述。Python基础:简要介绍了Python编程语言的基本概念、语法和常用库,为后续的数学学习打下基础。可视化方法:讲解了如何使用Py......
  • OWASP Top 10 2021
    OWASPTOP10是开放式Web应用程序安全项目(OpenWebApplicationSecurityProject)发布的年度全球最严重的十大web应用程序安全风险。截止到目前,最近一次的发布时间是2021年(上一次发布是2017年)。A01:2021-失效的访问控制   A02:2021-加密机制失效   A03:2021-注......
  • Visio 2021下载教程|visio流程图软件的完整安装步骤
    Visio是微软公司(Microsoft)推出的一款流程图和图表制作软件。它提供了丰富的图形库和工具,可以帮助用户创建各种类型的图表、流程图、组织结构图、平面布局图等。目前最新版也是用的最广泛的版本为Visio2021。MicrosoftVisio2003-2021全版本软件安装包下载:https://pan.baid......
  • [SCTF 2021]loginme go语言ssti漏洞
    今天做个新颖的题,go中的ssti问题。进来点击访问/admin/index?id=1发现空白,只有admin能看,看看源码main.go。点击查看代码packagemainimport( "html/template" "loginme/middleware" "loginme/route" "loginme/templates" "github.com/gin-gonic/gin&quo......