ai代码工具 大语言模型 AI 辅助编码使用过程体验报告(Github Copilot、Cur

默认分类1年前 (2023)发布 admin
34 0
ChatGPT国内版

编码感受和评估

在过去一周多的时间里,我在的协助下,生成了做一个简单编辑器的产品文档、技术方案文档,然后在这个基础上,进行程序的编码。

使用的工具纪要

为了更全面地感受AIIDE对研发过程的影响,我特意选择了一个我不太了解的项目,并且以整体形式做下来,从中深度感受AIIDE对我们开发过程的影响。

产品文档和技术文档生成的辅助工具:,-

编程过程使用的编程工具:+/,

涉及的编程语言:、CSS、HTML、、SQL

涉及的组成部分:前端、后台、数据库、相关的图形处理接口

累计耗时:在过去一周多,断断续续地使用了15+小时(包括生成产品和技术方案文档,有不少时间用于排查程序Bug)。

代码规模:1500行+

个人使用感受记录 使用的第一感受

产生一种惊喜感,发现用它来做我所不了解的项目,也能对我形成比较大的帮助。

显著减少了我查询和搜索技术文档的时间,通过对话,能直接完成不少的工作。

是一种开发模式的变革,虽然现在还存在不足,但是,潜力无限!

关于研发效率

会有提升,但是比例不会很大,个人感觉30%左右,因为生成的结果代码仍然需要进一步的详细和测试。

在描述非常详细的情况下,例如登录功能,它生成了详细的异常判断逻辑,这一块的生成非常快。当提供给它的比较模糊时,则需要多次互动,而且未必能提供符合我们预期的代码。

关于IDE的选择(推荐)

非常推荐使用,它不仅支持对话,而且能够选中指定代码,让它做逻辑修改,它会将修改记录反馈出来,问你是否?并且,能够清晰看见它进行的代码改动。支持精细化控制,使用过程中,个人的强烈感受到,选中的范围越小、越细,它的结果越好,错误也越少。

如下图所示(我让它给添加样式):

指定具体的函数,让它添加代码注释。

注释添加的结果:

关于它的不足之处(关键阅读项):

代码规模少的时候,例如只有1个文件,100-200行代码时,它生成和修改都比较准确,当代码规模和文件逐渐变多,逻辑变多时,它的生成和修改变得有误,会遇到包括变量未定义、错删代码、没有考虑上下文逻辑等问题。缩小代码的选中范围、让变得更详细能够一定程度上减少问题,但是,仍然会出现。

生成的代码中,偶尔会含有不存在的、但是命名很通用的样式、函数,它有时会默认认为你的上下文中存在这种“通用”函数,实际上并没有。

如果我修改的逻辑要同时改动多个文件,该功能并不支持,它目前只支持一个文件一个文件修改。不过,使用对话功能,它能以对话的方式告诉我们要在多个文件里修改代码,此时要我们手动复制和修改代码。

开发者对开发领域具体问题的认知仍然非常重要,如果开发者在里没有提及,则它生成的代码也不考虑。例如,需要等待img.src的load完成后再重新刷新画布,如果不提及,它的代码就是直接刷新画布,此时由于img并没有load完成,画布刷新的内容是空白的。

相比于生成文档、注释,程序代码对错误几乎是零容忍度的,一个未定义的变量就可以让整个程序完全终止运行,但是,生成文档有少量错误是不影响文档的阅读的,出版社对著作出版要求错误率达到万分之一。对于一个大规模程序而言,这个要求要高得多。

根据个人对NLP领域AIGC的理解,AIGC本质是根据前文推理下文,模型精度越高,推理越准确,对于代码来说,则要求推理的准确度非常高,后面2-3代的GPT可能能解决该问题。

对话中,反馈结果以英文为主,偶尔才能看见中文。

简要总结:

短期看,GPT还远不足以取代程序员,长期看,它的潜力无限,是一种趋势,随着它持续升级和迭代,预计它对研发效率的提升会越来越多。

我们应当拥抱AIIDE,构造更详细、逻辑清晰的,充分利用它的能力提升研发效率。

编码过程纪要(部分): 帮我生成一个基于VueJS的登录HTML页面,包含如下逻辑:

与其他子模块的接口:无

业务数据描述:

边界值处理:

ai代码工具 大语言模型 AI 辅助编码使用过程体验报告(Github Copilot、Cur

修改为引用项目文件夹内的vue.js

登陆界面比较简陋,能帮我美化一下吗?

我想把页面元素居中

页面中的两个input没有对齐,帮我修改CSS

链接数据库操作

写一段代码,它的主要逻辑是读取用户表的账号密码,然后判断url请求传入的账号密码是否匹配,并且该文件能以web服务形式运行。

相关信息:链接MySQL数据库,IP是111.230.249.101,port是20086,库名是。

表结构:`users`(

`id`int(11)T,

“(16),

“(32),

“,

(`id`),

“(“)

)===utf8;

它的表编码为,不正确,修改为utf8

帮我写一个web图片编辑器页面,包含以下功能:

上传或的效果,表现比较差:

修复x报错

图片上传后,图片展示在里变形了,请修复该问题。画布先定义为1000*800

(AI一直没有找到,是人工找出来的)

用div包起来,画布固定到页面的右侧

画布支持上传多个图片,这些图片是共存的,并且,每个图片可以在画布中被移动.

这次它写得比较好,基本上只需要很少的修改就一步到位了。

这是上一条命令:画布支持上传多个图片,这些图片是共存的,并且,每个图片可以在画布中被移动。在上一条命令的基础上,除了支持移动之外,还支持选中图片后的放大和缩小。

它提供的代码犯了一个小错,上下文理解不到位,变量名不对。(人工:手动修正)

ai代码工具 大语言模型 AI 辅助编码使用过程体验报告(Github Copilot、Cur

在放大缩小问题上,它总是给我加这个事件,这个事件并不是我想要的,我想要的是稿定编辑器的那种效果。

但是,它添加的边框总是不生效,问了它多次,它也回答不出来。

人工发现,代码有Bug,这句话让边框自动消失了。

比较正常的代码需要保存,AI有时会把代码改乱,导致之前有的功能消失,例如,多张图片共存的能力。

在编辑器中,支持图片对象的选中和拖动

先问:基于实现的web编辑器中,要实现选中一张图,出现一个边框,可以拖过拖拉边框实现放大和缩小,html和JS代码要怎么实现?

,它们提供了一些示例代码和解释,如何使用实现图片的拖拽和缩放功能。基本思路是:

当选中某个图片时:

就当前阶段的AI而言,还是需要懂得代码,只是自己写的代码量变少了,程序员仍然有其价值。

添加缩放按钮,实现放大和缩小功能

AI实现了这个功能,但是没有考虑保持图片原来的比例。

修正:

编辑器简单旋转功能开发

增加旋转后,坐标计算错误:

让它纠正,它一直都改不过来,一直错(后来我手动修正)。

创建后端服务代码()

给当前代码增加跨域:放开cess–Allow-,允许跨域访问

from flask import Flask, request, jsonify
app = Flask(__name__)
# Connect to the MySQL database
mydb = mysql.connector.connect(
  host="111.230.249.101",
  port="20086",
  user="root",
  password="hello",
  database="editor"
)
# Define a route for the login page
@app.route('/login')
def login():
  # Get the username and password from the URL request
  username = request.args.get('username')
  password = request.args.get('password')
  # Query the user table for the given username and password
  mycursor = mydb.cursor()
  sql = "SELECT * FROM users WHERE username = %s AND password = %s"
  val = (username, password)
  mycursor.execute(sql, val)
  result = mycursor.fetchone()
  # If the query returns a result, the username and password are valid
  if result:
    response = jsonify({"message": "Login successful"})
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
  else:
    response = jsonify({"message": "Invalid username or password"})
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
if __name__ == '__main__':
  app.run()

能统一添加吗?这样每行都添加比较麻烦?

下文中的CORS(app)就实现了统一添加跨域头。

from flask import Flask, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# Connect to the MySQL database
mydb = mysql.connector.connect(
***
)
# Define a route for the login page
@app.route('/login', methods=['POST'])
def login():
  # Get the username and password from the request body
  data = request.json
  username = data['username']
  password = data['password']
  # Query the user table for the given username and password
  mycursor = mydb.cursor()
  sql = "SELECT * FROM users WHERE username = %s AND password = %s"
  val = (username, password)
  mycursor.execute(sql, val)
  result = mycursor.fetchone()
  # If the query returns a result, the username and password are valid
  if result:
    return jsonify({"message": "Login successful"})
  else:
    return jsonify({"message": "Invalid username or password"})
if __name__ == '__main__':
  app.run()

This IP 171.88.32.138 has been from to our . If you this to be in error, us at .

When us, the in the email:

: block

IP: 171.88.32.138

RAY ID:

GEO: CN

This IP 171.88.32.138 has been from to our . If you this to be in error, us at .

When us, the in the email:

: block

IP: 171.88.32.138

RAY ID:

GEO: CN

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...