搜索
bottom↓
回复: 28

用 ChatGPT 帮忙写代码本来是一件愉快的事情,结果 R 他先人!

[复制链接]

出280入168汤圆

发表于 2023-2-24 16:02:19 | 显示全部楼层 |阅读模式
本帖最后由 chunjiu 于 2023-2-24 16:11 编辑

本来在半小时内就能解决的事情,但因为网络不停的出现故障中断,折腾了一个下午才搞完,大家可以一起 R 他先人!

PS:

对前面问题的回答是残缺不全的,最后这个问题是综合前面回答来改的,尽量把自己的需求说清楚,不产生歧义。

ChatGPT 最终的回答可以满足需求了。


问:
用 python 代码解析一个 vmess  协议字符串,并返回一个字典。这个字符串使用 “vmess://” 开头,剩下的是使用 base64 编码的 URL 内容。在对它解析完成后,第一步先检查解析出的必要元素是否完整,第二步对每一个解析出的元素值内容检查是否合法。如果在此过程中出现任何一个错误,就将检查结果从标准输出中打印出来,并返回 None。

答:
可以使用上述代码的基础上进行修改,将所有的错误信息都存储到一个列表中,并在遍历完所有元素后,判断错误列表是否为空,如果为空,则返回解析后的字典,否则将错误信息打印到标准输出,并返回 None。

以下是修改后的代码实现:

  1. import base64
  2. import json


  3. def parse_vmess(vmess_str):
  4.     # 检查协议是否合法
  5.     if not vmess_str.startswith('vmess://'):
  6.         print('Invalid vmess protocol.')
  7.         return None

  8.     # 对 URL 进行 base64 解码
  9.     url_str = base64.urlsafe_b64decode(vmess_str[8:]).decode('utf-8')

  10.     # 将 URL 字符串解析为字典
  11.     try:
  12.         vmess_dict = json.loads(url_str)
  13.     except json.JSONDecodeError:
  14.         print('Failed to decode vmess string.')
  15.         return None

  16.     # 检查必要元素是否存在
  17.     required_keys = {'v', 'ps', 'add', 'port', 'id'}
  18.     if not required_keys.issubset(vmess_dict.keys()):
  19.         print('Missing required keys.')
  20.         return None

  21.     # 检查每一个元素的值是否正确
  22.     errors = []
  23.     if not isinstance(vmess_dict['v'], str):
  24.         errors.append('v must be a string.')
  25.     if not isinstance(vmess_dict['ps'], str):
  26.         errors.append('ps must be a string.')
  27.     if not isinstance(vmess_dict['add'], str):
  28.         errors.append('add must be a string.')
  29.     if not isinstance(vmess_dict['port'], int) or not (0 <= vmess_dict['port'] <= 65535):
  30.         errors.append('port must be an integer between 0 and 65535.')
  31.     if not isinstance(vmess_dict['id'], str):
  32.         errors.append('id must be a string.')
  33.     if 'aid' in vmess_dict and not isinstance(vmess_dict['aid'], int):
  34.         errors.append('aid must be an integer.')
  35.     if 'net' in vmess_dict and vmess_dict['net'] not in {'tcp', 'kcp', 'ws', 'http', 'quic'}:
  36.         errors.append('net must be one of tcp, kcp, ws, http or quic.')
  37.     if 'type' in vmess_dict and vmess_dict['type'] not in {'none', 'http', 'tls'}:
  38.         errors.append('type must be one of none, http or tls.')
  39.     if 'host' in vmess_dict and not isinstance(vmess_dict['host'], str):
  40.         errors.append('host must be a string.')
  41.     if 'path' in vmess_dict and not isinstance(vmess_dict['path'], str):
  42.         errors.append('path must be a string.')
  43.     if 'tls' in vmess_dict and not isinstance(vmess_dict['tls'], str):
  44.         errors.append('tls must be a string.')

  45.     if errors:
  46.         print('Invalid vmess parameters:\n{}'.format('\n'.join(errors)))
  47.         return None

  48.     return vmess_dict
复制代码

出0入618汤圆

发表于 2023-2-24 17:14:25 | 显示全部楼层
看你的问题描述觉得这样一点都不愉快。

