一个简单的chatgpt程序

chatgpt突然火的很火了,我也简单玩了玩。
由于地区限制的原因,国内要用的话必须要使用科学上网。
同时注册OpenAI账号,也需要使用国外的手机号。
注册的方式网上有好多教程,所以没什么特别要说的。

但是我之前就在想,既然OpenAI提供了API,那是否通过API方式使用chatgpt,可以突破地区限制呢?
也是一并验证下我的这个想法,所以我搞了个账号,申请OpenAI API试了试。

嗯,我忽然想到,我可以让ChatGPT给我写一段介绍呀……

ChatGPT写的如何使用OpenAI API

引言:

OpenAI API是一种强大的工具,可用于处理自然语言处理(NLP)任务。本文将向您介绍如何使用OpenAI API进行NLP,并提供一个简单的使用示例代码。

步骤1:获取OpenAI API凭证

要使用OpenAI API,您需要获得API凭证。您可以在OpenAI官方网站上注册账户并获取凭证。一旦您获得了凭证,您将可以通过API访问OpenAI的功能。

步骤2:安装OpenAI Python包

在使用OpenAI API之前,您需要安装OpenAI Python包。您可以使用pip命令进行安装:

1
pip install openai

步骤3:导入OpenAI库并设置凭证

在您的Python代码中,首先导入OpenAI库并设置您的凭证。您可以使用以下代码示例:

1
2
3
import openai

openai.api_key = 'YOUR_API_KEY'

确保将YOUR_API_KEY替换为您获得的API凭证。

步骤4:使用OpenAI API进行自然语言处理

一旦您设置了凭证,就可以使用OpenAI API进行自然语言处理了。最常用的功能是生成文本。以下是一个简单的代码示例,展示如何使用OpenAI API生成文本:

1
2
3
4
5
6
7
response = openai.Completion.create(
engine='text-davinci-003',
prompt='Once upon a time',
max_tokens=100
)
generated_text = response.choices[0].text.strip()
print(generated_text)

在上面的示例中,我们使用了text-davinci-003引擎进行文本生成。您可以根据您的需求选择不同的引擎。prompt参数指定了生成文本的起始文本。max_tokens参数限制了生成文本的最大长度。生成的文本将存储在generated_text变量中,并进行打印输出。

结论:

本文介绍了使用OpenAI API进行自然语言处理的简单指南。通过遵循上述步骤,您可以开始使用OpenAI API进行各种NLP任务,并利用强大的自然语言处理功能。记得根据您的具体需求,灵活选择API引擎和参数。祝您在使用OpenAI API时取得成功!

下面是我写的

这个chatgpt写的没问题哈,
基本方法写的很精炼,而且确实是对的,按照写的去做,是OK的。

然后根据官方的demo,在生成请求的prompt里,要给不同的参数赋值,这里我开始就没懂这些参数的具体用法,后来偶然看到一些文章,大概了解了下,常用的参数及说明如下:

常用prompt参数

Engine - 确定用于执行的语言模型(Davinci、Curie、Babbage、Ada)
Temperature - 控制 GPT-3 的响应是否具有创造力,范围从 0 到 1。温度值越低意味着返回的结果是最正确却无多大变化的文本。
温度值较高意味着模型会去评估可能适合上下文的响应,生成的文本也会更加多样化,但也可能会导致更多的无关信息生成。
Maximum Length(tokens) - 限制响应返回的文本长度。
Stop sequences - 指定返回语句停止。
Top Probability - 决定随机性的范围,取 0 到 1 之间的值。
限定模型返回 Top Probability 质量的语句结果,较低的值会返回较为准确的答案,同时会限制返回值的多样性。较高的值能帮助我们获得更多见解,但同时结果准确率会有所降低。
Frequency penalty - 模型基于返回语句中的词语出现频次而设置的惩罚系数,在 -2.0 到 2.0 之间取值,增加 Frequency Penalty 可以调整模型使其返回更加新颖的词语,减少同一词语在不同回答中出现的次数。
Presence penalty - 模型基于返回语句中的词语在前文中出现的次数而设置的惩罚系数,在 -2.0 到 2.0 之间取值,增加 Presence Penalty 可以调整模型使其减少重复生成前文中出现过的词语。

简单的调用sample

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def openai_api(question):
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
model="text-davinci-003",
prompt=question,
temperature=0.1,
max_tokens=1024,
stop=None,
n=1,
top_p=1
#frequency_penalty=0.0,
#presence_penalty=0.0,
#stop=["\n"]
)
#print(response)
print("ANSWER:")
print(response["choices"][0]["text"])

写了个简单的sample。
其中api_key我直接放在了电脑的环境变量里,这样更安全一些。所以要使用os.getenv方法获取key值。

测试效果

测试效果如图:

然后我还验证了下,确实如我想的一样,使用API方式,就不会有地区使用的限制了。
但是这个ChatGPT哈,确实是答案值得商榷。看把我家乡写的,都是错的……