AutoCoder
新闻 :fire:
一个新的模型 AutoCoder_QW_7B 已经上传。在这个模型中,我们修复了之前的问题,即模型只有在你要求验证代码时才会启动代码解释器。
AutoCode_QW_7B 的基础模型是 CodeQwen1.5-7b。
介绍 :mega:
我们推出了一个为代码生成任务设计的新模型。它在人类评估基准数据集上的测试准确率超过了 GPT-4 Turbo(2024 年 4 月)。(90.9% 对 90.2%)。
此外,与之前的开源模型相比,AutoCoder 提供了一项新功能:它可以自动安装所需的包,并在用户希望执行代码时,尝试运行代码直到认为没有问题为止。
- AutoCoder 与 GPT-4 Turbo 的代码解释器的区别:
以下是 GPT-4 Turbo 和 AutoCoder 代码解释器比较的视频演示:
GPT-4o 无法访问外部库。
AutoCoder 可以自动安装所需的包。这一功能扩展了代码解释器的应用范围。
- AutoCoder 与当前开源代码解释器 OpenCodeInterpreter 的区别:
AutoCoder 的代码解释器与 GPT-4 Turbo 类似,仅在用户需要验证代码时才调用,而 OpenCodeInterpreter 会运行所有生成的 Python 代码。
模型 :gift:
该模型可在 Huggingface 上获取:
AutoCoder (33B)
AutoCoder-S (6.7B)
AutoCoder (33B) 和 AutoCoder-S (6.7B) 的基础模型是 deepseeker-coder。
AutoCoder_QW_7B 的基础模型是 CodeQwen1.5-7b。
快速开始 :rocket:
- 创建 conda 环境
conda create -n AutoCoder python=3.11
conda activate AutoCoder
pip install -r requirements.txt
- 在 HumanEval 上测试 90.9% 在基础数据集上,78.0% 在基础 + 额外数据集上。(如果你不想测试其在基准上的表现,可以跳到步骤 5)
cd Evaluation
python test_humaneval.py
在此步骤后,你将收到一个名为 AutoCoder_HumanEval+.jsonl 的文件,它遵循 EvalPlus 格式。
然后按照 EvalPlus GitHub 的测试框架,你将看到结果。
注意:
- 不要忘记使用 evalplus 的
evalplus.sanitize
对代码进行后处理。 - 如果你不使用贪心方法(例如设置
do_sample=True
)进行代码生成,你可能会看到不同的结果。
- 在 MBPP 上测试 82.5% 在基础数据集上,70.6% 在基础 + 额外数据集上。(如果你不想测试其在基准上的表现,可以跳到步骤 5)
python test_humaneval.py
后处理以删除自然语言进行测试
python postprocess_mbpp.py
在此步骤后,你将得到一个 AutoCoder_Mbpp+-sanitized.jsonl 文件,它提取了所有代码块。
然后,直接使用 EvalPlus GitHub 进行测试(这次你不需要使用 evalplus 的 evalplus.sanitize
进行代码后处理)。
- 在 DS-1000 上测试。(如果你不想测试其在基准上的表现,可以跳到步骤 5)
python test_ds1000.py
在此步骤后,你将得到一个 jsonl 文件,它提取了所有代码块。
然后,直接使用 DS-1000 GitHub 进行测试。
- 网络演示(包括代码解释器)
安装 gradio 并运行:
pip install gradio==3.48.0
cd /Web_demo
python chatbot.py
注意 :warning:
-
我们建议在使用代码解释器时设置
do_sample = True
(这里为默认设置)。 -
强烈建议使用 Linux 来部署所有内容。
联系方式 :email:
如果你有任何问题,请随时提出或联系 leib2765@gmail.com。
引用 :book:
@misc{lei2024autocoder,
title={AutoCoder: Enhancing Code Large Language Model with \textsc{AIEV-Instruct}},
author={Bin Lei and Yuchen Li and Qiuwu Chen},
year={2024},
eprint={2405.14906},
archivePrefix={arXiv},
primaryClass={cs.SE}
}
致谢 :pray:
感谢 OpenCodeInterpreter 的第一作者郑天宇在一些技术细节上的指导。