码农饭碗不保——ChatGPT正在取代Coder

最近被OpenAI的ChatGPT刷屏了。我猜你已经读了很多关于ChatGPT的文章,不需要再介绍了。假如碰巧您还不太了解ChatGPT是什么,可以先看一下这篇文章,然后再回来继续。
与ChatGPT对话很有趣,甚至很有启发性。我们的内容创作部门已经将ChatGPT用于文案生成。那么对研发部门,ChatGPT是否有用呢?我在算法团队做了一个测试,让ChatGPT来完成算法研究中频繁要做的数据清洗和处理问题,结果让人非常满意。我甚至愿意聘请ChatGPT做算法团队的数据工程师。

简单数据处理

我们首先从简单的任务入手,让ChatGPT完成数据加载和简单的清洗工作。

任务目标

上面这4个任务是算法执行前必须要做的常规工作。我们看一下ChatGPT的表现

输出结果

import pandas as pd
import numpy as npdef load_csv_data(file_path):# Load the csv file into a pandas DataFramedf = pd.read_csv(file_path)# Convert string type data to numeric type and save the mapping in a dictionaryconversion_map = {}for column in df.columns:if df[column].dtype == 'O':unique_values = df[column].unique()conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}df[column] = df[column].map(conversion_map[column])# Check for missing valuesmissing_value_counts = df.isnull().sum()for column, missing_count in missing_value_counts.items():if missing_count > 1:df.drop(df[df[column].isnull()].index, inplace=True)elif missing_count == 1:df[column].fillna(df[column].mean(), inplace=True)# Split the dataset into training and validation setstrain_df = df.sample(frac=0.8, random_state=0)val_df = df.drop(train_df.index)return train_df, val_df, conversion_map

分析

上面代码可以完美完成目标任务,从csv文件中加载数据集,并以80/20的比例将数据集拆分为测试集和训练集,关键逻辑还加上了注释,ChatGPT甚至贴心的给出了函数使用方法。
ChatGPT生成上面代码总共用时116秒,同时我们的数据工程师编写同样功能的代码用时225秒。二者的代码差异不大,但是我们的数据工程师没写注释。
上面的任务是数据工程师几乎天天都要写的代码,他们很熟练。我又找了一个大学刚毕业还在实习期的数据助理来写,居然半个小时才完成,由于对接口不熟悉,大量时间花在了百度上[捂脸]。
第一轮比试,从各个维度上,都是ChatGPT胜。

重构代码

在上一轮的比试中,我发现我们的数据工程师有“偷鸡”行为——由于平时经常需要完成上面工作,他将很多功能封装成了独立的函数,用的时候直接引入或拷贝。使用函数按照逻辑组织代码,不仅能够促进代码复用,还有利于代码维护。所以我们接下来试着让ChatGPT重构一下自己的代码。

任务目标

将上面的代码按照功能合理地拆分成若干函数。

输出结果

import pandas as pd
import numpy as npdef load_csv(file_path):return pd.read_csv(file_path)def convert_strings_to_numeric(df):conversion_map = {}for column in df.columns:if df[column].dtype == 'O':unique_values = df[column].unique()conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}df[column] = df[column].map(conversion_map[column])return df, conversion_mapdef handle_missing_values(df):missing_value_counts = df.isnull().sum()for column, missing_count in missing_value_counts.items():if missing_count > 1:df.drop(df[df[column].isnull()].index, inplace=True)elif missing_count == 1:df[column].fillna(df[column].mean(), inplace=True)return dfdef split_data(df):train_df = df.sample(frac=0.8, random_state=0)val_df = df.drop(train_df.index)return train_df, val_dfdef prepare_data(file_path):df = load_csv(file_path)df, conversion_map = convert_strings_to_numeric(df)df = handle_missing_values(df)train_df, val_df = split_data(df)return train_df, val_df, conversion_map

分析

