标签: GPT4

如何成为一个合格chatGPT意志降临的容器

昨天尝试着做了一个稍微负责点的程序,想用chatGPT来写一个录音转写并同步翻译的小程序。虽然这个功能已经有很多现成的解决方案了,而且效果也都不错,比如讯飞听见的同传。不过我总觉得用chatGPT的API来进行英翻中,应该会有更好的效果,更重要的,会更便宜。

作为一个合格的AI 助手,我的工作就是提供人工,AI 来负责智能部分,我们一起来实现新时代的人工智能。

首先,是向chatGPT(运行的是GPT-4模型)提出我的需求。前期需求尽量不要太复杂,或者不要直接一步到位实现所有功能:为了便于调试,我让它先做一个录音存成文件,然后录音结束后再上传转写,再翻译的过程。先回避了同步上传翻译,在屏幕上同步显示字幕等比较复杂但是非核心功能的部分。

chatGPT很好的理解了我的需求,并给出了四个文件,以record_audio.py为例



import pyaudio
import wave

def record_audio(filename, seconds=5, chunk=1024, format=pyaudio.paInt16, channels=1, rate=44100):
    p = pyaudio.PyAudio()

    stream = p.open(format=format,
                    channels=channels,
                    rate=rate,
                    input=True,
                    frames_per_buffer=chunk)

    print("开始录音...")

    frames = []

    for _ in range(0, int(rate / chunk * seconds)):
        data = stream.read(chunk)
        frames.append(data)

    print("录音结束...")

    stream.stop_stream()
    stream.close()
    p.terminate()

    wf = wave.open(filename, 'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(p.get_sample_size(format))
    wf.setframerate(rate)
    wf.writeframes(b''.join(frames))
    wf.close()

代码的完成度非常高,留给我的其实也就装下库,然后测试一下。这里就是一个合格的AI 驾驶员的必备素养之一:首先你要知道怎么安装python的这些库,怎么样配置一个合格的测试环境,出错的内容如果你能看得懂可以尝试自己先改掉简单,不要直接复制丢回给AI,否则就会遇到我这种情况:

孱弱的人类躯壳无法长时间容纳chatGPT的降临,3小时25次问答,很快就迎来了长时间的技能CD。

这个demo其实需要调的错误不多,基本功能很快就完成了,我又让AI 加了一个程序运行后倒数三秒开始录音,录音满1分钟自动停止。后面可以糊一个简陋的界面来手动控制开始和结束。

想做实时翻译,结果试了几次都失败了。主要问题在于实时翻译设计到多个线程,一边录音一遍缓存,同时上传缓存的文件并转录翻译。我对这块一窍不通,没有办法为AI 提供任何帮助,而一旦脱离了人prompt的引导(咒语吟唱),AI很快就会陷入混乱,它能够有效管理的对话上下文其实非常短,写着写着就忘了前面写过什么了,经常会引用一个它没写过的函数和功能。人类驾驶员的作用就是引导它不要暴走。

项目本身没啥可说的,体验还是挺有意思的:

1、写一个小工具的门槛被降低了非常多,在以前这种程序,像我这种没有开发经验的人,至少要一个星期才能写完,还要查大量的资料。现在也就半天不到的时间。

2、不要指望一个外行加AI就能取代资深的专业人士,AI的上限是使用者的上限,主要是我拖后腿了。从技术选型到代码调试,错基本都是我犯的。

3、这种方法仅限于完成一些小工具小想法,AI对信息的管理能力很有限,写不出大型项目。但是实现项目里面的具体功能和函数还是可以有效提高效率的。

项目我扔到github上了https://github.com/justonehe/real_time_translate,不得不说,AI 写起readme来才是一把好手。它甚至从我前面失败的尝试里面推测出了我后期的改进想法。

所以,好好锻炼身体,争取成为一个合格的AI驾驶员吧。

用GPT-4做题第二篇

昨天做一道题目,手写梯度下降的反向传播函数。之前看的书上都只讲了原理,代码用keras库,两行就没了。这次题目要求全部自己实现。

其实题目不算难,激活函数和损失函数都已经给出了。我打了个草稿,画了个图之后差不多理解了。但是对numpy不熟,很多线性代数计算不知道怎么写。然后就让chatGPT 帮我写。

我给了它要求,但是它默认用了sigmoid函数作为激活函数,而我希望使用ReLU,然后又更新了条件,让它重新写。

那么问题来了?

我算是学会了梯度下降的反向传播算法吗?代码我完全看懂了,数学上我完全写的出,但是再让我自己写代码,我大概率还是写不出来。numpy还是记不住。

GPT4算是会梯度下降的方向传播算法吗?毕竟代码都是它写的。

然后更大的问题是,今后这个我还有必要学下去吗?哪些内容是有必要学的,哪些内容是可以让GPT 帮我做的?学到什么程度我能说一句我学会了?

GPT4的正确做题方式

今天发现一个非常有意思的事情,可以延伸思考一下,如何正确使用GPT4来做题。

我先给了它一道计算一维卷积的题,正确的做出来了。

然后我又给了它一道二维卷积的题,这次它解题的思路依然是对的,但是只做了一半就结束了。

我就让它写一个计算二位卷积的python函数给我。它不但写出了函数,还把题目里面的矩阵直接赋值进去了。

然后我让它输出这段代码的运行结果,然后又出错了,和直接计算的错误还不一样。

但是,把这段代码拷贝到python里面运行,输出的结果是正确的。代码本身是正确的。

所以,GPT4毋庸置疑是个非常强大的工具,但是怎么才能正确使用它帮助我们提高学习效率,是一个值得深入研究的问题。

一些延伸思考:

1、什么是学习?

我用GPT4帮我做题算不算学习?我发现了GPT4的错误并改正了它,能不能算我学会了卷积?

2、什么是思考?

GPT4能够正确理解并解释卷积运算,甚至能写出正确的函数,算不算它理解了卷积运算?但是它总在简单的计算上翻车,能不能说它不擅长数学?

它的思考和我的思考本质上是否有不同?

3、什么是记忆

GPT4是基于学习之后的再创作,不是机械的查询,这点是否和人类的学习过程学习模式相似?