使用ChatGPT提高研发生产力的10个姿势

ChatGPT 在编程方面的能力已经得到了无数开发者的认证,Github 更是将这部分能力移植到了其提供的AI辅助编程工具 Copilot X 中。

而作为普通开发者的我们,又该如何将 ChatGPT 的编程能力融合进我们日常的工作流程中,以更好地提升我们的开发效率呢?

针对这个问题,推特上有名网友就向我们分享了一张图——《面向开发人员的10个超有用的 ChatGPT 提示》。

图中列举了10个 ChatGPT 可以应用到的工作场景,并为每个场景编写了一个 Prompt 示例。

而本文撰写的目的,就是验证将 ChatGPT 应用到这10个工作场景的可行性。

由于笔者从事的是 Android 开发,因此文中的例子大多围绕着 Java/Kotlin 语言展开,但其底层的逻辑与思路是通用的,因而不必担心平台和语言会成为理解路上的障碍。

1

Prompt 1: 遵循代码指南

每家互联网公司内部基本都会制定一些编码规范,但无论是人工审查或还是编写自动化插件,都是一件极其漫长而无聊的事情,而 ChatGPT 编程能力的第1个应用——遵循代码指南,就可以帮我们完成这样一件事情。

原 Prompt 是:

Rewrite the code below following the Google style guidelines for javascript.{enter code}

遵循JavaScript的Google风格指南,重写一下代码:{输入代码}

这个 Prompt 有几个不好的地方:

  1. 没有提供指南的参考来源,无法验证其权威性。

  2. 没有指出不遵循指南的地方,而是直接重写,无法验证其风险性。

  3. 没有提供指南的原文描述,无法验证其准确性。

基于以上几点,我们将这个 Prompt 重写如下:

请参照以下由>分隔的编码规范,对以下由```分隔的代码片段进行审查,并按照下列步骤完成任务:

1.指出代码片段里不符合编码规范要求的地方

2.提供编码规范里对应的原文描述

3.提供符合编码规范要求的修改后的代码

>

1.总是使用不可变集合接口(Collection, List, Set, Map)来声明无需改变的集合。使用工厂函数创建集合实例时,尽可能选用返回不可变集合类型的函数:

2.对于由单个表达式构成的函数体,优先使用表达式形式。

3.使用 until 函数在一个开区间上循环

>

```