ChatGPT拆分出5个函数:

  • load_csv(file_path) 负责从csv文件中加载数据集,返回DataFrame;
  • convert_strings_to_numeric(df) 负责将DataFrame中的非数值类型数据转换为数值类型,并记录转换映射表;
  • handle_missing_values(df) 负责处理缺失值;
  • split_data(df) 负责将数据集拆分为训练集和测试集;
  • prepare_data(file_path) 将上面4给函数串起来,构成一个pipeline。
    不得不说,ChatGPT有一次完美地完成了任务!并且函数名起得非常好,看函数名就能知道函数的功能,比很多中国程序员用拼音或缩写命名函数友好多了。

扩展代码

重构后的代码结构已经非常清晰了,但是还是有缺陷,那就是不够灵活,很多规则都是写死的。为了让代码更灵活、可扩展性更强,我们一般会将变量以参数的形式传入。

任务目标

重构上面的代码,以参数的形式从命令行传入以下内容:

  • csv格式数据集的路径
  • 拆分训练集和验证集的大小
  • 阈值,缺失值大于此阈值则删除记录,小于等于此阈值则处理缺失值

输出结果

import pandas as pd
import numpy as np
import argparsedef load_csv(file_path):return pd.read_csv(file_path)def convert_strings_to_numeric(df):conversion_map = {}for column in df.columns:if df[column].dtype == 'O':unique_values = df[column].unique()conversion_map[column] = {unique_values[i]: i for i in range(len(unique_values))}df[column] = df[column].map(conversion_map[column])return df, conversion_mapdef handle_missing_values(df, threshold):missing_value_counts = df.isnull().sum()for column, missing_count in missing_value_counts.items():if missing_count > threshold:df.drop(df[df[column].isnull()].index, inplace=True)elif missing_count <= threshold:df[column].fillna(df[column].mean(), inplace=True)return dfdef split_data(df, split_ratio):train_df = df.sample(frac=split_ratio, random_state=0)val_df = df.drop(train_df.index)return train_df, val_dfif __name__ == "__main__":parser = argparse.ArgumentParser(description='Prepare data for machine learning.')parser.add_argument('file_path', help='Path to the csv file.')parser.add_argument('--split-ratio', type=float, default=0.8, help='Ratio of the training set size.')parser.add_argument('--threshold', type=int, default=1, help='Threshold for handling missing values.')args = parser.parse_args()df = load_csv(args.file_path)df, conversion_map = convert_strings_to_numeric(df)df = handle_missing_values(df, args.threshold)train_df, val_df = split_data(df, args.split_ratio)

分析

ChatGPT很好地理解了我们的意图,引入了argparse模块来管理和解析命令行参数,关键是参数名起的也非常合理,参数说明也非常准确(尽管是英文的)。参数都正确地传入了所属的函数,又一次完美的完成了任务。

总结

ChatGPT根据我们提供的规范,在创建、重构、扩展一个简单的数据预处理Python脚本方面做得非常出色,每一步的结果都符合要求。虽然这不是一个复杂任务,确实日常工作中最常见的基本工作。ChatGPT的表现确实惊艳了众人,预示着它朝着成为真正有用的编程助手迈出重要的一步。
最终我们从如下几个方面将ChatGPT和我们的数据工程师做了对比:

ChatGPT人类程序员
正确性
速度
编码规范
文档注释

可见ChatGPT在编码速度和编码习惯上都完胜人类工程师。这让我不得不开始担心程序员未来的饭碗。是的,你没有看错!程序员这个曾经被认为是最不可能被AI取代的职业,如今将面临来自ChatGPT的巨大挑战。根据测试,ChatGPT已经通过Google L3级工程师测试,这意味着大部分基础coding的工作可以由ChatGPT完成。尽管ChatGPT在涉及业务的任务上表现不佳,但未来更可能的工作方式是架构师或设计师于ChatGPT协同完成工作,不再需要编码的码农。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/6332.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款 ChatGPT 跨平台客户端,已开源

今天推荐的这个项目是「ChatGPT-Desktop」&#xff0c;基于 tauri vue3 开发的 ChatGPT 跨平台客户端&#xff0c;快捷键快速唤醒窗口&#xff0c;问答快人一步。 ChatGPT-Desktop 的优势 使用 tauri 构建项目&#xff0c;使项目包更加小巧精简&#xff0c;资源占用更少&#…