出1990入83汤圆

发表于 2023-2-24 17:47:33 来自手机 | 显示全部楼层
能画原理图Layout吗?嘿嘿

出0入0汤圆

发表于 2023-2-24 17:55:17 | 显示全部楼层
PowerAnts 发表于 2023-2-24 17:47
能画原理图Layout吗?嘿嘿
(引用自3楼)

原理图就先别想,要是能PCB layout就不错了

出280入168汤圆

 楼主| 发表于 2023-2-24 17:59:54 | 显示全部楼层
gzhuli 发表于 2023-2-24 17:14
看你的问题描述觉得这样一点都不愉快。
(引用自2楼)

对问题的更改还算比较方便,因为 chatgpt 出结果很快,一看到结果就知道歧义在哪儿了,补充一下就好了。

对比之下,去翻查 python 和 urllib 的手册、寻找和理解 vmess  的协议说明可并不轻松。  

出280入168汤圆

 楼主| 发表于 2023-2-24 18:01:04 | 显示全部楼层
PowerAnts 发表于 2023-2-24 17:47
能画原理图Layout吗?嘿嘿
(引用自3楼)


感觉用它生成一个约束会比较方便,在 PCB 设计上肯定能找到可利用的地方

出0入618汤圆

发表于 2023-2-24 18:13:56 | 显示全部楼层
chunjiu 发表于 2023-2-24 17:59
对问题的更改还算比较方便,因为 chatgpt 出结果很快,一看到结果就知道歧义在哪儿了,补充一下就好了。
...
(引用自5楼)

GPT给出的并不是可信结果,所以理解协议和读懂ChatGPT给出的程序一样少不了,感觉没省多少事,何况debug别人的程序从来都是一种痛苦。

出280入168汤圆

 楼主| 发表于 2023-2-24 18:25:52 | 显示全部楼层
本帖最后由 chunjiu 于 2023-2-24 18:29 编辑
gzhuli 发表于 2023-2-24 18:13
GPT给出的并不是可信结果,所以理解协议和读懂ChatGPT给出的程序一样少不了,感觉没省多少事,何况debug ...
(引用自7楼)


只要将程序切成小段就方便了,实现单一功能就很容易检查,

主要是想省去很多 bing 资料的步骤,国内的网络环境只能用垃圾场来形容,太耗费时间精力了,

改用 ChatGPT 可以快速哦检索出自己需要的资料。


PS:

还有一件事情很重要,不用翻 python 语法手册,我老花眼,看屏幕特别费劲 ...

例如,

先问好相关资料,再检查它的代码(有小错误,需要换几种方式问来确认):


问:

可以用详细的说明来解释 Vmess 协议中每一个元素的用途和用法吗?


答:

当配置 Vmess 客户端时,我们需要将服务器信息填入 Vmess URL 中,这个 URL 包含了多个元素。以下是每个元素的详细说明:

vmess://:表示使用 Vmess 协议,必须以 vmess:// 开头,否则客户端无法识别该链接。

uuid:表示用户 ID,是用于验证客户端与服务器之间的身份识别,由 32 个字符组成的字符串。这个值是由服务器生成,可以在服务器端配置文件中找到,客户端需要使用相同的 ID 才能成功连接到服务器。如果服务器没有配置 uuid,可以在客户端中自行生成一个 uuid。

security:表示加密方式,Vmess 支持多种加密方式,例如 aes-128-gcm、chacha20-poly1305 等。客户端必须与服务器使用相同的加密方式,否则无法成功连接到服务器。

network:表示传输层协议,Vmess 支持 tcp 和 kcp 两种传输层协议,一般情况下推荐使用 tcp 协议。如果使用 kcp 协议,还需要指定一个 mtu 参数,表示最大传输单元,一般使用默认值即可。

address:表示服务器的 IP 地址,客户端必须填写服务器的正确 IP 地址才能成功连接到服务器。

port:表示服务器的端口号,客户端必须填写正确的端口号才能成功连接到服务器。一般情况下,Vmess 使用的端口号是 443 或者 80。