val allowedValues = arrayListOf("a", "b", "c")fun foo(): Int { return 1 
}for (i in 0..n - 1) { /*……*/ 

```

ChatGPT的回答如下:

 

可以看到,ChatGPT 参照规范为我们准确地指正了错误、提供了原文以及修复了代码,本场景验证通过!

2

Prompt 2: 编写代码测试

有效的单元测试可以验证应用中特定代码的逻辑是否正确,但由于人思维的局限性,有时候我们编写的测试用例仍无法覆盖比较边界的情况。幸运的是,只需提供少量的样本提示,ChatGPT就能很容易地进行模仿和扩写,由此便引申出了ChatGPT的第2个应用——编写代码测试。

原 Prompt 是:

Write test cases for the main edge cases that could happen to the below code snippet.First outline the test cases you'll write.Second, write the test cases in javascript using the Jest framework.{enter code}

为以下代码片段可能发生的主要边缘情况编写测试用例。首先概述您将编写的测试用例。其次,使用 Jest 框架在 javascript 中编写测试用例。{输入

这个 Prompt 有个不好的地方,就是它在描述测试用例的编写要求时过于笼统。合理的做法应该是提供少量的样本提示,并且描述测试用例的应用场景,才能让ChatGPT更有针对性地输出。

基于这点,我们将这个 Prompt 重写如下:

请参照以下由```分隔的代码示例,编写一个至少包含20个测试方法的 JUnit 4 测试类,以模拟用户输入不同邮箱内容后 isValidEmail() 方法的验证情况:

```

 
class EmailValidatorTest {@Testfun emailValidator_CorrectEmailSimple_ReturnsTrue() {assertTrue(EmailValidator.isValidEmail("name@email.com"))}
}

```

ChatGPT的回答如下:

 

可以看到,ChatGPT参照样本为我们准确地生成了符合场景要求的测试方法集,模拟了不同的用户输入,本场景验证通过!

3

Prompt 3: 编写代码注释

命名准确、实现优雅、逻辑清晰的代码都是有自解释的效果的,但一个团队里的成员水平不一,我们无法要求每个成员都能写出这样的代码,因此添加适当的注释是必要的,这项工作虽简单但无趣,完全可以交给 ChatGPT 编程能力的第3个应用——编写代码注释来为我们代劳。

原 Prompt 是:

Regenerate the code snippet below, but please include comments to each line of code {enter code}

重新生成下面的代码片段,但请在每行代码中添加注释。{输入代码}

这个 Prompt 有个不好的地方,它要求在每一行的代码中添加注释,实际上完全没有必要,过多的注释只会增加阅读的时间成本。

我们完全可以要求它在遵循既有注释规范的基础上,仅在必要的地方添加注释,基于这点,我们将这个 Prompt 修改如下:

请参照以下由>分隔的注释规范,对以下由```分隔的代码片段进行审查,并在注释规范要求的地方补上中文注释:

>

1.对于所有的方法,都需要使用 Javadoc 注释。注释内容除了包含返回值、参数和异常说明外,还需要指出该方法的作用或实现的功能。

2.对于所有的类,都需要添加创建者和创建日期的注释。

>

```

 
public abstract class TypeConverter<T, V> {private Class<T> mFromClass;private Class<V> mToClass;public TypeConverter(Class<T> fromClass, Class<V> toClass) {mFromClass = fromClass;mToClass = toClass;}Class<V> getTargetType() {return mToClass;}Class<T> getSourceType() {return mFromClass;}public abstract V convert(T value);
}

```

ChatGPT的回答如下:

可以看到,ChatGPT 参照规范为我们准确地添加了方法注释和类注释,对于未要求的属性注释则没有添加,本场景验证通过!

4

Prompt 4: 编写应用程序

ChatGPT 为一个完全不懂编程的小白开发出一款完整应用程序的新闻早已屡见不鲜,我们要做的仅仅是理清我们的需求,并罗列好步骤交给它,这里展现的就是 ChatGPT 编程能力的第4个应用——编写应用程序。

原 Prompt 是:

I will provide some specfic information about web app requirements, and it will be you job to develop an architecture and code for developing a secure app with Golang and Angular.{enter web app requirements}

我将提供有关 Web 应用程序需求的一些具体信息,你的工作是开发一个架构并使用 Golang 和 Angular 编写代码,以开发一个安全的应用程序。{输入 Web 应用程序需求}

编写一个完整应用程序的步骤太多,我们不好演示,但是编写一个简单的功能模块还是绰绰有余的。基于此,我们将这个 Prompt 重写如下:

请按照以下由>分隔的具体步骤,提供Android平台对应的完整Kotlin代码实现,包括Activity文件、布局文件以及AndroidManifest.xml文件,以完成一个“查看手机相片”的需求。

过程中要求:

1.提示我要在哪个目录创建哪个文件;

2.不使用任何第三方框架;

3.在必要的地方添加中文注释;

>

1.页面A提供一个按钮,点击可以打开Android系统的文件浏览器,并选择系统相册中的某一张图片;

2.在用户选中了某张图片后,跳转到页面B以全屏预览该图片

>

ChatGPT的回答如下:

 

输出过程中 ChatGPT 可能会因为单次回答超过了字数限制而中断,我们只需要提示它继续就可以了。

之后,我们将ChatGPT回答中的代码复制到新建的Android工程里,然后尝试运行如下:

可以看到,ChatGPT按照步骤为我们完整地生成了符合要求的、可运行的代码,本场景验证通过!

5

Prompt 5: 执行查询

客户端的主要职责,是展示UI以及与用户交互,与后端开发相比,其与数据库直接打交道的机会较少。这也造成了大部分客户端开发仅会基本的增删改查,而对于Join、索引、子查询等更加高级的数据库特性并不擅长。但现在,有了 ChatGPT 编程能力的第5个应用——执行查询后,这项工作就完全可以由ChatGPT代劳了。

原 Prompt 是:

The database contains tables named "Products”. "Users". "Orders" and "Suppliers." I will type queries, and you will reply with what the terminal shows.I want you to reply with a table of query results in a single code block.

数据库包含名为“Products”、“Users”、“Orders”和“Suppliers”的表。我将输入查询,你将使用终端显示的内容进行回复。我希望您在单个代码块中回复查询结果表。

这个 Prompt 写得有点奇怪,按字面意思,它是想让 ChatGPT 执行查询并返回一张结果表。且不说各种数据库图形界面本身就可以支持可视化查询,而如果不是以插件形式支持的话,还得向 ChatGPT 提供完整的数据库数据,操作起来相当麻烦。

基于此,我们还是回到让 ChatGPT 为我们撰写数据库操作语句的场景,将这个 Prompt 重写如下:

请参照以下由```分隔的几个实体类,每个实体对应数据库中的每一个表,实体的每个实例对应表中的每一行数据,实体的每个属性都对应表中的每一列的字段。

现在我需要查询所有歌曲的歌名以及每个歌曲的对应的播放列表名和每个播放列表对应的歌手名,请为我编写一个SQLite查询语句:

```

 
@Entity
data class Artist(@PrimaryKey val artist_id: Long,val artist_name: String,val artist_age: Int
)@Entity
data class Playlist(@PrimaryKey val playlist_id: Long,val artist_id: Long,val playlist_name: String
)@Entity
data class Song(@PrimaryKey val song_id: Long,val song_name: String,val playlist_id: Long,
)

```

ChatGPT的回答如下:

 

我们将ChatGPT回答中的查询语句复制到数据库图形操作界面,然后尝试运行如下:

可以看到,ChatGPT按照要求为我们准确地返回了查询结果,本场景验证通过!

6

Prompt 6: Git命令生成器

不得不承认,支持图形界面操作的Git版本管理系统确实有一种魔力,但在享受其便利性的同时,具体的Git命令也在被我们迅速遗忘,这也导致了一旦我们转换到一个新的IDE后,就会完全不知道从何下手。但现在,有了 ChatGPT 编程能力的第6个应用——Git命令生成器后,这种烦恼就不复存在了。

原 Prompt 是:

I want you to act like a Git commands generator. I'll explain to you what I need you to do and you will provide me with the right Git command. My first requirement is. {I want to push the example.txt file to the branch name example-branch}

我希望你像 Git 命令生成器一样工作。我会向您解释我需要您做什么,您会为我提供正确的 Git 命令。我的第一个要求是。{我要推送example.txt文件到分支名example-branch}

这个 Prompt 本身倒是没有什么问题,只是“推送XX文件到XX分支”这个要求容易让 ChatGPT 以为你只是想执行“push”这个操作,我们理应写的更详细一点。为此,我们将这个 Prompt 重写如下:

请按照以下由>分隔的要求描述,为我提供正确的 Git 命令:

>

将example.txt文件添加到Git仓库并推送到example-branch分支

>

ChatGPT的回答如下:

可以看到,在更为详细的要求描述下,ChatGPT为我们生成了正确的Git命令,本场景验证通过!

7

Prompt 7: 操作指南

本质上,操作指南是给用户或技术新手看的一类文档,是将包含很多专业术语的技术文档转换为更加接近自然语言的步骤指引或问题解答,以帮助读者快速上手开发或解决实际问题。但如何从既有的技术思维上抽离,并切换到用户或技术新手的视角去考虑操作指南怎么写是一个问题,这个时候,ChatGPT 编程能力的第7个应用——操作指南就可以帮上忙了。

原 Prompt 是:

I will provide you with basic steps of an app functionality {enter steps} and you will come up with an engaging article on how to do those basic steps.

我将为您提供应用程序功能的基本步骤{输入步骤},然后您将撰写一篇引人入胜的文章,介绍如何执行这些基本步骤。

这个 Prompt 本身没有什么太大的问题,但是形式上我认为可以改进一下,相比起较为死板的文档,我认为以问答机器人的形式展现会更直观和高效一点,为此,我们将这个 Prompt 重写如下:

你将扮演一个FAQ问答机器人,根据以下由>分隔的文档所提供的内容,为用户提出的问题提供一份简单而易上手的操作指南。你需要先向用户问好,询问用户有什么问题,然后等待用户输入,在这个过程中你必须遵循的要求是:

1.仅能以提供的文档为参考源,而不能以其他地方的资料为参考源;

2.如果在提供的文档中没有找到解决方案,请诚实告知用户,不能捏造答案。

>

Camera intents

To perform basic camera actions like capturing a photo or video using the device's default camera application, you do not need to integrate with a Camera library. Instead, use an Intent. Take a photo with a camera app

Android delegates actions to other applications by invoking an Intent. This process involves three pieces: the Intent itself, a call to start the external Activity, and some code to handle the image data when focus returns to your activity.

Here's a function that invokes an Intent to capture a photo.

 
val REQUEST_IMAGE_CAPTURE = 1private fun dispatchTakePictureIntent() {val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)try {startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)} catch (e: ActivityNotFoundException) {// display error state to the user}
}