android两行代码检测手机号是否注册whatsapp

通过安卓scheme 调起whatsapp 实现此手机号有没有在whatsapp注册的检测 需要在安卓中写入如下代码&#xff0c; Uri uri Uri.parse("whatsapp://send?phone8618800008888"); startActivity(new Intent(Intent.ACTION_VIEW,uri)); 检测手机号需要带上国家区号&a…

天猫精灵智能设备对接(3)

这一篇文章主要讲解服务器端的设置&#xff0c;这里我使用的是腾讯云&#xff0c;当时学生价1块钱一个月买的&#xff0c;现在的学生价涨到了10块&#xff0c;为我当时的机智点赞。为什么一定要使用服务器呢&#xff0c;这个是因为天猫精灵协议的对接是云服务器与云服务器的对接…

设备接入天猫精灵教程(一)

现在网上接入天猫精灵的教程基本都是云对云接入&#xff0c;需要搭建服务器&#xff0c;写硬件程序&#xff0c;费时又复杂。这次结合之前的阿里云教程做一个通过阿里云物联网平台接入天猫精灵的教程&#xff0c;免去了服务器开发&#xff0c;大大的降低了难度。 整体业务流程如…

安信可ESP8266模块实现对接天猫精灵IOT平台控制单路插座的教程

文章目录 一、材料准备二、软件配置 一、材料准备 天猫精灵一个&#xff0c;ESP8266模块一个&#xff08;为了方便接线我们直接使用了Nodemcu开发板&#xff09;&#xff0c;插座一个&#xff08;方便查看现象&#xff09;&#xff0c;杜邦线若干&#xff0c;接线方式如下 No…

【2019年中总结】五种途径对接天猫精灵音响控制您的智能设备,打破传统产业,让语音AI控制无处不在!

文章目录 一、写在前面&#xff1b;二、天猫精灵开放平台&#xff1b;AliGenie开发者平台 三、途径1&#xff1a;早期阿里智能平台 ----- 阿里小智。四、途径2&#xff1a;云云对接。五、途径3&#xff1a;蓝牙直连&#xff08;sig mesh&#xff09;。六、途径4&#xff1a;WiF…

esp8266对接天猫精灵(11)终端编程

一、编写lua脚本获取控制信息&#xff08;8266&#xff09; 前边也说过&#xff0c;这个脚本要实现的步骤可以分三步&#xff0c;第一步是联网&#xff0c;第二步是使用http get到数据&#xff0c;然后控制要控制的设备。我们的lua脚本分为两个&#xff0c;一个是init.lua,另外…

esp8266对接天猫精灵(3)原理

这一篇文章主要讲解服务器端的设置&#xff0c;这里我使用的是腾讯云&#xff0c;当时学生价1块钱一个月买的&#xff0c;现在的学生价涨到了10块&#xff0c;为我当时的机智点赞。为什么一定要使用服务器呢&#xff0c;这个是因为天猫精灵协议的对接是云服务器与云服务器的对接…

【esp8266】③esp8266对接天猫精灵实现语音控制

源码github地址&#xff1a;https://github.com/linzhongpaihuai/smartplug ①烧录方法&#xff1a;https://blog.csdn.net/u010177891/article/details/90348729 ②esp8266实现http server服务详解&#xff1a;https://blog.csdn.net/u010177891/article/details/100024710…

AI测试|天猫精灵智能音箱测试策略与方法

一、业务介绍 2014年11月&#xff0c;亚马逊推出了一款全新概念的智能音箱&#xff1a;Echo&#xff0c;这款产品最大的亮点是将智能语音交互技术植入到传统音箱中&#xff0c;从而赋予了音箱人工智能的属性。这个被称为“Alexa”的语音助手可以像你的朋友一样与你交流&#x…

TB-02_Kit 开发板连接天猫精灵

