利用chatgpt实现编程想法的实践-PyPower

PyPower

使用chatgpt一段时间后,萌生了一个想法:利用chatgpt辅助我编程。

大致需求是通过运行在树莓派上的网页服务来控制Windows主机关机,同时还可让树莓派发送wakeonlan数据包唤醒Windows电脑。最终实现的效果见上方链接。

代码编写过程

通过了好几天,数十次对话,终于把程序写出了。由于没有经验,这样一个简单的功能花了好几天的空闲时间才完成,中间数次向chatgpt请教网页知识。而且还不断调整需求。

下面是几个主要的提问:

  1. “如何实现利用python远程控制Windows电脑开机和关机。通过网络(局域网内)来控制,需要服务端是Windows,客户端是任何支持网络的设备。”
  2. “能否在Windows开启一个web服务,通过在局域网内网页来控制电脑关机呢”
  3. “如何添加身份验证呢?能否添加一个确认关机功能,直接访问网页就执行光机操作很容易误操作”
  4. “程序的架构是:Windows端作为服务器,只提供接口不需要渲染网页。树莓派运行网页服务,通过访问树莓派的上运行的网页来控制Windows关机。通过python来实现。”
  5. “修改树莓派的代码,用变量来设置 服务器的端口和ip”
  6. “不要修改代码原有的功能,在代码的基础上,添加一个检测电脑端服务是否开启的功能,并显示到网页上”
  7. “现在根据我刚刚给你的两个代码文件,判断项目内容。为这个项目写一个README”

经验&技巧

  1. 选择你擅长或者至少熟悉基础语法的语言。chatgpt生成的代码如果你不能大致看懂,那么让他写复杂一点的代码给你就很难了,chatgpt生成的代码可能有错误。比如说在这个项目的例子中,我只懂python的基础语法,对于用到flask框架,request wakeonlan库我都不了解。但是通过让chatgpt写上注释,我能做到简单的debug。
  2. 每次和chatgpt对话,当你向他要代码时,可以在最后加上“请加上合理的注释”。或者在对话最开始和chatgpt约定,只要发送代码都加上易读的指数。
  3. 由于chatgpt的会话限制,有可能chatgpt无法一次将完整内容发给你,内容会戛然而止。可以试着和chatgpt说“继续”,但是也有可能会出现chatgpt前言不搭后语。或者不同部分的功能分别询问,有意地控制chatgpt的内容不要超过限制。
  4. 当项目逐渐成型,代码变得很长,可以试着和chatgpt说:“请只给我修改或者新增的部分”。
  5. 如果让chagpt设计css,可以尝试让他使用bootstrap,效果还可以。