我问了鹅厂程序员:你们工作中怎么用ChatGPT?如何高效Prompt?
👉腾小云导读
当你还在错误使用对话 AI 工具如 GPT,可能会觉得其作用不过是知识平移总结或简单问答。实际上,当了解先进的用法、知悉如何做到 better prompt,你会发现:AI 不是来替代你的,是来帮助你更好工作。如果还用搜索引擎的“关键词匹配”、“关键词命中”思路去思考人工智能的使用,已然有些落后。本篇在详细介绍几个GPT帮助程序员工作(干货满满)的应用场景之后,将为你分享AI的正确打开方式——better prompt。欢迎阅读和分享。👉看目录,点收藏
1.背景
2. AI可以帮助程序员做什么?
2.1 技术知识总结
2.2 拆解任务
2.3 阅读代码/优化代码
2.4 代码生成
2.5 生成单测
2.6 更多AI应用/插件使用体验
3. Prompt 能力
3.1 Prompt 是什么?
3.2 Better Prompt
4. 总结
01
尤记得每个月「本月全球最流行编程语言」发布的时候,都会在程序员届掀起腥风血雨。“Java 下降了一名,怎么可能”、“JavaScript 又占据榜首,门槛太低,写个脚本就算用了吗?”、“C# 这种单平台语言也就是闭环生态内的产物了” 这类言论层出不穷,大家也都乐此不疲,已然是以前的流量密码。
然而这一切现在似乎已经悄悄变化了。大家开玩笑说现在使用的最多的编程语言,已经是英语(自然语言)了。
现在 GPT 已经开启了人工智能狂潮。在社交圈里不聊上两句 ChatGPT,感觉不只是要和时代脱节,更是已经被开除 IT 籍了 ~
笔者在 2022 年 12 月初开始体验 ChatGPT。一开始我向它提一些有趣的问题,例如“告诉我 TCS 相关的知识”等等。相信绝大多数人一开始使用的时候都是如此,那时候互联网上认为它的功效应该是代替知乎,让 ChatGPT 作为问答知识类的平台。知乎已死的声音甚嚣尘上。
后来大家又发现,它的很多回答都是胡编乱造的。例如你问它一些新上映的电影,它即使不知道也会胡编乱造一通。大家又开始贬低它,觉得只不过就是一个普通的聊天机器人,还是尬聊型选手。
去年相关的论文的分享介绍比较少,市面上的评价分析的角度还停留在认为 ChatGPT 只能针对已有知识进行总结,或者是平移。
但是随着使用的人数越来越多,大家才知道,ChatGPT 与语言无关,你用任何语言去提问,它都可以很好的理解你的意思。 因为它使用的是语言模型,而不是具体的某个语言库。如果还用搜索引擎的“关键词匹配”、“关键词命中”思路去思考人工智能,就已经显得有些落后了。本篇在介绍 AI对话工具能如何帮助程序员工作(干货满满)之后,将为你分享AI的正确打开方式——better prompt。
02
2.1 技术知识总结
2.2 拆解任务
2.3 阅读代码/优化代码
prompt: 逐行解释下面的代码 + 代码内容, (在这里使用了一段在 github上面的开源代码进行展示, 这段代码是一段定时器相关的内容)。 |
prompt: 可以在每一行代码上面加上注释,便于我理解吗? |
这时候它会逐行的进行代码标注,便于你对每一行进行理解。如果你接着对它提出一个粗浅的优化需求,它也会照做。
prompt: 这段代码可以进行重构和优化吗?逻辑有些繁琐。 |
prompt: children: (isCounting: boolean, durationTime: number, startCount: () => void) => React.ReactNode // 子组件,接收三个参数,返回一个React节点 这里面的参数太多了,而且对顺序有强依赖,该怎么优化这里? |
2.4 代码生成
[
{
"candidates": null,
"candidatesX": null,
"description": "role---用户角色",
"label": "角色",
"name": "role",
"optional": true,
"schema": null,
"type": "String"
},
{
"candidates": null,
"candidatesX": null,
"description": "Topics of the pulsar server to create---需要创建的主题",
"items": {
"schema": [
{
"candidates": null,
"candidatesX": null,
"description": "topic name---主题名称",
"label": "主题名称",
"name": "name",
"schema": null,
"type": "String"
},
{
"candidates": null,
"candidatesX": null,
"default": 1,
"description": "partition number---分区数",
"label": "分区数",
"name": "partitions",
"schema": null,
"type": "Integer",
"validator": ">0"
}
],
"type": "Object"
},
"label": "主题列表",
"name": "topics",
"optional": true,
"schema": null,
"type": "List"
}
]
我想要得到的数据是 type 为 List 的数据,并且数据结构为:
[
{type:List, name:"topics", needValidates:[{
name:"name", type:"String"
},{name:"partitions", type:"Integer"}] }
]
2.5 生成单测
prompt: (代码内容) 为这段代码生成 unit test。 |
prompt: 数据源不够丰富,多测试集中边界条件,比如数据不存在,数据类型无法转换,数据类型不对等。 |
它还会给你解释这里都做了什么操作,这些测试用例覆盖了不同的场景,包括:
当数据源中没有类型为 List 的字段时,应该返回空数组;当数据源中有类型为 List 的字段时,应该返回正确的字段数组,包括需要的验证。
2.6 更多 AI 应用/插件
AI 就像是一个基础应用, 在它上面还有着很多的可能。随着你用的越多,解锁的技能也就越丰富。例如现在 GPT 系列甚至推出了自己的应用市场。下面我们来为各位简单介绍几款热门插件:
AIPRM
Voice Control for ChatGPT
ChatGPT Sidebar
著名应用工具使用体验:Bing Copilot、ChatGPT、Google Bard
Google Bard (LaMDA):Google 近期发布的AI工具目前只支持英文。特点是能够给出多个回答,而且响应速度很快。集成了 Google it,点击之后会帮你生成一个最适合你的问题的 google 搜索关键词。这算是和 Bing Copilot 反其道而行之,一个是将 chat 集成到搜索里,一个是将搜索集成到了 chat 中。
03
3.1 Prompt 是什么?
3.2 Better Prompt
开发者可以利用它的上下文能力,帮助自己纠正语法以及提供更好的 prompt 的训练。
prompt: you need answer my question obey the format, format should be like this correct grammar is : "insert correct grammar here" ________________________________ (keep the diver line) you can also ask it like this: "insert better prompt here" ________________________________ then tell the answer about what i ask below the divier also keep the diver line. Correct grammar is should correct my question's grammar |
AI 的每一次训练得到的返回结果都是不一样的,我们有可能会得到自己想要的,但它也有可能没有完全理解我们的意思。当我们的诉求没被完全理解,可以对它进行进一步的训练。
04
-End-
原创作者|熊彬
技术责编|熊彬
AI对话工具出现以前,当我们想找答案,往往都是通过对搜索引擎初步梳理出的海量信息,进行筛选、对比、总结,形成自己的知识。有网友给小云贡献了自己与朋友的探讨:“现在类GPT工具出现之后,很少人愿意去看大段的文章来学习,只愿意看到最后给的一小段结果。这感觉就像微博对博客的打击、短视频对于长视频的冲击,最后形成的是短视和浮躁氛围。最后导致自身的筛选分析、归纳总结,记忆力等技能无法长进甚至退化。”你怎么看?GPT等新智能工具的出现,会导致人基本能力不进反退吗?
在评论区聊一聊你的看法。4月20日前将你的评论记录截图,发送给腾讯云开发者公众号后台,可领取腾讯云「开发者春季限定红包封面」一个,数量有限先到先得😄。我们还将选取点赞量最高的1位朋友,送出腾讯QQ公仔1个。4月20日中午12点开奖。快邀请你的开发者朋友们一起来参与吧!