TB-02_Kit 开发板简介 Tb-02_Kit是安信可设计的一款蓝牙开发板&#xff0c;支持二次开发&#xff0c;串口烧录。除了基础蓝牙功能外&#xff0c;还支持BLE Mesh&#xff0c;可连接天猫精灵。 安信可串口烧录工具 TBXX_Flash_Tool 是安信可自主开发的针对TB系列模块的串口烧录…

ESP8266连接天猫精灵(一)

背景 接触天猫精灵后&#xff0c;就想作一些小东西能接入天猫精灵。查看官网的文档后&#xff0c;选择了ESP系列&#xff0c;官方在文档中也比较推荐。读技术文档是个很难受的事情&#xff0c;容易犯困&#xff0c;最好有可以操作的设备。准备如下&#xff1a; 名称 规格 备注…

天猫精灵开发网关php开发,天猫精灵对接

天猫精灵对接 完整控制流程图 与天猫精灵对接后&#xff0c;终端用户可以通过对天猫精灵说出控制命令来调用云端的业务逻辑&#xff0c;最终将正确的操作反馈给用户。 流程图如下所示。 相关连接汇总 开发者网站&#xff1a;https://open.bot.tmall.com/account/login 添加新技…

Java实现天猫精灵与智能设备的对接

天猫精灵与公司智能设备的对接。刚接到这个任务的时候对于一个刚毕业一个月的应届生我来说&#xff0c;有点像巨石&#xff0c;不过经历了10多天的自己琢磨&#xff0c;还是终于把这个新东西搞出来了。楼主是学的java&#xff0c;但在查询相关文章的时候发现没有一篇是用java实…

esp8266对接天猫精灵 微信控制

首先注册账号采用贝壳物联的服务器 添加自己的接口 资料下载地址 链接&#xff1a;https://pan.baidu.com/s/13TWrygx8w6r6llGWlS3kQg 提取码&#xff1a;IH23 链接&#xff1a;https://pan.baidu.com/s/11irBUU56Ck_qceQNSJkNMw 提取码&#xff1a;llal 相关的修改在脚…

esp8266接入天猫精灵教程,附开源app控制

超简单&#xff0c;两步完事 第一步 下载程序到esp8266第二步 绑定天猫精灵第三步 &#xff08;附&#xff09;开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开发&#xff0c;关于arduino IDE 的ESP8266环境配置可参考&#xff1a;环境…

使用ESP8266通过Blinker平台接入天猫精灵控制电视/空调

目录 演示视频 1.准备工作1.1 原理1.2 使用的硬件以及硬件连接图1.3 开发环境准备 2.解码空调红外键值2.1 把ESP8266红外接收的实例&#xff0c;上传到NodeMCU中2.2 读取红外键值 3. 配置Blinker App的UI界面4.Arduino程序的编写4.1 控制逻辑4.2 新建一个Arduino程序&#xff0…

蓝牙mesh设备接入天猫精灵或者百度音响

天猫与百度双网关方案 验证双vendor 支持天猫精灵&百度 一、mesh配网协议&#xff08;mesh provisioning&#xff09; 1.1、Provisioning协议栈 1.2、PB-ADV (通过百度或天猫精灵音响直接配网) The PB-ADV bear用来传输Generic Provisioning PDUs类型&#xff0c;PB-AD…

国内就能用的Chat-GPT分享

人工智能在语音理解与交互的新里程碑 AI聊天平台 在人工智能&#xff08;AI&#xff09;领域&#xff0c;语言模型的发展日新月异。这其中&#xff0c;OpenAI所推出的GPT系列语言模型尤为显眼&#xff0c;尤其是其中的一员——ChatGPT&#xff0c;已经在人工智能的语言理解与…

速看!又一个 Redis 高危漏洞,可植入隐秘后门允许命令执行

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; 被研究人员称之为Redigo的一种基于Go的新的恶意软件&#xff0c;它一直针对有CVE-2022-0543漏洞的Redis服务器并植入一个隐秘的后门允许命令执行。 CVE-2022-0543是Redis&#xff0…