type:表示连接类型,Vmess 支持多种连接类型,包括 none、http、ws 等类型。如果使用连接类型为 http 或 ws,还需要指定一个 path 参数,表示连接的路径。

path:表示连接的路径,仅当连接类型为 http 或 ws 时才需要指定。这个参数的值一般是由服务器生成,客户端需要与服务器使用相同的路径才能成功连接到服务器。

tls:表示是否使用 TLS 安全传输协议,仅当连接类型为 http 或 ws 时才需要指定。如果启用了 TLS,需要指定一个 serverName 参数,表示服务器的名称。

总之,Vmess 协议的每个元素都有特定的含义和用途,客户端必须根据服务器的配置信息正确地填写这些元素,才能成功连接到服务器并进行安全的数据传输。

出0入618汤圆

发表于 2023-2-24 18:31:33 | 显示全部楼层
chunjiu 发表于 2023-2-24 18:25
只要将程序切成小段就方便了,实现单一功能就很容易检查,

主要是想省去很多 bing 资料的步骤,国内的网 ...
(引用自8楼)

将写程序变成调教ChatGPT,感觉心更累了。

出0入618汤圆

发表于 2023-2-24 18:44:15 | 显示全部楼层
ChatGPT最大的问题就是经常一本正经的胡说八道,也就是说你让它解释Vmess协议,它给出的答案未必是对的,你还是得Google确认一遍。

出0入4汤圆

发表于 2023-2-24 18:48:05 来自手机 | 显示全部楼层
gzhuli 发表于 2023-2-24 18:31
将写程序变成调教ChatGPT,感觉心更累了。
(引用自9楼)

感觉半生半熟的开发环境,用这个倒是不错的选择,bing资料太零散了,要求不高,它能快速总结资料。

出300入477汤圆

发表于 2023-2-24 19:04:27 来自手机 | 显示全部楼层
gzhuli 发表于 2023-2-24 18:44
ChatGPT最大的问题就是经常一本正经的胡说八道,也就是说你让它解释Vmess协议,它给出的答案未必是对的,你 ...
(引用自10楼)

对,这是个很大的问题。
它说岀来的东西从语法上没毛病,也很像真人的语气,但内容很可能是胡说八道。。。
你得自己检验它说的内容

出280入168汤圆

 楼主| 发表于 2023-2-24 19:24:45 | 显示全部楼层
gzhuli 发表于 2023-2-24 18:44
ChatGPT最大的问题就是经常一本正经的胡说八道,也就是说你让它解释Vmess协议,它给出的答案未必是对的,你 ...
(引用自10楼)

这个现在倒不是大问题,在传统搜索引擎的网页上慢慢翻查才是折磨人呢,

点了很多网页进去了根本不是你想要找的东西,太浪费时间感情。

目前用 ChatGPT 先归纳,再分析关键字,然后再查找就方便了。

我能感觉到的好处是节约了很多乱翻网页的时间,

尤其是在很多编程语言之间切换的时候,语法就不再是难题了,

拿 ChatGPT 给出的结果改改就行了。

出280入168汤圆

 楼主| 发表于 2023-2-24 19:26:19 | 显示全部楼层
redroof 发表于 2023-2-24 19:04
对,这是个很大的问题。
它说岀来的东西从语法上没毛病,也很像真人的语气,但内容很可能是胡说八道。。 ...
(引用自12楼)

这玩意儿哪能轻信啊?

自己写的代码也要检查几遍吧

出0入71汤圆

发表于 2023-2-24 19:56:00 | 显示全部楼层
宁可我给别人一千个BUG,也不让别人给我一个BUG

出0入618汤圆

发表于 2023-2-24 20:04:54 | 显示全部楼层
chunjiu 发表于 2023-2-24 19:24
这个现在倒不是大问题,在传统搜索引擎的网页上慢慢翻查才是折磨人呢,

点了很多网页进去了根本不是你想 ...
(引用自13楼)

估计你用bing和百度比较多?google从来不觉得找资料很难。

出280入168汤圆

 楼主| 发表于 2023-2-24 21:04:04 | 显示全部楼层
