【AI写代码】CodeGen模型生成代码

   日期:2024-12-29    作者:yindufu1 浏览:78    移动:http://w.yusign.com/mobile/quote/7870.html

近几年,人工智能迅速发展,面向开发者的AI开发工具也是层出不穷,特别是从GitHub Copilot工具中可以看到AI写代码的潜力。

PaddleNLP最近也开放了代码生成模型,并且可以使用Taskflow一键完成代码生成。

来让我们一探代码自动生成的乐趣吧

由于目前CodeGen还没有发布到PaddleNLP的pip包中,因此我们需要自己拉去dev代码并安装最新开发版PaddleNLP。

克隆最新的PaddleNLP的仓库,并进入仓库安装PaddleNLP和需要的包。这里准备好了其仓库的压缩包,直接解压使用即可。

 
 
 
 
 

重启内核

  • :批处理大小,请结合机器情况进行调整,默认为1。
  • :生成代码的最大长度,默认为128。
  • :生成代码的最小长度,默认为0。
  • :解码策略,支持greedy_search,beam_search和sampling,默认为sampling。
  • :解码参数temperature,默认为0.6。
  • :解码参数top_k,默认为5。
  • :解码参数top_p,默认为1.0。
  • :beam_search解码的beam size,默认为4。
  • :解码长度控制值,默认为1.0。
  • :解码重复惩罚值,默认为1.1。
  • :是否要输出解码得分,请默认为False。

“code_generation”: {

“models”: {
“Salesforce/codegen-350M-mono”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-350M-mono’,

“task_priority_path”: “Salesforce/codegen-350M-mono”,

},

“Salesforce/codegen-2B-mono”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-2B-mono’,

“task_priority_path”: “Salesforce/codegen-2B-mono”,

},

“Salesforce/codegen-6B-mono”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-6B-mono’,

“task_priority_path”: “Salesforce/codegen-6B-mono”,

},

“Salesforce/codegen-350M-nl”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-350M-nl’,

“task_priority_path”: “Salesforce/codegen-350M-nl”,

},

“Salesforce/codegen-2B-nl”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-2B-nl’,

“task_priority_path”: “Salesforce/codegen-2B-nl”,

},

“Salesforce/codegen-6B-nl”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-6B-nl’,

“task_priority_path”: “Salesforce/codegen-6B-nl”,

},

“Salesforce/codegen-350M-multi”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-350M-multi’,

“task_priority_path”: “Salesforce/codegen-350M-multi”,

},

“Salesforce/codegen-2B-multi”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-2B-multi’,

“task_priority_path”: “Salesforce/codegen-2B-multi”,

},

“Salesforce/codegen-6B-multi”: {

“task_class”: CodeGenerationTask,

“task_flag”: ‘code_generation-Salesforce/codegen-6B-multi’,

“task_priority_path”: “Salesforce/codegen-6B-multi”,

},

},

“default”: {

“model”: “Salesforce/codegen-350M-mono”,

}

}

 
 

看看Taskflow的参数说明

 

因此我们实例化Taskflow只需要加上预训练模型名字即可

 

例如

 
 
 

先来试一个简单的,生成一个求和函数吧,看起来结果很棒

 
 

接下来加大难度,来试一试代码续写

这里以leetcode第一题为例,我们写出了部分代码,让AI来补全剩下的部分。

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

 
 

将结果拿去测试可以发现普通测试样例都可以通过,这里错误是因为AI不知道不能重复使用同一元素;因此看上去整体续写逻辑也没有什么问题

再试一试CodeGen自己来根据条件写代码

这里还是以一道leetcode上的题来测试,第一步是输入该题的描述和测试样例

 
 
 

随后将上面的输出结果补充到输入中,再次生成后半部分代码

 
 

最后将结果拿去测试,同样也是可以通过部分样例的测试。

可见生成的代码还是可以参与使用的

最后试一试自己写自己

将CodeGen模型部分代码和注释传入,看看能写出什么来

 
 
 

CodeGen单纯的代码生成的能力还是稍微有些弱,但是续写能力还是很不错。因此CodeGen也更适合作为与程序员配合一起写代码的工具,通过不断调整输入和微调,最终可以得到理想的代码。

本文地址:http://w.yusign.com/quote/7870.html    述古往 http://w.yusign.com/static/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关行情
推荐行情
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号