做一个类似github copilot的免费代码生成器

1个月前 (01-07 03:46)阅读1回复0
zaibaike
zaibaike
  • 管理员
  • 注册排名1
  • 经验值165935
  • 级别管理员
  • 主题33187
  • 回复0
楼主

Github Copilot以敏捷、启发式地生成代码而著称。确实,在vs code编纂器中输入前几个字母,github copilot会相当快地提醒出一大段您可能下一步要书写的代码片段(Snippet),准确率相当高,良多情况下,对编程者还有启发、引导的感化。但copilot也出缺点,就是免费试用一段时间后,是要收费的,10美圆/月的价格也算是比力高的,那么有没有类似github copilot的免费处理计划呢?

salesforce/CodeGen供给了天然语言处置模子,从hugging face的例子(Models - Hugging Face)来看,效果仍是挺不错的。于是,我就产生了一个设法:将salesforce/CodeGen封拆成一个web办事,然后做一个vs code插件,并免费开源,持续完美。

产物效果

WEB办事端:https://github.com/git-cloner/codegen

VS Code插件端:https://github.com/git-cloner/codegeeker

构成的产物效果如下,可撑持python、js、java、c++、golang、c#等多种语言,也能识别一些中文:

代码生成WEB办事开发

以salesforce/CodeGen的例子jaxformer.hf.sample为蓝本,根据宿主机器的设置装备摆设情况,拆入恰当的模子,并利用aiohttp封拆成一个web办事,领受客户端发送过来的代码上下文,挪用模子生成代码,返回给VS Code插件端。完好代码在 https://github.com/git-cloner/codegen

关键手艺点有:

(1)为了进步响应速度,法式启动时要预拆入模子

(2)挪用函数入口要加lru_cache缓存,如许不异的上下文就不再用模子生成,而是从缓存里间接取

(3)生成的代码长度max_length根据主机的性能,找一个适宜的值,好比32太短、128太慢、64适中

(4)对插件发过来的上下文停止简单的预处置,适配多种语言

VS Code插件开发

vs code的插件开发其实不复杂,编程量也不大,完好代码在 https://github.com/git-cloner/codegeeker

过程如下:

(1)安拆脚手架生成东西:npm install -g yo generator-code

(2)生成脚手架代码:yo code

(3)在extension.ts里开发响应的功用,当输入触发字符(如:或{),发http恳求获取生成的代码,加到完成列表中供选择

(4)打包发布:vsce package

(5)上传到Visual Studio Marketplace

至此,一个类似github copilot的免费代码生成器就完成了,您能够在vs code的扩展里搜刮codegeeker安拆测试。

后续

当然,codegeeker与copilot的差距是庞大的,次要有:

(1)因为硬件性能所限,只能用最小的模子codegen-350M-nl,生成的效果有限

(2)即便用最小的模子,生成速度也在2秒以上,缓存射中率其实其实不高,到达产物级的效果路还很长

(3)vscode插件用的是主动补全代码实现的,并非像copilot用的是Snippet代码片段,提醒效果要差一些

继续勤奋吧!

0
回帖

做一个类似github copilot的免费代码生成器 期待您的回复!

取消