AI大模型系列:(五)AI编程

2024-11-25 18:56
321
0

在软件开发过程中,通过AI辅助,减少重复性工作,提高编程效率的行为,我们叫AI编程。

本文主要有如下内容:

  1. 介绍部分市面上商业化的AI编程插件。
  2. 利用开源组件本地搭建AI编程。
  3. 完全利用AI插件编写一个小项目。

一、AI编程工具介绍

列举部分如下:

  • github copilot: (插件+模型)。GitHub基于GPT开发,收费,要科学上网。官网:https://github.com/features/copilot
  • cursor:基于VSCode的开源版本开发的客户端。官网:https://www.cursor.com/
  • Tongyi Lingma: (插件+模型) 代码补全,免费。阿里云相关。官网:https://tongyi.aliyun.com/lingma
  • CodeGeeX:(插件+模型)清华智谱制造,CodeGeeX 3 Pro 免费可用。官网:https://codegeex.cn/
  • Comate:(插件+模型)百度制造,有免费试用版。官网:https://comate.baidu.com/zh
  • MarsCode:(插件+ 模型+ 云平台)字节出品。官网:https://www.marscode.cn/

1.1、Cursor介绍

Cursor是基于VSCode的开源版本开发的客户端,因为其用户体验非常好,所以在此做个简单的安利。直接通过官网下载安装即可。会员试用到期后apply等按钮无法使用(没有了灵魂),不过依然可以用核心对话功能。

Cursor的两个快捷键:

  • Ctrl+L:弹出聊天窗口。
  • Ctrl+K:在鼠标指针上弹出对话框。

其中一些非常棒的功能:

  • 对比,AI提供的示例代码右上角有个apply的按钮,如果和原代码有不一样的地方,则会diff显示对比。
  • 光标预测,比如修改了一个函数,通过tab键就可以跳到其他需要修改的地方。
  • 多行编辑,可以智能识别其他行业需要编辑类似代码。
  • 截图修复,直接截图问题到对话中。
  • 全工程搜索,通过对话栏中先输入@符号,可以选择文件或者文件夹,插件会扫描其中所有内容然后回答你,能快速帮助了解陌生的项目和工程。如输入:@/当前项目是做什么的?

官网上有功能演示,这里就不做演示了。

其实市面上的AI编程插件核心功能基本都有,但易用性还是Cursor最好。无论哪款产品,基本使用一下就会了,就不做太多介绍。

二、本地自己搭建AI编程工具

上文介绍了一些市面上商用的AI编程工具,需要有必要的网络条件才能使用。如果想在自己电脑上搭建一套本地的AI编程助手该怎么实现?

由于篇幅问题,在此另开一篇专门介绍:《Ollama + Continue搭建一个离线开源的AI编程助手》

三、利用通义灵码编写一个简单的计算器

看在通义灵码免费的份上,我们支持国产试着通过通义灵码来编写一个计算器。

如果还没安装python的可以查看这篇文章:《Windows基于Anaconda搭建Python环境》

3.1、搭建项目

如下是提示词:

我是小白,我的环境是Windows,使用Anaconda搭建的Python环境。使用的编译器是VSCode。
请基于我的环境一步步教会我,使用PyQt 写一个计算器, 上面是显示部分,下面是1-9,还有加减乘除和等号,请给出具体的代码和执行步骤。

如下是通义给的回答,代码我就不贴出来了,完全就是作为一个复制机器人按照步骤执行,大家也可以自己试试:

复制创建好后,直接执行,如下所示至少能正常运行:

有一个要注意的细节,如果是通过VSCode的运行按钮执行,需要确认VSCode的环境变量是不是你的anaconda所activate的python环境。

anaconda环境搭建可以查看这篇文章:《Windows基于Anaconda搭建Python环境》

按快捷键 Ctrl+Shift+P 打开命令面板,输入并选择 Python: Select Interpreter,然后选择好对应的python即可。

3.2、优化项目结构

提示词如下:

请优化项目,按正常的工程划分包名和模块,并优化页面提供清除按钮C。

如下是通义的回答:

直接按照步骤修改,requirements.txt我们就不新建了,然后运行main,报错了。

没关系我们继续问它,可以把报错的截图粘贴到聊天框中。

好了,按提示修改后可以正常运行了。

3.3、优化细节

提示词如下:

1、再把页面美化一下。2、加上键盘按键监听。3、点击等于号之后之前的运算过程不应该隐藏。请给出完整的代码。

使用其更新后的内容,报错了。国产大模型还需要加油啊,在此就需要一些开发经验才行,如果完全不懂代码会有点抓瞎。

这里又不得不提一下Cursor了,同样的提示词,Cursor给出的代码更加优雅,并且没有报错直接执行通过了。

下文继续和通义的调试过程:

依然报错,换了几个提示词提问,给出的代码还是报错。没办法,只能认真读了下代码,发现了问题,指出来告诉通义,它才修改正确:

获取按钮文本时还是会有问题,应该需要调用sender()方法。获取按钮文本和获取键盘事件的文本应该要区分开。
请给出完整的代码。

终于程序能正常运行了,但是还有个BUG,我输入的4+5,点击等于号后计算过程没了。

继续提问,把上图的错误截图也粘贴上去,回答结果如下:

修改完后终于算是勉强跑通了:

最后,支持国产。但还是感慨Cursor真的好用。

全部评论