上次简单写了一篇对ChatGPT的一些看法,最近想深入研究一下。
极客时间上有个课程《AI大模型之美》,看了一下还可以。当做入门是不错的,但还是有很多细节可以打磨,不过毕竟是在风口上的课,也能接受。
本次演示如何调用OpenAPI的函数。
人工智能分类
要了解GPT,大体总得知道一下GPT在人工智能分类里属于哪部分吧!
GPT模型是一种基于深度学习的神经网络模型,是一种自然语言处理技术。GPT模型使用了一个称为“自回归语言模型”的方法来训练。在训练过程中,模型会接收到一个输入序列,并预测下一个单词或句子。这个预测过程会不断重复,直到生成完整的文本。在预测过程中,GPT模型会根据已经生成的文本和上下文信息来预测下一个单词或句子。这种无监督学习方法可以让模型从大量的文本数据中学习语言的模式和规律,从而生成高质量的自然语言文本。
GPT4回答的分类:
1 | 机器学习 |
Sage回答的分类:
1 | 机器学习 |
名词解释
这里列出一些常用的名次,方便大家理解
名词 | 全称 | 解释 |
---|---|---|
GPT | 生成式预训练 Transformer(Generative Pre-trained Transformer) | GPT模型的训练是一种无监督学习方法,它不需要人工标注的标签或答案来指导模型的学习。相反,它使用大量的文本数据来预测下一个单词或句子,从而让模型学习语言的模式和规律。GPT模型不属于聚类或者降维等传统机器学习算法,它是一种基于深度学习的神经网络模型。具体来说,GPT模型是基于Transformer架构的神经网络模型,它使用了多层的自注意力机制来对输入序列进行编码,并通过解码器生成新的自然语言文本。 |
NLP | Natural Language Processing | NLP代表自然语言处理(Natural Language Processing),是一种计算机科学和人工智能领域的交叉学科,旨在使计算机能够理解、解释和操作人类语言。自然语言处理涉及使用计算机算法和统计模型来分析、处理、理解和生成人类语言,包括文本和语音。自然语言处理技术已经广泛应用于许多领域,例如语音识别、机器翻译、情感分析、文本分类、信息检索、自然语言生成、问答系统等等。这些应用领域涵盖了许多实际场景,例如智能客服、语音助手、社交媒体分析、金融分析、医疗诊断等等。 |
LLM | large language model | 大语言模型 |
召回率(Recall) | 在人工智能领域中,召回率(Recall)是指模型正确识别出的正样本数占总正样本数的比例,通常用以下公式表示:Recall = TP / (TP + FN) 其中,TP表示真正例(True Positive),即模型正确识别出的正样本数;FN表示假反例(False Negative),即模型未能识别出的正样本数。召回率衡量了模型识别正样本的能力,即模型能够正确地找到多少个正样本。召回率越高,表示模型能够正确地识别出更多的正样本,但同时可能会导致误识别负样本的数量增加。召回率,代表模型判定属于这个分类的标题占实际这个分类下所有标题的比例,也就是没有漏掉的比例。比如,模型判断 100 个都是农业新闻,这 100 个的确都是农业新闻。准确率已经 100% 了。但是,实际我们一共有 200 条农业新闻。那么有 100 条其实被放到别的类目里面去了。那么在农业新闻这个类目,我们的召回率,就只有 100/200 = 50%。所以模型效果的好坏,既要考虑准确率,又要考虑召回率,综合考虑这两项得出的结果,就是 F1 分数(F1 Score)。 | |
准确率(Precision) | 准确率是指模型正确识别出的正样本数占总样本数的比例,通常用以下公式表示:Precision = TP / (TP + FP) 其中,FP表示假正例(False Positive),即模型错误地识别出的正样本数。准确率衡量的是模型识别出的正样本占总样本数的比例,即模型能够正确地找到多少个被识别为正样本的样本。准确率越高,表示模型能够更准确地识别正样本,但同时可能会导致未能识别出的正样本数量增加。准确率,代表模型判定属于这个分类的标题里面判断正确的有多少,有多少真的是属于这个分类的。比如,模型判断里面有 100 个都是农业新闻,但是这 100 个里面其实只有 83 个是农业新闻,那么准确率就是 0.83。准确率自然是越高越好,但是并不是准确率达到 100% 就代表模型全对了。因为模型可能会漏,所以我们还要考虑召回率。 | |
F1 分数 | F1 分数,是准确率和召回率的调和平均数,也就是 F1 Score = 2/ (1/Precision + 1/Recall)。当准确率和召回率都是 100% 的时候,F1 分数也是 1。如果准确率是 100%,召回率是 80%,那么算下来 F1 分数就是 0.88。F1 分数也是越高越好。 | |
支持的样本量 | 是指数据里面,实际是这个分类的数据条数有多少。一般来说,数据条数越多,这个分类的训练就会越准确。 | |
预训练模型(Pre-trained Model) |
创建API Key
OpenAI 还没有向中国大陆和香港地区开放,所以要注册的话,至少需要VPN和短信接收平台。这里默认大家已经有办法注册账号了。
我们首先需要获取API Key,需要用这个值作为请求API的token。这个Key一定要自己记录下来,否则再也查不到了。另外千万不要泄露出去。
地址:https://platform.openai.com/overview
我的账号注册的比较早,所以有18美元的试用额度
搭建Jupyter Labs开发环境
大家可以参考我的Jupyterhub安装教程,我是用npm方式安装
1 | mkdir jupyter |
测试
操作
简单找个例子测试一下
代码
1 | import openai |
返回
1 | { |
参数
第一个参数是 engine,也就是我们使用的是 Open AI 的哪一个引擎,这里我们使用的是 text-davinci-003,也就是现在可以使用到的最擅长根据你的指令输出内容的模型。当然,也是调用成本最高的模型。
第二个参数是 prompt,自然就是我们输入的提示语。
第三个参数是 max_tokens,也就是调用生成的内容允许的最大 token 数量。你可以简单地把 token 理解成一个单词。实际上,token 是分词之后的一个字符序列里的一个单元。有时候,一个单词会被分解成两个 token。比如,icecream 是一个单词,但是实际在大语言模型里,会被拆分成 ice 和 cream 两个 token。这样分解可以帮助模型更好地捕捉到单词的含义和语法结构。一般来说,750 个英语单词就需要 1000 个 token。我们这里用的 text-davinci-003 模型,允许最多有 4096 个 token。需要注意,这个数量既包括你输入的提示语,也包括 AI 产出的回答,两个加起来不能超过 4096 个 token。比如,你的输入有 1000 个 token,那么你这里设置的 max_tokens 就不能超过 3096。不然调用就会报错。
第四个参数 n,代表你希望 AI 给你生成几条内容供你选择。在这样自动生成客服内容的场景里,我们当然设置成 1。但是如果在一些辅助写作的场景里,你可以设置成 3 或者更多,供用户在多个结果里面自己选择自己想要的。
第五个参数 stop,代表你希望模型输出的内容在遇到什么内容的时候就停下来。这个参数我们常常会选用 “\n\n”这样的连续换行,因为这通常意味着文章已经要另起一个新的段落了,既会消耗大量的 token 数量,又可能没有必要。
第六个参数temperature,参数的输入范围是 0-2 之间的浮点数,代表输出结果的随机性或者说多样性。可以把这个参数设置为 0,这样,每次输出的结果的随机性就会比较小。
总结
https://platform.openai.com/docs/api-reference/introduction
函数不是很多,大家有兴趣可以自己看一下,使用起来也是很方便的。
海报: