庆云古诗词

庆云古诗词

chatgpt是从什么时候开始火的 chatgpt是什么时候火起来的

互联资讯 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

chatgpt,chatgpt是什么意思,chatgpt国内能用吗,chatgpt使用

现在的朋友圈几乎全部是有关于chatgpt的消息,好多微信公众号都围绕chatgpt发布各种帖子。

有人说chatgpt就是一个聊天工具,它回复的内容,都是一本正经的胡说八道。还有人说chatgpt的诞生预示着一场更大的工业革命正在发生。

我们心中不免疑问,chatgpt到底是什么?它究竟有怎样不为人知的故事、真的像传说中的那样无所不能吗?

网图侵删

读了刘琼老师编著的《chatgpt AI革命》这本书才明白,chatgpt通俗一点讲就是用于处理对话数据的GPT模型。只是它比早期的聊天机器人更成熟,更加开放和多元化,不仅仅局限于特定的应用场景罢了。

chatgpt当下凭什么这么“火”?

原来,chatgpt具备早期机器人没有的特点:它是一种可以实时与用户进行交互、不用人工介入,可以分析用户提出的需求或疑问,很好的理解情感,实施个性化的客户自助服务,能够更快更好的提升客户体验。

它还支持多种聊天渠道,比如:微信、Skype等。因此,对于刚开始接触chatgpt的人来说,把它看作是一个聊天机器人就好了。

chatgpt的另一个亮点,它的核心技术是人工神经网络的自然语言处理技术,也就是说它使用了GPT的大型深度学习模型。

GPT模型可以通过提供的种子文本生成新的文本,并对文本进行特征提取来进行分类,将源语言文本编码为向量,然后生成目标语言文本,还可以通过对询问文本进行编码并在大量文本库中搜索匹配结果。

形象地说,GPT模型就像一个具备强大的语言学习能力的人。不同的是,它不需要专门背单词和学语法,就能自己通过阅读大量的文本材料来掌握一门语言,达到接近母语者的水平,这听起来真是觉得很不可思议。

网图侵删

如此神奇的chatgpt是谁发明的?

它是由埃隆・马斯克、萨姆・奥尔特曼、格雷格・布罗克曼等知名的技术大佬共同投资,于2015年创建的一家提供人工智能技术服务的公司,名字叫OpenAI。

chatgpt作为OpenAI最新推出的研究成果,它“火”起来的原因不仅在于它的核心技术功能强大,还有越来越逼近人类自然语言的能力。

真的不敢想象,以后凡是人类智慧产生的成果是不是都可能被AI替代?像写作、绘图纸、编程序,制定工作计划等都是当下人们的主要活动。

尤其是以chatgpt为代表的AI生成内容(AIGC)对教育领域的应用和优势,让人不容忽视。好在教师和学生之间有着密切的情感链接,暂时是人工智能所无法取代的,不然真的不知道又会有多少岗位要被替代了。

读完这本书后不由得陷入沉思,人工智能技术通过一次次更新迭代,相信在不远的将来,它拥有的能量估计要用“可怕”来形容了。

《chatgpt AI革命》是一本不可多得的AI类工具书,作者以风趣幽默的语言,把专业的事写的普通人也能轻松看懂,这本书特别适合文字工作者使用,推荐这本书!

网图侵删

golang goroutine 单元测试 golang test编写详解

golang语言和JAVA对比,golang是前端还是后端,golang是什么意思,golang面试

前言

目前gpt本质上是续写,所以在待测函数函数定义清晰的情况下,单元测试可以适当依赖它进行生成。

收益是什么:

  • 辅助生成测试用例&测试代码,降低单元测试编写的心智成本

  • 辅助code review,帮助发现代码显式/潜在问题

本文测试环境:

  • gpt: gpt-3.5-turbo

  • go:go 1.17

本文实践场景:企业微信美图鉴赏机器人

生成单元测试的工作流如下:

  1. 选定你的待测函数

  2. 分析函数的依赖:结构体定义、repo依赖、repo interface抽象(用fx和wire等依赖注入框架的话会方便很多)

  3. 组织prompt,准备施法

  4. 吟唱魔法,得到输出单元测试代码

  5. copy到ide里面缝缝补补,与预期出入太多的话,调整prompt重来/要求gpt按照某个标准重写(比如:请按照testCases的写法重写组织测试数据)

  6. 运行测试用例

话不多说,先上基础prompt:

下面的部分,我按照工作流的繁杂程度,简单区分了下easy/normal/hard情况。

单个函数,并且外部依赖都是开源库,那么直接把代码贴上去就行。

这里我们用图片压缩的独立函数举例: (prompt前摇咒语 + 代码片段)

ChatGPT输出的代码块如下:

放到ide里,完美运行,说明简单函数的单元测试生成还是很强的~

完美运行,覆盖率100%

Part2 normal :里面有一些外部import

有外部定义引入的时候,最好把外部定义直接贴上(不涉及mock)。

这里举例的函数出现了外部依赖 entity.Archichatgpt等定义,所以最好要加上外部定义在输入中:

下面是生成的代码,经过少量修改后可以直接运行:

(因为少输入了一个结构体的定义,导致它猜测了一些字段)

小修小补就能跑啦

Part3 hard:对外部repo进行mock(gomock举例)

外部依赖越多,prompt template的构建可能就越复杂

ps.实际上gomonkey它也可以写

外部依赖repo的部分,要求gpt使用gomock进行对应repo的mock即可。

外部定义最好进行剪枝。

输出:

生成的代码太长,几点总结:

1.gomock代码可以正常生成,但是外部repo定义最好清晰明了,可以直接把interface定义贴上去,会被认知到。

2.粘贴到ide中,发现主要问题是包名导入问题,简单修改即可

类型&package名错误
小修小补

修改后运行成功:

run!

如果需要生成后人工修改量更低的话,需要更精确的上下文信息(包名、函数定义、描述等)

一些痛点

1.需要外部 repo mock的待测函数,需要的上下文很多,并且引入的无关字段需要剪枝避免污染输入

2.一些复杂的私有包,看起来是比较不好支持的(尝试过在prompt中教会他,但是效果不好)

3.一些复杂逻辑和边界情况,ai可能口是心非(写的用例和表述不一致,比如经典的20%*20%=400%,但是他知道这是错的)

4.对于分层不是很清晰的项目,对函数/repo打桩可能很困难,这个时候要描述清楚就比较困难了,gomonkey可能比较适用

其他用法

1.写好测试方法,让gpt帮助扩充用例集

2.code review,下面的代码就是gpt给出的代码建议

ChatGPT给出的优化建议: