【玩转腾讯混元大模型】怎么说?我用混元AI大模型开发了个IDEA插件

前言

halo 我是杨不易呀,在混元大模型内测阶段就已经体验了一番当时打开页面的时候灵感模块让我大吃一惊这么多角色模型真的太屌了,随后我立马进行了代码处理水平和上下文的效果结果一般般但是到如今混元大模型代码处理水平提升超过 20%,代码处理效果在实测中高于ChatGPT 6.34% HumanEval 的公开测试集指标显示,ta已超过Starcoder、Codellama等业界头部开源代码大模型。腾讯混元大模型现在正式全部开发,发起申请即可,在混元大模型内测阶段我就已经在使用接下来我们迎接代码能力全面升级的混元大模型!

我将以下三个方向来测试混元大模型的代码能力和上下文的能力并且最后进行测试使用混元大模型开发一个 IDEA 的插件

  1. 前端(Vue.js)问题
  2. 后端(Java)问题
  3. 数据库(MySQL)问题

背景介绍

官方给出的混元AI拥有以下能力
多轮对话

具备上下文理解和长文记忆能力,流畅完成各专业领域的多轮问答
内容创作

支持文学创作、文本摘要、角色扮演能力、流畅、规范、中立、客观
逻辑推理

准确理解用户意图基于输入数据或信息进行推理、分析
知识增强

有效解决事实性、时效性问题、提升内容生成效果

支持文字生成图像能力输入指令即可将奇思妙想变成图画

混元简单的介绍了自己拥有的能力,简单的说就是我可以完美的帮助到你尽可能给出专业且全面的回答,接下来我们主要的就是 体验腾讯混元大模型代码能力

混元大模型对话页面

您好,感谢您参加了腾讯混元大模型征文活动:https://cloud.tencent.com/developer/article/2372183,我们收到您的投稿啦,经评审团审核,给出的反馈意见如下,辛苦您修改优化完成之后,就可以发布到社区啦:[抱拳]

1、整体蛮好的,建议标题可以改一下,目前太长了、全文需要统一标点符号

2、申请步骤可以考虑去掉,目前已经开放,无需申请了

3、建议要不要分开成两篇发布,一篇是体验和评测;一篇是利用混元开发了一个插件。不过第二篇篇幅有点短,字有点少,行文格式需要优化,仅供参考~

4、截图不太清晰,建议换成清晰度高的截图

体验代码能力

我这里列举了不同的代码需求看看混元大模型提升了百分之二十的强悍之处!!!!

在测试之前我们给他设置一个角色

prompt: 现在你是一位前端开发工程师

前端(Vue.js)问题:

一、 Vue组件创建:创建一个Vue.js组件,显示一个简单的待办事项列表.

可以看到我的 prompt 非常简单混元完美的输出了需求代码,但是还是丢失了一些基础结构,无伤大雅我们只需要其中重要的代码即可

prompt: 帮我实现vue组件创建:创建一个vuejs组件,显示一个简单的待办事项列表。



在最底部混元将代码实现完毕后逐步解释了代码的作用并且主动添加了样式的需求非常人性化

接下来我们测试看看,我不会诶咋办丢给混元喊他教我如何搭建 vue 脚手架,正好体验一下混元的表达能力

prompt: 如何创建一个 vue 的脚手架用来测试代码案例?


混元将搭建 vue 脚手架的步骤详细输出了非常棒接下来我们跟着操作一下吧

完美的创建了 vue 脚手架项目,接下来我们继续上面的代码测试操作

非常完美的实现并且主动添加了样式由此可见混元模型的基本代码能没有什么问题切菜一样的简单

二、条件渲染:编写Vue代码,根据选择不同的按钮条件渲染组件或元素

接下来我们提一个难一点的难度上升半颗心,刚刚好来测试一下上下文的能力

需求是接着上面的任务列表代码来实现不同的按钮根据条件渲染不同的组件元素
prompt: 接着上面 待办事项列表,实现根据选择不同的按钮条件渲染组件或元素

可以看到上面我们隔了一段对话混元还是可以识别到我们想要说的是什么代码上下文还是非常不错的

我们只是简单的描述了一下需求混元就将需求详细化了,并且还把按钮继续美化了一番待会惊艳你

代码已经完美的输出,我们来测试看看

怎么说? 是不是有哪个味道了接下里点击切换列表看看

震惊,实现的非常完美我都没出现过报错信息一条龙服务非常棒!

三、动画效果:使用Vue.js创建简单的过渡和动画效果。

需求 接着上面的任务列表进行添加动画效果
prompt: 接着上面的任务列表进行添加动画效果


和上面操作一样稳定发挥解释了代码示例是干啥的,我们继续来看看效果

可以看到我们的过度动画已经实现了,只是感觉有点别扭,刚刚好我们丢给混元大模型来修复

prompt: 我希望 暂无待办事项 进行固定定位在列表的中间

实际上也就是修改了这个地方,在.container元素添加了position: relative 样式遵守子绝父相的模式来实现

效果展示查看

可以看到完美实现了我描述的需求,可以看出上下文的能力可代码能力都非常的稳定

接下来我们测试最后一个前端问题理论问题

四、组件通信:如何在Vue组件之间进行通信和数据传递?

需求 在工作当中我们肯定有需要组件之间的通信和数据传递那么该如何实现,丢给混元大模型给我们解惑一二
prompt: 组件通信:如何在Vue组件之间进行通信和数据传递

可以看到混元大模型以三点描述了我们应该如何操作去实现我们的需求,我们还可以继续请教大模型帮助我们进行代码的实现出来

prompt: 可以帮我把以上三种方法用代码案例的形式写出来吗?





输出的非常快,示例展示了如何使用props、emit、事件总线和 refs在Vue.js组件之间进行通信和数据传递

后端(Java)问题:

在开始之前我们还是需要设置一个角色: 现在你是一位高级 Java 开发工程师

一、 RESTful API创建:编写Java代码创建一个RESTful API,用于获取和更新数据。

需求: 用于测试 Java 代码的编写能力使用RESTful 风格来获取和更新数据
prompt: RESTful API创建:编写Java代码创建一个RESTful API,用于获取和更新数据

可以看到非常完美的把如何创建项目的步骤输出出来,并且使用RESTfulAPi 编写了查询和更新接口

二、异常处理:在Java后端代码中如何处理异常情况?

需求 需要统一控制全局异常并且自定义返回格式,在Java后端代码中如何处理异常情况
prompt: 需要统一控制全局异常并且自定义返回格式,在Java后端代码中如何处理异常情况

混元大模型输出的很快,分为了四点来讲述包涵了测试代码非常的高效率直接复制进去就可以用了

三、日志记录:如何实现日志记录以便于故障排查和监控?

需求: 帮我实现在 Java 当中日志记录便于故障排查和监控

混元大模型已经高效率输出出来了,非常的快跟着一步步来效果完美实现

四、数据库连接:如何在Java中连接到MySQL数据库并执行查询操作?

需求: 不使用 ORM 框架让混元大模型来进行生成Java连接到MySQL数据库的代码操作
prompt: 如何在Java中连接到MySQL数据库并执行查询操作

可以看到上面输出的代码示例展示了如何在Java中连接到MySQL数据库并执行查询操作,从加载驱动到结果整体来说这个示例代码是简单且易于理解的,并且完成了我们需要的执行查询操作非常不错.

五、部署和扩展:解释如何将Java后端应用程序部署到生产环境,并实现水平扩展

需求: 绝大多数的 Java 全栈开发在公司都是需要自己去部署服务到线上的那么应该如何做呢? 我们来喊混元大模型给我们说说~
prompt: 解释如何将Java后端应用程序部署到生产环境,并实现水平扩展

可以看到混元大模型将思路全部说出来了,我们只需要跟着来即可,接下来我们实战看看让混元帮我们部署

prompt2 : 我需要部署一个 SpringBoot 单体的项目在 linux 服务器上面应该如何操作?

我们可以明显的看到混元大模型的对话能力已经很强了准备服务器购买服务器都教你了(需要购买服务器的同学前往腾讯云云服务器),再到打包、上传到服务器、接着启动部署命令,并且也考虑到了服务发生故障时自动重启还是非常棒的

数据库(MySQL)问题:

角色设置: 现在你是一位在数据库领域多年的DBA

一、编写出一个学生表、老师表、班级表的 SQL

需求: 简单的描述重点编写出一个学生表、老师表、班级表的 SQL
prompt: 编写出一个学生表、老师表、班级表的 SQL

可以看到混元大模型输出了三个表结构的创建并且赋予了基本的字段还是很棒的非常丝滑,接下来我们继续

prompt: 我不要表结构我需要查询语句

到这里我有点惊讶,有点夸张了我都没说要关联结果给我关联了默认了表结构之间的逻辑,这对话能力理解能力超级强了.

二、数据插入:如何将数据插入到MySQL表中?

需求: 考验混元大模型的理解和 sql 代码能力看看是否可以
prompt: 帮我写一个 SQL 给每个班级里面新增不同的学生数据

ok 非常的正确,并且给出了 SQL 语句的解释插入6条学生数据,每个班级中都有2名学生.到这里我已经觉得没必要去测试了混元大模型已经都具备了代码能力确实强横.

三、更新数据:如何使用SQL更新数据库表中的数据?

需求: 看看更新的能力是否一样的精准输出
prompt: 更新 Female(女性)的数据分班到 3 班并且需要大于十八岁

很准确,我没有进行指定哪个表混元大模型默认识别到了我的意思想法

四、索引优化:如何为数据库表中的字段创建索引以提高查询性能?

需求: 在公司当中肯定存在索引优化的场景,那么我们就模拟一下 2 百万的数据问问混元应该如何提高查询性能?
prompt: 假如students表有2百万的数据,索引优化:如何为数据库表中的字段创建索引以提高查询性能?

混元给出了解决思路以及准对我们的表定制了一个索引优化方案,所以以后我们可以直接把 sql 丢进去问就行了.

我再来反驳一下考验混元大模型对输出的方案是否坚定

prompt: 操作这些2百万的数据就可以提高了嘛?

提供了一些常见的优化方案在程序当中处理

五、备份和还原:如何备份和还原MySQL数据库?

需求: 在公司当中数据是非常重要的那么我们也来问问混元该如何操作
prompt: 备份和还原:如何备份和还原MySQL数据库?

不负众望很稳,输出来的东西质量很高从使用mysqldump工具进行备份和还原还介绍了一个图形化界面形式的管理工具进行备份还原,我感觉还是非常不错的会举一反三很强大.那么到这里我们的测试体检就结束啦!

接下来我们就进行零基础项目实战基于混元大模型开发一个 IDEA 插件

零基础项目实战基于混元大模型开发一个 IDEA 插件

⚠️注意: 这里说的零基础是 IDEA 插件的零基础而不是对 Java 体系的零基础注意分辨,本次使用的项目构建工具是 gradle 不是 maven 哦那么开始基于混元大模型开发一个简单的插件吧

向混元设置角色并且输出需求: 你现在是一名高级Java开发。我想要编写一个intellij idea的插件,功能是弹出提示框,请写出完整的代码步骤给我

可以看到混元输出了五个步骤并且输出了实现案例,代码质量也非常的高可以看出来混元的基础代码能力已经炉火纯青

  1. 创建一个新的IntelliJ Platform插件项目,选择插件 JDK 版本随意

如果你没安装 gradle 那么 idea 会提示你安装因为它是使用 gradle 进行构建的,我这里之前就已经安装过 gradle

那么整体项目如下:

  1. 在src/main/java目录下创建一个名为MyPopupAction的类,继承自AnAction
  2. 在MyPopupAction类中重写actionPerformed方法,用于显示提示框。
  1. 在resources/META-INF/plugin.xml文件中配置插件的信息和操作

跟着混元大模型步骤我们已经完成了并且没报任何错误,那么我们开始编译启动起来吧,找到 RunPlugin 运行

如果你之前已经安装过那么会很快就编译运行完成,没有则需要等待片刻它会下一个 2022 版本的 idea 用于测试插件

成功打开测试 idea 随便进去一个项目就行

进去之后直接给我报错了,class 找不到,路径什么的的都一样,后面我贴给混元,混元给出了答案

我们的代码写的是 Java 不是 kotlin 所以我们的包要是 Java 编译

那么修改完毕后,我们再次启动插件看看是否可以弹出框

点击 File 下我们自定义的菜单栏按钮 Show popup

总结: 可以看到我们一步步的跟着混元步骤,并且出现错误我们直接错误丢给混元让它给解决

基于上面的小 demo 实战可以看到混元成长的速度非常快,现在的代码能力吊打之前的,那么接下来我们进阶需求

进阶需求

需求 我需要开发一个简单的插件,选中代码块进行截图并且粘贴在剪切板上
prompt: 你现在是一名高级Java开发。我想要编写一个intellij idea的插件,功能是选中某个代码块进行截图到电脑的剪切板当中,如何做呢?

可以看到这张图片里面的代码步骤,非常的详细,从安装 idea 开发工具到项目的创建以及编写插件代码的实现

我根据前面的四步搭建好了基础架构非常的简单,和前面一样文件夹改成 Java 编译 Java 代码

然后跟着混元的步骤创建一个CodeSnippetToClipboardAction 插件类继承AnAction

继承后我们重写actionPerformed 方法,在当中编写消息提示框来测试是否搭建成功

actionPerformed: 表示执行的操作,也就是我们配置好插件菜单按钮去触发的时候他会执行这个方法

java 复制代码
/**
 * 选中文本截图
 *
 * @author 杨不易呀
 * Create By 2023/12/30
 */
public class CodeSnippetToClipboardAction extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        Messages.showInfoMessage("测试是否成功执行-杨不易呀~", "提示");
    }
}

鼠标移动到类名称上去可以看到没有注册 plugin.xml,没有进行使用,那么我们直接 atl + enter 就会弹出注册 plugin.xml

只需要输入名称、描述然后菜单按钮放在哪个按钮组当中我这里就放在编辑当中

然后打开 plugin.xml 查看是否注册成功

可以看到为我们注册了一个操作(action)下面详细介绍一下

  • id:操作的唯一标识符。在这个例子中,它是 CodeSnippetToClipboardAction2
  • class:操作的类名意味着这个操作将由 CodeSnippetToClipboardAction2 的类处理
  • text:操作在菜单或工具栏上显示的文本
  • description:操作的描述
  • <add-to-group>:这个标签表示将操作添加到一个指定的组中anchor 属性指定了操作在组中的位置

注册执行器在 IntelliJ IDEA 的菜单或工具栏上添加一个名为 代码片段截图 的操作当用户点击这个操作时将调用 CodeSnippetToClipboardAction2 类的处理方法

测试插件

运行插件打开了一个新的ldea程序在这里测试我们写的插件

我们注册了插件按钮在edit当中直接找到我们自己的插件即可

非常不错成功测试成功没什么毛病,接下来我们继续跟着混元的代码案例走,完善 actionPerformed方法内容

直接把混元输出的代码全部复制进来,这就不用我操作了吧

createImage: 用于创建图片并且将我们选中的文本进行渲染在图片当中

copyImageToClipboard: 用于将创建好的图片复制在电脑的剪切板当中

代码完成度非常的高,从创建项目到项目代码的编写再到运行和测试插件的步骤非常棒,但还是有点代码问题,报错没有这个类

没有这个类

报错,不存在 Cannot resolve symbol 'ToolkitImage'

不过无伤大雅直接丢给混元大模型来操作,尽可能的详细化错误我这里直接贴这段代码当中哪个代码有问题

混元输出了一个代码案例但是还是有点小问题继续问详细化一点

我们也不知道 image 是什么依赖 直接问

prompt : Image ti = new Image(out.toByteArray()); 的 Image引入的什么依赖?


还是有问题继续细化

prompt: 使用之后报错 'Image' is abstract; cannot be instantiated

代码不报错了,我们进行测试一下效果,开启新的 idea 用于测试

点击新的 IDEA 当中的 Edit 菜单栏,我们是配置在这里的

复制到我们电脑的剪切板当中的了,非常 NICE,非常的丝滑!!! 没有混元我多多少少有点汗流浃背了~

总结

这次的体验混元大模型我是非常的舒服的,我们使用了前端 Vue.js 领域的问题、后端 Java 领域的问题、数据库 Mysql 领域的问题进行深度探究代码能力和上下文能力以及表达能力,目前测试出来是非常的好的效率非常高我没有吹捧啊,最后结合我们的一个项目实战 我也是零基础开发 IDEA 插件 的我就是跟着混元大模型输出的教程步骤一步步来的尽管中途有些错误但是无伤大雅,把错误全部提交给混元大模型去解析即可最终就实现了我们的一个选中代码块进行截图到剪切板的那么一个功能还是很有成就感的哈哈哈虽然是 AI 搞的~

总的来说混元AI大模型是AI领域的一个重要进步,它们为处理复杂的语言任务提供了强大的工具,但同时也带来了一系列的挑战和问题需要解决

我早在十月份我就已经在用了在工作当中我使用率是非常的高的主要是免费功能效率还这么高,各位客官还不来试试 腾讯云混元 AI大模型 ?

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