gzhuli 发表于 2023-2-24 20:04
估计你用bing和百度比较多?google从来不觉得找资料很难。
(引用自16楼)

Google 时不时的会抽下风,所以基本上是 Bing,

它实在不行了才努力去 Google。

出700入127汤圆

发表于 2023-2-24 21:40:53 | 显示全部楼层
amwjz 发表于 2023-2-24 17:55
原理图就先别想,要是能PCB layout就不错了
(引用自4楼)

它要是不能“看”明白原理图, layout 都不要想。 它哪知道哪根线要多粗, 信号传输回路都不知,谁敢让它画

出0入618汤圆

发表于 2023-2-25 18:22:24 | 显示全部楼层
Aper-2020 发表于 2023-2-24 21:40
它要是不能“看”明白原理图, layout 都不要想。 它哪知道哪根线要多粗, 信号传输回路都不知,谁敢让它 ...
(引用自18楼)

已经有老外让ChatGPT画出KiCad原理图符号和网表了,虽然并不完美,但至少是真的能够放到KiCad里面用的。

出0入618汤圆

发表于 2023-2-27 14:22:22 | 显示全部楼层
chendaon 发表于 2023-2-24 18:48
感觉半生半熟的开发环境,用这个倒是不错的选择,bing资料太零散了,要求不高,它能快速总结资料。 ...
(引用自11楼)

刚刚在网上看到的截图,如果你对逻辑电路半生不熟,它会一本正经的告诉你XOR可以实现任意逻辑组合,乍一看还挺像那么回事的。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入46汤圆

发表于 2023-2-27 20:26:53 | 显示全部楼层
我感觉,以ChatGPT的基础语言能力,在不同领域使用准确的知识做定向学习,就会产生极大的影响力。

然后,然后:这样的ChatGPT变成一个节点,地球上有无数多个比现在ChatGPT还强的节点进行组合。形成一个更大的网络,不知道这个会成为神马东东!

出0入8汤圆

发表于 2023-2-27 20:29:06 | 显示全部楼层
PowerAnts 发表于 2023-2-24 17:47
能画原理图Layout吗?嘿嘿
(引用自3楼)

可以啊, 支持python的画图软件, 用chatGPT帮你写python代码, 不就完了

出0入12汤圆

发表于 2023-3-2 10:38:43 | 显示全部楼层
本帖最后由 xuyw123 于 2023-3-2 10:40 编辑

chatGPT上让它推荐书籍,基本上推荐的都搜不到这本书,尽管它也给了作者跟出版社,这AI还能造假呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出280入168汤圆

 楼主| 发表于 2023-3-2 11:34:03 | 显示全部楼层
xuyw123 发表于 2023-3-2 10:38
chatGPT上让它推荐书籍,基本上推荐的都搜不到这本书,尽管它也给了作者跟出版社,这AI还能造假呢 ...
(引用自23楼)

感觉还是投喂的资料太少了(缺少训练),网上的中文资料本来就乱,它就胡说八道了 ...

出150入135汤圆

发表于 2023-3-2 12:12:30 来自手机 | 显示全部楼层
估计它也头疼中文博大精深

出0入12汤圆

发表于 2023-3-2 13:47:49 | 显示全部楼层
chunjiu 发表于 2023-3-2 11:34
感觉还是投喂的资料太少了(缺少训练),网上的中文资料本来就乱,它就胡说八道了 ...   ...
(引用自24楼)

这AI也太不诚实了,有就有没有就没有嘛,搞得我还很相信他,搜了一堆扔给同事,结果别人说没有一本书是能查到的

出0入0汤圆

发表于 2023-3-2 14:58:12 | 显示全部楼层
有时它会一本正经的胡说八道,别过于相信,要确认一下才行

出16170入6148汤圆

发表于 2023-4-2 04:45:33 来自手机 | 显示全部楼层
帖子移动通知:
原分论坛:☆阿莫百科
目标分论坛:机器人/AI
移动时间:0小时之后

出0入4汤圆

发表于 2023-4-3 22:42:18 | 显示全部楼层
ChatGPT,  重点是 Chat ,  就是个聊天软件, 无聊时逗你开心而已,不要太认真。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 05:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表