“新程序员”必须学会的8个GPT提问技术 | 抢免费注册DevChat名额
ChatGPT 等大语言模型给人带来惊喜也给人带来了焦虑。惊喜在于它给各种工作带来的提效是肉眼可见的,焦虑在于很多人都担心会被 AI 替代,可能工程师们对此最深有感触。很多工程师已经开始用 GPT 来处理一些手头的开发工作,可能是写脚本,也可能是 code review,不过 GPT 给编程带来的效能提升到底有多大?使用 GPT 来辅助编程的“正确姿势”是什么?你真的知道么?
7月26 日, DevData Talks 邀请到了思码逸创始人兼 CEO 任晶磊老师。为了获得将GPT应用于编程的真实手感,他与团队身体力行,用 GPT“写了一万行代码”,并开发一款基于 GPT 的开源编程工具 DevChat,并上线了 VS Code 插件。在这次直播活动中,他以《当我用 GPT 写了一万行代码:研发数据的现状和智能编程的未来》为主题,分享了通过自家产品的演进看数据智能的发展趋势,揭示 GPT 在软件开发领域的实际操作场景和优化技巧,并在直播后半段,为线上观众们答疑解惑,做了深度交流。
本文为演讲精华整理。由于演讲包含大量技术细节,篇幅有限,我们仅摘选了部分亮点,建议大家在文末扫码获取 PPT、观看视频回顾。
今天分享主要分为五部分:
-
GPT 编程能带来多大效能提升?
-
我可以问 GPT 什么问题?
-
我应该如何向 GPT 提问?
-
人在 GPT 编程中扮演什么角色?
-
GPT 在软件工程中扮演什么角色?
-
我们如何成长为“新程序员”?
GPT编程能带来多大效能提升?
+50%代码当量,注释和测试覆盖度大幅提升。
我们先从一个直白的数字谈起,到底用 GPT 之后有多大提升?我觉得要给一个数字的话,代码的产出量应该能比现在高50%,首先看下图,图为思码逸本身的统计,拿我们自己做 Devchat 项目为例,它是以 Python 为主要编程语言的项目。
我们从开源社区里找了一些 TOP500 的开源项目来做对比,他们也是平均周提交数在两三个人的项目。其实很多成熟的开源项目,周均提交可能就两三个人,那如果对比下来,周均 1000 当量,当量是通过代码分析所获得的一个代码复杂度的评估,不能通过数行数看大家写多少,那就当量来看的话,在 1000 当量每周,三个人平均计算之后,大概是 1500 到 2000 这样一个范围,所以基本上能加50%。
图为:思码逸 Devchat 统计
我可以问GPT什么问题?
下面我们来看跟 GPT 的各种具体交互,那这部分得有一个方法把它组织起来,所以我们以一个完整的实例,看从头到尾中间能用GPT去做哪些事情,例子比较有代表性:用 Golang 写一个 API 服务,跑 Kubernetes 里,那我们就从实例开始看, GPT 它能够帮助我们做哪些事情,能做到什么样的程度?
1.询问较为稳定的知识,辅助综合技术选型
需求不完全明确,可寻求一般性建议 ;如果需求明确,可快速提炼信息。
图为:Devchat提问解答过程
2.搭建脚手架或可运行的初始代码,让万事开头“易”
GPT能够完整的帮你把操作步骤都写出来,大家可以偷个懒,直接按照它的步骤敲代码就好。
图为:Devchat提问解答过程
3.向 GPT 反映错误信息,让它帮助 debug
把错误信息给到GPT,像这样的错误信息以前都读过,然后就能够给你相应的修正。
图为:Devchat提问解答过程
4.提供上下文,生成各类代码
把上下文给到GPT,将关系实质说清楚,不需要很复杂,然后它就能够把所做的修改都给出来。
图为:Devchat提问解答过程
5.IDE 无法支持又不涉及复杂架构设计的代码重构
图为:Devchat提问解答过程
6.提供目标源代码(和现有测试用例),生成新的测试用例
图为:Devchat提问解答过程
7.写提交信息(commit message)或者发布说明(release note)
图为:Devchat提问解答过程
8.理解指定范围内的已有代码,给出具有一定深度的解释和证据
图为:Devchat提问解答过程
我应该如何向 GPT 提问?
前面分享通过一些实例,一方面展示 GPT 本身的能力,另一方面也分享 GPT 的使用技巧,下面再总结一下如何向 GPT 提问。
1.提示词工程(prompt engineering)
底层信息组合,未必对用户可见,具体问题相关,必须由用户输入。
2.底层信息组合,未必对用户可见
3.具体问题相关,必须由用户输入
人在 GPT 编程中扮演什么角色?
用 GPT,你永远省不了超出你认知范围外的工作。
有了GPT之后,人和GPT到底是什么样的关系?我觉得上图基本上就概括了我们截至目前所体验下来的一个认知,人其实还是扮演了一个很重要的控制者的角色,基本上拆分起来就是这三个角色。
任务的组织者,你需要把这个任务本身进行比较合理的拆分,定义好这个问题,然后提供合理的上下文,这是人最重要的工作,这件事情目前我们试来试去,你让 GPT在去做这个层面的问题,往往其实做的不是很好,因为人有很多综合的判断。
过程指导者,你需要不断的给予反馈,调整提示词。往往有些时候你不一定在一轮都能达到好的结果,然后会多轮的去问。
结果验证者就是人最终还是那个主要负责人,你还是要为代码负责并做出判断。
GPT在软件工程中扮演什么角色?
汇集众多数据源的研发数据平台是智能化的基础。
这里用思码逸4.0产品来举例,GQM是做研发效能数据分析的一个基本方法,我们有支持这个方法的一些看板,可以帮助你灵活的去下钻和定位问题。然后也有专家系统,基于组织的极限,得出一些靠谱的、可行动的一些结论。
图为:思码逸产品矩阵图
那今天有了 AI 之后,它带来的变化使得我们对这种非结构化分析的能力增强,其实是把不可能变成了可能。有了 AI 能力加持,结构化数据和非结构化数据都能够盘活,所以在我们自己的这个产品体系当中,包括结构化数据、非结构化数据和代码,其中代码既是结构化数据也是非结构化数据,它们都在数据湖中。我们面向研发的数据湖叫做 DevLake,这个也是我们捐给 Apache 的一个项目。现在其实全球有这个几十万的下载,美国一些非常著名的公司都是在用。
面向技术管理者的是DevTable这个产品。DevInsight能为管理者呈现不同的数据看板,并提供智能的洞察。图中的DevChat就是刚刚提到的开源工具,可以在 VS Code,上面免费用。而刚刚在讲 GPT 的示例时的截图,其实都是在IDE中的,DevChat 会提供更方便的工作流,帮助我们去更好的去使用 AI 。
我们如何成长为“新程序员”?
我认为在当前的技术趋势下,作为开发者,我们应当像练习写作和编码一样,练习写提示词;作为管理者,我们应该积极倡导和运营,关注研发数据基础设施,统计 GLOC 和代码当量。
直播回顾看这里👇👇
相关文章:
“新程序员”必须学会的8个GPT提问技术 | 抢免费注册DevChat名额
ChatGPT 等大语言模型给人带来惊喜也给人带来了焦虑。惊喜在于它给各种工作带来的提效是肉眼可见的,焦虑在于很多人都担心会被 AI 替代,可能工程师们对此最深有感触。很多工程师已经开始用 GPT 来处理一些手头的开发工作,可能是写脚本&#x…...
Flink系列之:大状态与 Checkpoint 调优
Flink系列之:大状态与 Checkpoint 调优 一、概述二、监控状态和 Checkpoints三、Checkpoint 调优四、RocksDB 调优五、增量 Checkpoint六、RocksDB 或 JVM 堆中的计时器七、RocksDB 内存调优八、容量规划九、压缩十、Task 本地恢复十一、主要(分布式存储…...
七轴开源协作机械臂myArm视觉跟踪技术!
引言 ArUco标记是一种基于二维码的标记,可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择,特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术,使用ArUco标记的机械臂系统…...
etcd初探
官方网站 https://etcd.io/ etcd是什么 etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections du…...
微信小程序如何实现WXML和js文件之间的数据交互
在微信小程序中,WXML负责页面结构的描述,而js文件则负责页面的逻辑处理和数据交互。要实现WXML和js文件之间的数据交互,可以通过以下几种方法: JS传输数据到WXML 数据绑定:在WXML中使用{{}}语法将js文件中的数据绑定…...
计算机网络基础——以太网类型,常见标准和架构
一、标准以太网 标准以太网(10Mbit/s)通常只定位在网络的接入层,新一代多媒体、影像和数据库产品很容易将10Mbit/s运行的以太网的带宽吞没。10Mbit/s 的以太网可以实现100m距离的连接。 二、快速以太网 数据传输速率为100Mbps 的快速以太网…...
HarmonyOS(二)—— 初识ArkTS开发语言(下)之ArkTS声明式语法和组件化基础
前言: 通过前面ArkTS开发语言(上)之TypeScript入门以及ArkTS开发语言(中)之ArkTS的由来和演进俩文我们知道了ArkTS的由来以及演进,知道了ArkTS具备了声明式语法和组件化特性,今天,搭…...
VUE篇之日历组件
1.简单日历组件展示 思路:根据当前月的第一天是星期几,来显示日期 <template><div class"wrap"><el-button click"preMonth">上个月</el-button><el-tag>当前年份{{ curYear }}</el-tag><e…...
【selenium】自动化使用 chrome 的 user-data-dir
jwensh2023.12.18 文章目录 背景当前位置默认位置windowsMac OS XLinuxChrome操作系统AndroidiOS系统 覆盖用户数据目录命令行环境(Linux)编写 AppleScript 包装器 (Mac OS X) 用户缓存目录在 Mac OS X 和 iOS 上,用户缓存目录源自配置文件目…...
pythonUnitTest框架
UnitTest框架 UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794 目标(看完UnitTest框架该有的收获) 掌握UnitTest框架的基本使用方法掌握断言(判断实际结果和预期结果是否一致)的使用方…...
微服务最佳实践:构建可扩展且高效的系统
微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…...
源码赏析: 数据结构转换工具 configor (一)
一、configor 先贴地址 configor,先看configor的特性: Header-only & STL-likeCustom type conversion & serializationComplete Unicode supportASCII & Wide-character support 说白了,这个工具用于自定义类型的转换和序列化…...
使用java调用python批处理将pdf转为图片
你可以使用Java中的ProcessBuilder来调用Python脚本,并将PDF转换为图片。以下是一个简单的Java代码示例,假设你的Python脚本名为pdf2img.py: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…...
机器学习——自领域适应作业
任务 游戏里面的话有很多跟现实不一样的情况。 想办法让中间的特征更加的接近,让feat A适应feat B,产生相对正常的输出。 在有标签数据和没有数据的上面进行训练,并能预测绘画图像。 数据集 训练5000张总数,每类有500张测试100…...
ValidatorUtil字段验证工具类
字段验证工具类 package com.aa.bb.cc.common.utils;import com.aa.bb.cc.common.exception.BusinessException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils;import javax.validation.ConstraintViolation; import…...
Python 自动化之处理图片(一)
图片美化与大小调整 文章目录 图片美化与大小调整前言一、基本结构二、引入库三、用户输入模块四、图片美化模块五、大小调整模块总结 前言 本文主要分为两部分。一是图片的美化吧算是,主要从亮度、对比、色彩饱和度、锐度四个方面进行美化;二是图片的像…...
Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制
目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…...
电机(按工作电源分类)介绍
文章目录 一、什么是电机?二、按工作电源分类直流电机1.直流有刷电机结构工作原理:直流减速电机 2.直流无刷电机结构工作原理: 3.总结结构和工作原理:效率和功率损耗:调速性能:寿命和可靠性:应用…...
Web前端JS通过使用AudioWorkletNode() 获取 Video/Audio 视音频声道(左右声道|多声道)
写在前面: 在之前的博文Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据中,介绍了通过使用AudioContext.createScriptProcessor()方法来获取视音频音轨(声道)数据。但由于W3C不再推荐使用该A…...
力扣LeetCode75题
为了面试,小伙伴们可以平时练下算法题,有备无患。 LeetCode 75 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台...
如何向领导汇报工作?一篇文章告诉你!
给领导汇报工作可以从两个方面考虑:一是工作汇报文件的制作;一是汇报方式。一份全面、清晰且准确的文件,加上一目了然的、科技满满的汇报方式,相比领导不满意都难~下面就让你全部get! 一、工作汇报的文字内…...
GPT-4.5!!!
GPT-4 还没用明白,GPT-4.5 就要发布了。 最近,OpenAI 泄露了 GPT-4.5 的发布页面,除了进一步增强复杂推理和跨模态理解,GPT-4.5 增加了一个更加强大的功能——3D。 3D 功能的进一步支持,也就意味着多模态最后一块版图…...
kafka入门(四):kafka生产者发送消息
创建生产者实例和构建消息之后,就可以开始发送消息了。 发送消息主要有三种模式:发后即忘、同步、异步。 发后即忘: 就是直接调用 生产者的 send方法发送。 发后即完,只管往 kafka中发送消息,而不关心消息是否正确…...
redis集群模糊获取缓存redisKey
redis cluster集群删除指定模糊redisKey的信息 **public int deleteRedisKey(String key){AtomicReference<Integer> result new AtomicReference<>(0);busnessLogger.info("开始删除指定业务的模糊Key,deleteRedisKey:{}",key);try{Set<HostAndPor…...
100GPTS计划-AI翻译TransLingoPro
地址 https://poe.com/TransLingoPro https://chat.openai.com/g/g-CfT8Otig6-translingo-pro 测试 输入: 我想吃中国菜。 预期翻译: I want to eat Chinese food. 输入: 请告诉我最近的医院在哪里。 预期翻译: Please tell me where the nearest hospital is. 输入: 明天…...
Linux install manual 1Panel
前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…...
母婴服务品牌网站的效果如何
随着三胎政策落实及人们生活水平提升,母婴市场发展迅速上升,加之以90后、00后适龄生育的人群悦己消费加强,孕前孕后及婴儿本身就会使用相当好的服务,这也为市场带来了较大机会。 近几年,老品牌在不断加力,…...
C语言--有一个3*4的矩阵,求出其中最大值的那个元素的值,以及其所在的行号和列号
一.题目描述 有一个3*4的矩阵,要求求出其中最大值的那个元素的值,以及其所在的行号和列号 比如:给定一个3*4的矩阵如下 输出结果:最大值为 12 ,行号为3, 列号为2 二.思路分析 打擂台算法: 先思考…...
安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换
安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换 本章介绍了共享密钥加密、公开密钥加密,和两种加密方法混合使用的混合加密方法;最后介绍了迪菲-赫尔曼密钥交换。 加密数据的方法可以分为…...
MYSQL练题笔记-高级字符串函数 / 正则表达式 / 子句-简单3题
这个系列先写了三题,比较简单写在一起。 1.修复表中的名字相关的表和题目如下 看题目就知道是有关字符串函数的,于是在书里查询相关的函数,如下图,但是没有完全对口的函数,所以我还是去百度了。 然后发现结合上面的4个…...
大丰做网站价格/世界500强企业排名
for循环与其他编程语言类似,Shell支持for循环。for循环一般格式为:for 变量 in 列表docommand1command2...commandNdone列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。i…...
百度站长网站提交/营销技巧美剧
Contents前言四种遍历树的方法简介简介两种快速获得遍历结果的方法根据前序遍历和后续遍历创建树代码实现四种遍历树的方法的代码前言昨天参加了两场笔试,都考了这个题。第一场是根据pre_order和in_order把创建二叉树的代码写出来,第二场是根据pre_order…...
珠海品牌机械网站建设/百度seo和sem
前言 Google 在 Android 5.0 后推出了官方的侧滑实现,在谷歌爸爸自家 App 中被大量运用,以前需要自己写,现在好了官方版本直接用轮子,接下来我们来看看怎样实现。 实现效果 目录 布局文件Java 代码 布局文件 在 DrawerLayout…...
拼图式网站开发/外链工具xg
题目: 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n…...
百度的网站名/怎样推广app
我们从学习方程开始,就慢慢认识到,方程可以是n元方便。学习到函数,我们知道函数可以有n元函数。我们学习矩阵的时候也可以有n维矩阵。可是在学习几何的时候我们只能画出三维空间,在物理学习时,也告诉我们只有三维空间。…...
wordpress文章摘要文字/长安seo排名优化培训
详细介绍了RocketMQ的消息存储架构,以及效率优化机制,Mmap内存映射以及Page Cache页缓存机制。 文章目录1 消息存储架构2 混合型的存储结构3 页缓存与内存映射4 内存预映射和文件预热机制1 消息存储架构 RocketMQ 消息存储架构图如下: 消息存…...