多编程语言代码生成神器 CodeGeeX,编码效率提升十倍!

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:github.com/THUDM/CodeGeeX


CodeGeeX 是一个具有 130 亿参数的多编程语言代码生成预训练模型,采用华为 MindSpore 框架实现,在鹏城实验室“鹏城云脑 II”上使用 1536 个国产昇腾 910 AI 处理器训练而成。

CodeGeexX 支持十多种主流编程语言的高精度代码生成、跨语言代码翻译等功能,同时开发自动编程插件,更好的辅助程序开发和相关研究。

fd421949621b84073a80d31a905fb0c5.png

特性

高精度代码生成

支持生成 Python、C++、Java、JavaScript 和 Go 等多种主流编程语言的代码,在 HumanEval-X 代码生成任务上取得 47%~60%求解率,较其他开源基线模型有更佳的平均性能。

跨语言代码翻译

支持代码片段在不同编程语言间进行自动翻译转换,翻译结果正确率高,在 HumanEval-X 代码翻译任务上超越了其它基线模型。

自动编程插件

CodeGeeX 插件现已上架 VSCode 插件市场(完全免费),用户可以通过其强大的少样本生成能力,自定义代码生成风格和能力,更好辅助代码编写。

模型跨平台开源

所有代码和模型权重开源开放,用作研究用途。CodeGeeX 同时支持昇腾和英伟达平台,可在单张 昇腾 910 或 英伟达 V100/A100 上实现推理。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

性能

全新多编程语言评测基准 HumanEval-X:HumanEval-X 是第一个支持功能正确性评测的多语言、多任务的基准,包含 820 个人工编写的高质量代码生成题目、测试用例与参考答案,覆盖 5 种编程语言(Python、C++、Java、JavaScript、Go),支持代码生成与代码翻译能力的评测。

573c775e5024268be119e2bae760a07d.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

使用指南

CodeGeeX 最初使用 Mindspore 框架实现,并在 昇腾 910AI 芯片 上进行训练。为适配更多平台,我们将其转换到 Megatron-LM 框架,支持 Pytorch+GPU 环境。

安装

需要 Python 3.7+ / CUDA 11+ / PyTorch 1.10+ / DeepSpeed 0.6+,通过以下命令安装 codegeex:

git clone git@github.com:THUDM/CodeGeeX.git
cd CodeGeeX
pip install -e
模型权重
  • 申请权重:https://models.aminer.cn/codegeex/download/request

通过申请权重,您将收到一个包含临时下载链接文件 urls.txt 的邮件。推荐使用 aria2 通过以下命令快速下载(请保证有足够的硬盘空间存放权重(~ 26GB)):

aria2c -x 16 -s 16 -j 4 --continue=true -i urls.txt

使用以下命令合并得到完整的权重:

cat codegeex_13b.tar.gz.part.* > codegeex_13b.tar
tar xvf codegeex_13b.tar.gz
用 GPU 进行推理

尝试使用 CodeGeeX 模型生成第一个程序吧!首先,在配置文件 configs/codegeex_13b.sh 中写明存放权重的路径。其次,将提示(可以是任意描述或代码片段)写入文件 tests/test_prompt.txt ,运行以下脚本即可开始推理(需指定 GPU 序号):

bash ./scripts/test_inference.sh <GPU_ID> ./tests/test_prompt.txt

功能

隐匿模式

在该模式中,CodeGeeX将在您停止输入时,从光标处开始生成(右下角CodeGeeX图标转圈表示正在生成)。生成完毕之后会以灰色显示,按Tab即可插入生成结果。在生成多个候选的情况下,可以使用Alt/Option+[ 或 ]在几个候选间进行切换。

如果你对现有建议不满意,可以使用Alt/Option+N去获得新的候选。可以在设置中改变Candidate Num(增加个数会导致生成速度相对变慢)。

注意:生成总是从当前光标位置开始,如果您在生成结束前移动光标位置,可能会导致一些bugs。我们正在努力使生成速度变得更快以提升用户体验。

79d184b02e3ac4c7c22f3a4ef0c442f6.gif
交互模式

在该模式中,按Ctrl+Enter激活交互模式,CodeGeeX将生成X个候选,并显示在右侧窗口中(X 数量可以在设置的Candidate Num中修改)。

点击候选代码上方的use code即可插入结果到为当前光标位置。

b2fe139f9bf86c9feb2a3451c3f9e468.gif
翻译模式

在当前的语言的文本编辑器中输入或者粘贴其他语言的代码,您用鼠标选择这些代码,然后按下Ctrl+Alt+T激活翻译模式,您根据提示选择该代码的语言,然后CodeGeeX会帮您把该代码翻译成匹配您当前编辑器语言的代码。

点击翻译结果上方的use code即可插入。您还可以在设置中选择您希望插入的时候如何处理被翻译的代码,您可以选择注释它们或者覆盖它们。

1f6a1bb7025909189e84371ae385ddfb.gif
提示模式(实验功能)

在该模式中,您可以在输入中添加额外的提示来实现一些有趣的功能,包括并不限于代码解释、概括、以特定风格生成等。该模式的原理是利用了CodeGeeX强大的少样本生成能力。当您在输入中提供一些例子时,CodeGeeX会模仿这些例子并实现相应的功能。

比如,您可以自定义模板中提供一段逐行解释代码的例子。选择您想要解释的代码,按Alt/Option+t触发提示模式,选择您写好的模板(如explanation),CodeGeeX就会解释您输入的代码。以下我们会详细介绍如何制作模板。

adabe453efdf4bafad0254400ddcec65.gif
开源地址
  • https://github.com/THUDM/CodeGeeX



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

d37a390e700ea41804382dd9c8cb2add.png

已在知识星球更新源码解析如下:

a254e189d002edec4cb9957c1702202d.jpeg

4a145196ae81fb92522cd664f141d263.jpeg

c7aa98b97a1af774c95aeafbab3726bc.jpeg

d6115236c389c48e1401af83d741dda3.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值