Record a video with a camera app

You can also invoke an Intent to capture a video.

 
val REQUEST_VIDEO_CAPTURE = 1private fun dispatchTakeVideoIntent() {Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->takeVideoIntent.resolveActivity(packageManager)?.also {startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)} ?: run {//display error state to the user}}
}

The startActivityForResult() method is protected by a condition that calls resolveActivity(), which returns the first activity component that can handle the Intent. Perform this check to ensure that you are invoking an Intent that won't crash your app.

>

ChatGPT的回答如下:

 

可以看到,经过我们的前期设定,ChatGPT回答中的代码基本参考自我们提供的文档,而下文的内容也是基于上面代码的解释,算是没有超纲。

然而,即便我们特别要求了,ChatGPT 有时候仍然会无法清醒认知自己的知识边界,从而出现了令人头疼的“幻觉”现象,在面对我们文档中没有提及到的问题时,它会给出它自有训练数据得出的答案:

这个现象,在基于 ChatGPT 4 的 New Bing 身上则没有出现:

所以,就操作指南这一场景的应用来讲,也算能勉强通过~

8

Prompt 8: 生成ReadMe文件

 

程序员有两件讨厌的事情:写文档,以及别人不写文档。而现在,有了 ChatGPT 编程能力的第8个应用——生成文档后,就可以帮程序员一次性解决这两件讨厌的事情了。

原 Prompt 是:

Generate documentation for the code below. You should include detailed instructions to allow a developer to run it on a local machine, explain what the code does, and list vulnerabilities that exist in this code, {enter code}

为下面的代码生成文档。您应该包括详细说明以允许开发人员在本地计算机上运行它,解释代码的作用,并列出此代码中存在的漏洞,{输入代码}

这个 Prompt 有个不好的地方,就是一般类似文档一类的东西,我们会要求其结构尽量清晰分明,以提升其易读性,而这个 Prompt 并未要求 ChatGPT 结构化输出文档。

提前向 ChatGPT 指定要输出的文档结构以及输出的文档形式,是一个比较好的做法,为此,我们将这个 Prompt 重写如下:

请参照以下由>分隔的文档结构,为以下由```分隔的代码生成Markdown形式的中文文档:

>

1.类名

 

a.类介绍

2.公开方法概要(表格形式,第一列为返回值,第二列为方法名及一句话描述)

3.公开方法

 

a.方法名

b.方法签名(包含访问范围、返回值、参数)

c.方法介绍

>

```

 
/*** This class gives access to system locale services. These services allow applications to control* granular locale settings (such as per-app locales).** <p> Third party applications should treat this as a write-side surface, and continue reading* locales via their in-process {@link LocaleList}s.*/
@SystemService(Context.LOCALE_SERVICE)
public class LocaleManager {private static final String TAG = "LocaleManager";/** Context required for getting the user for which API calls are made. */private Context mContext;private ILocaleManager mService;/** @hide Instantiated by ContextImpl */public LocaleManager(Context context, ILocaleManager service) {mContext = context;mService = service;}/*** Sets the UI locales for the calling app.** <p>Pass a {@link LocaleList#getEmptyLocaleList()} to reset to the system locale.** <p><b>Note:</b> Changes to app locales will result in a configuration change (and potentially* an Activity lifecycle event) being applied to the calling application. For more information,* see the <a* href="https://developer.android.com/guide/topics/resources/runtime-changes">section on* handling configuration changes</a>. The set locales are persisted; they are backed up if the* user has enabled Backup & Restore.** <p><b>Note:</b> Users' locale preferences are passed to applications by creating a union of* any app-specific locales and system locales, with the app-specific locales appearing first.* Language resources are then chosen per usual (as described in the <a* href="https://developer.android.com/guide/topics/resources/multilingual-support">section on* locale resolution</a>).** @param locales the desired locales for the calling app.*/@UserHandleAwarepublic void setApplicationLocales(@NonNull LocaleList locales) {setApplicationLocales(mContext.getPackageName(), locales);}/*** Sets the UI locales for a specified app (described by package name).** <p>Pass a {@link LocaleList#getEmptyLocaleList()} to reset to the system locale.** <p><b>Note:</b> Changes to app locales will result in a configuration change (and potentially* an Activity lifecycle event) being applied to the specified application. For more* information, see the <a* href="https://developer.android.com/guide/topics/resources/runtime-changes">section on* handling configuration changes</a>. The set locales are persisted; they are backed up if the* user has enabled Backup & Restore.** <p><b>Note:</b> Users' locale preferences are passed to applications by creating a union of* any app-specific locales and system locales, with the app-specific locales appearing first.* Language resources are then chosen per usual (as described in the <a* href="https://developer.android.com/guide/topics/resources/multilingual-support">section on* locale resolution</a>).** @param appPackageName the package name of the app for which to set the locales.* @param locales the desired locales for the specified app.* @hide*/@SystemApi@RequiresPermission(Manifest.permission.CHANGE_CONFIGURATION)@UserHandleAwarepublic void setApplicationLocales(@NonNull String appPackageName, @NonNull LocaleList locales) {try {mService.setApplicationLocales(appPackageName, mContext.getUser().getIdentifier(),locales);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}/*** Returns the UI locales for the calling app.** <p>Returns a {@link LocaleList#getEmptyLocaleList()} if no app-specific locales are set.*/@UserHandleAware@NonNullpublic LocaleList getApplicationLocales() {return getApplicationLocales(mContext.getPackageName());}/*** Returns the current UI locales for a specified app (described by package name).** <p>Returns a {@link LocaleList#getEmptyLocaleList()} if no app-specific locales are set.** <p>This API can be used by an app's installer* (per {@link android.content.pm.InstallSourceInfo#getInstallingPackageName}) to retrieve* the app's locales.* All other cases require {@code android.Manifest.permission#READ_APP_SPECIFIC_LOCALES}.* Apps should generally retrieve their own locales via their in-process LocaleLists,* or by calling {@link #getApplicationLocales()}.** @param appPackageName the package name of the app for which to retrieve the locales.*/@RequiresPermission(value = Manifest.permission.READ_APP_SPECIFIC_LOCALES, conditional = true)@UserHandleAware@NonNullpublic LocaleList getApplicationLocales(@NonNull String appPackageName) {try {return mService.getApplicationLocales(appPackageName, mContext.getUser().getIdentifier());} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}/*** Returns the current system locales, ignoring app-specific overrides.** <p><b>Note:</b> Apps should generally access the user's locale preferences as indicated in* their in-process {@link LocaleList}s. However, in case an app-specific locale is set, this* method helps cater to rare use-cases which might require specifically knowing the system* locale.** <p><b>Note:</b> This API is not user-aware. It returns the system locales for the foreground* user.*/@NonNullpublic LocaleList getSystemLocales() {try {return mService.getSystemLocales();} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}/*** Sets the current system locales to the provided value.** @hide*/@TestApipublic void setSystemLocales(@NonNull LocaleList locales) {try {Configuration conf = ActivityManager.getService().getConfiguration();conf.setLocales(locales);ActivityManager.getService().updatePersistentConfiguration(conf);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}}

```

ChatGPT 的回答如下:

可以看到,ChatGPT根据我们提供的文档结构,为我们生成了相对来说结构更清晰、可读性更强的API文档,本场景验证通过!

9

Prompt 9: 代码转换器

ChatGPT这种大型语言模型非常擅长将其输入转换为不同的格式,不同开发语言之间的转换自然也不在话下,于是便延伸出了ChatGPT 编程能力的第9个应用——代码转换器。

原 Prompt 是:

Translate this code from JavaScript to Python {Enter code}

将这段代码从 JavaScript 翻译成 Python {Enter code}

在Android中构建UI有两种方式,以XML标签为代表的静态布局,和以Java API 为代表的动态布局。前者常用于设置默认的布局样式,后者常用于运行时布局的动态调整。

如果想减少对多文件的管理,就需要将XML标签转为Java代码;而如果想精简视图类的Java代码,就需要将部分Java代码转为XML标签。

这种转换常常需要手动地重写,代码量一多的话简直是噩梦。现在,我们尝试把这项工作交给 ChatGPT,为此,我们将这个 Prompt 重写如下:

请将以下这个基于Android平台的XML布局文件(由```分隔)转换为Java代码实现,要求:

1.导入基于AndroidX的相关的类

2.以Activity类型为上下文

3.不同类型的视图用空行隔开并补上注释说明

```

 
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".FirstFragment"><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:padding="16dp"><Buttonandroid:id="@+id/button_first"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/next"app:layout_constraintBottom_toTopOf="@id/textview_first"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textview_first"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="16dp"android:text="@string/lorem_ipsum"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/button_first" /></androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

```

ChatGPT 的回答如下:

之后,我们将ChatGPT回答中的代码复制到Activity文件里,然后尝试运行如下:

可以看到,ChatGPT 按照要求为我们准确地将XML文件转换成了可运行的Java代码,本场景验证通过!

10

Prompt 10: 代码解释器

接手一份完全没有任何文档和注释的离职同事的代码,是每个程序员的至暗时刻之一,因为我们并不能保证每次都有足够的时间和精力来逐行阅读和理解代码,而 ChatGPT 编程能力的第10个应用——代码解释器正好可以帮我们解决这种困扰。

原 Prompt 是:

What will following code snippet do {Enter code}

以下代码片段将做什么{输入代码}

这里有一个问题,就是ChatGPT限制了单次输入的字数,而我们的代码片段经常动辄就是几百上千行,为了保证 ChatGPT 能够处理完整的代码片段,我们需要先和 ChatGPT 达成一个约定,要求其必须在我们确认输入完毕之后,才开始进行处理工作。

基于这点,我们将这个 Prompt 重写如下:

我将发送一个代码片段,该代码片段可能过长,超出了字数限制,我会分割成多次发送。现要求你在收到“代码发送结束”这一指令前之前请勿开始处理,而是继续等待,直到我发出了“代码发送结束”的指令之后,你再统一处理这多次发送的代码片段,并解释一下这个代码片段的含义。

ChatGPT的回答如下:

但有时候,即便我们这么要求了,而 ChatGPT 也这么回应了,在 ChatGPT 3.5 上它仍然会抽风地在我们发送中间部分的内容时就开始处理了(在基于ChatGPT 4.0的 New Bing 上则是正常的)。

这个时候我们不用管它,直接点击停止生成按钮,然后继续发送其余部分,并在最后发出“代码发送结束”的指令,ChatGPT 就会按我们最初的要求,统一处理这多次发送的代码片段并解释其含义。

可以看到,ChatGPT 对于我们提供的 TypeConverter 这个类的解释基本正确,本场景验证通过!

11

写在最后

最后说明一下,考虑到目前大部分人很难拿到 ChatGPT Plus 的账号,因此本文是基于现有的 ChatGPT 3.5 进行验证的,但由于 ChatGPT 3.5 是 无法访问互联网的,因此文中需要引用的文档都是节选其中的一段放到问题里的。

而到了ChatGPT 4之后,由于可以通过插件来访问互联网了,也就可以不用像文中那么麻烦了,直接丢给它一个链接,让它基于这个链接的内容回答问题就好了。同时 ChatGPT 4 对于我们发出的指令,也能更好地理解与遵从,而不是像 ChatGPT 3.5 一样一身反骨。

另外一件事情就是,开头就说了,本文的主要目的是验证将 ChatGPT 应用到这10个工作场景的可行性,而不是提供10个完美的 Prompt。即便你用了我文中重写过的 Prompt,也可能输出和我并不完全一致的结果,关于这点,ChatGPT 自身的解释如下:

如果是以 API 的形式访问 ChatGPT,尚可通过调节 tempreture 参数来让结果输出较为固定,而直接在 Web 应用程序上对话的形式,我尚未研究出有效的方案,如果你知道,还请在评论区告知我,谢谢~

总体来说,目前市面上绝大多数的所谓AI应用,都是对现有AI大模型的一个封装,扮演的其实就是类似Prompt工程师的角色。所以,如何写好 Prompt 确实是一项基础但很重要的事情,掌握这个能力后,只要你有想法,就可以挖掘出比以上10个更丰富的场景。

 

转自:使用ChatGPT提高研发生产力的10个姿势!

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

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

相关文章

Google Bard开放注册了(附体验教程)

关注公众号猫说AI&#xff0c;还接入了最新Chatgpt供你免费体验哦&#xff01; Google Bard开放注册了&#xff01; OpenAI错过了&#xff0c;Bard你还想错过吗&#xff1f;注册非常简单&#xff01; 第一步 注册google账号 访问 bard.google.com 我让gpt翻译了这段话&…

借助与ChatGPT对话进行灰色关联分析算法的应用分析

虽然文章内容比较长&#xff0c;但是&#xff0c;我们可以从与ChatGPT沟通过程中感觉到未来压力&#xff0c;是我们的良师益友&#xff0c;也可能是我们的竞争对手。也欢迎专业人士对ChatGPT回答予以评价。 1. 前言 1.2. 关于ChatGPT 近日&#xff0c;由美国人工智能实验室O…

基于LangChain+ChatGPT的本地知识库问答工程实践

背景 网上看到本地知识库问答机器人的demo&#xff08;https://blog.csdn.net/weixin_42608414/article/details/129493302&#xff09;&#xff0c;希望自己部署实践一下 实践过程中遇到了很多的工程问题&#xff0c;代码运行过程中出现各种报错&#xff0c;解决问题过程发现…

Python实现SMS-Activate接口调用,获取手机号和验证码

前言 本文是该专栏的第27篇,后面会持续分享python的各种干货知识,值得关注。 对于SMS-Activate平台及其注册操作方法,这里就不过多详述了。尤其随着chatgpt的火爆,让sms-activate的热度也随之上涨。可能多数同学,是通过网页操作来获取手机号。而本文主要来介绍使用python…

人工智能会影响测试工程师吗

并不是危言耸听 当下最火的是什么&#xff0c;那非ChatGPT莫属了&#xff0c;以ChatGPT为代表的各类AIGC工具&#xff0c;在不断颠覆我们的认知&#xff0c;不仅能完成律师&#xff0c;医学考试&#xff1b;还能画出一张精美的设计图&#xff0c;拿下艺术大赛一等奖。 以之对…

入侵艺术界的AI主语,讲述一段创意的变革

第一批会员券(/≧▽≦)/ 01入侵艺术界的AI主语一开始&#xff0c;人们不过觉得这只是一个新奇的玩具&#xff0c;一些科技爱好者无聊的把戏&#xff0c;一个哗众取宠的获奖&#xff0c;一些艺术家过激的抵制反应。直到现在&#xff0c;AIGC开始跟我们每个人息息相关。 早在2017…

一周 AIGC 丨北上深蓉出台 AI 政策,百度斥资 10 亿设立人工智能大模型基金

接连 3 天&#xff0c;北京、上海、深圳、成都先后出台政策&#xff0c;支持人工智能产业发展。AI 公司迎来融资潮&#xff0c;一周内有超过 10 家公司披露融资进展。刘慈欣自曝用 ChatGPT 写发言稿&#xff0c;詹姆斯・卡梅隆用 ChatGPT 写电影剧本。百度成立人工智能大模型基…

3 亿岗位将被 AI 取代?巴比特深度采访业界后,“失业潮”真相有些出人意料……...

图片来源&#xff1a;由无界 AI工具生成 人工智能技术的发展正迎来奇点&#xff0c;尤其是今年以来 ChatGPT 和 AIGC 的迅猛势头让无数人猝不及防&#xff0c;真真切切地对各行各业现有的工作岗位产生冲击。近日&#xff0c;蓝色光标全面停止创意设计、方案撰写、文案撰写、短期…

有奖征文丨Cocos 第 6 期社区征稿正式开启,AIGC + Cocos 能碰撞出哪些火花?

ChatGPT 引发了新一波 AI 革命的讨论&#xff0c;人工智能似乎突然变得无所不能&#xff0c;能绘画、能写文章、会做PPT、会写代码&#xff0c;还有什么是人工智能不能做的&#xff1f; 据说时髦的年轻人已经开始用 AI 吊打同龄人了&#xff0c;如何利用 AI 技术的能力&#xf…

【AI绘图 丨 Midjourney 系列教程二】— 初识超火的AI绘画神器Midjourney

今天起&#xff0c;由 Midjourney 打头阵&#xff0c;让我们开始共同探索一系列的 AI 领域革命性作品&#xff0c;包括 Midjourney、Stable Diffusion、ChatGPT 等等&#xff0c;学习这些新时代的魔法和它的咒语。 写在前面 官方文档是最好的入门课程。相较于市面上琳琅满目的…

AIGC大爆炸背后,藏着人工智能的星辰大海

“未来像盛夏的大雨&#xff0c;在我们还来不及撑开伞时就扑面而来。” 刘慈欣在《三体》获奖感言中的这句话&#xff0c;用来形容当下的AI技术大爆发再合适不过。正所谓科技大爆炸来时常常是“一句招呼都不打”。过去一个月内&#xff0c;人工智能领域的新突破就像密集的雨点&…

什么是AIGC?

目录 前言一、什么是AIGC&#xff1f;1、什么是PGC&#xff1f;2、什么是UGC&#xff1f;3、什么是PUCG&#xff1f;4、什么是AIGC&#xff1f; 二、总结 前言 很明显&#xff0c;ChatGPT的爆火&#xff0c;带动了AIGC&#xff08;AI-Generated Content&#xff09;概念的火热…

「以代码作画」从数据角度剖析Art Blocks生成艺术

作者&#xff1a;Mia Bao, co-founder of thepass.to, chief partner of WHALE members 数据&#xff1a;Jin, data analyst of thepass.to 出品&#xff1a;ThePASS & BeepCrypto 文章数据&#xff1a;https://docs.google.com/spreadsheets/d/1zDun4eUTwA-BMU5Hl2c5EC…

步入AIGC时代,展望人工智能发展

步入AIGC时代&#xff0c;展望人工智能发展 0. 前言1. 步入 AIGC 时代1.1 人工智能简介1.2 AIGC 简介1.3 AIGC 发展与应用 2. CSIG 企业行——走进合合信息2.1 活动介绍2.2 走进合合信息 3. 文档图像处理中的底层视觉技术3.1 什么是底层视觉3.2 智能图像处理技术3.3 智能图像处…

文心一言云服务即将上线;紫光原董事长赵伟国被审查;任正非:未来AI大模型赛道不只是微软一家;李开复筹办新AI公司丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 紫光集团有限公司原董事长赵伟国涉嫌职务犯罪被移送检察机关审查起诉 近日&#xff0c;中央纪委国家监委网站消息&#xff0c;国家监委对紫光集团有限公司原董事长赵伟国涉嫌职务犯罪问题进行了立案调查。 经查…

ChatGPT核心研发者的跨界思维: 怎样打破禁锢教育和创新的枷锁丨展卷

来源&#xff1a;返朴 撰文&#xff1a;肯尼斯斯坦利&#xff08;Kenneth Stanley&#xff09;、乔尔雷曼&#xff08;Joel Lehman&#xff09; 翻译&#xff1a;彭相珍 当梦想家都对陈旧的愿景感到厌倦时&#xff0c;当不求回报的期望的灰烬沉淀在不可逾越的未来之上时&#x…

诚邀您体验人工智能AI

近期&#xff0c;人工智能&#xff08;AI&#xff09;领域动作频频&#xff0c;OPENAI公司Chat GPT的出现&#xff0c;标志着人工智能的研究与应用已经进入了一个崭新的发展阶段&#xff0c;国内腾讯、阿里巴巴、百度、易网、国外微软、谷歌、苹果、IBM、Amazon&#xff0c;等互…

BFT最前线|首批由AI引发失业潮;ChatGPT 暂时关闭 Plus 付费;谷歌公布新一代 AI 超算及定制芯片第四代

BFT机器人 01 首批AI引发失业潮于游戏行业来袭 据消息&#xff0c;已经有一众游戏公司将AI绘画引进工作流程&#xff0c;用以摆脱游戏行业巨大的人才压力和资金焦虑&#xff0c;早前&#xff0c;心动网络创始人黄一孟透露&#xff0c;已有游戏团队把原画外包团队给砍了。另有某…

【AI绘画】我以Midjourney为主学习AI绘画效果咋样?

上一篇博客链接&#xff1a;【ChatGPT】ChatGPT掀起AIGC与AI浪潮_山楂山楂丸的博客-CSDN博客 这周&#xff0c;我加入了新星计划&#xff0c; 涉及的领域是我感兴趣以及对未来规划有帮助的——AI绘画&#xff01;​​​​​​​ 文章目录 前言 一、AI绘画是什么 二、AI绘画进…

独家专访|图灵奖获得者杰克·唐加拉:ChatGPT并非“超算大脑”

❑ 导 读 与任何新兴技术一样&#xff0c;ChatGPT会给就业市场带来赢家和输家。 全文共计3698字&#xff0c;预计阅读时间8分钟 来源 | 数据观&#xff08;转载请注明来源&#xff09; 撰稿 | 数乾坤 编辑 | 蒲蒲 现任美国田纳西大学电气工程和计算机科学系教授的杰克唐加拉&am…