ChatGPT入门学习官方文档
2023-06-30 15:56 浏览: 次
1、进入官网
打开网址:https://openai.com/api/
2 读文档
点击READ_DOCUMENTATION.
左侧的列表,显示:
这是GPT-3(Generative Pre-trained Transformer 3))支持的功能,可以对话,编程,做图等,注意,这里面没有chatGPT,那是另外一个页面,据说是基于GPT-3.5模型的技术。
把左侧列表继续往下拉,可以看到:
这就是OpenAI官方提供的API接口介绍了。我们逐个看一下:
首先是**Introduction介绍**:
You can interact with the API through HTTP requests from any language, via our official Python bindings, our official Node.js library, or a community-maintained library.
翻译:您可以通过来自任何语言的HTTP请求与API交互,通过我们的官方Python绑定、我们的官方Node.js库或社区维护的库。
现在流行使用Python,官方也贴心的提供了openai的库,可以调用,但试下来发现,其实不用pip install openai也行的。
然后是**Authentication验证**
The OpenAI API uses API keys for authentication. Visit your API Keys page to retrieve the API key you'll use in your requests.
Remember that your API key is a secret! Do not share it with others or expose it in any client-side code (browsers, apps). Production requests must be routed through your own backend server where your API key can be securely loaded from an environment variable or key management service.
All API requests should include your API key in anAuthorization
HTTP header as follows:
OpenAI API使用API密钥进行身份验证。访问您的API密钥页面以检索您将在请求中使用的API密钥。
请记住,您的API密钥是一个秘密!请勿与他人分享或在任何客户端代码(浏览器、应用程序)中公开。生产请求必须通过您自己的后端服务器进行路由,您的API密钥可以从环境变量或密钥管理服务安全地加载。
所有API请求应在授权HTTP标头中包含您的API密钥,如下所示:
注意:API密钥是很重要的,它相当于是一把通向openai的钥匙,在写代码时,要把这个密钥写入,否则届不到后台,也就不能和AI对话了。
这个密钥获取链接:https://platform.openai.com/account/api-keys
打开页面,看到:
Your secret API keys are listed below. Please note that we do not display your secret API keys again after you generate them.
Do not share your API key with others, or expose it in the browser or other client-side code. In order to protect the security of your account, OpenAI may also automatically rotate any API key that we've found has leaked publicly
下面列出了您的秘密API密钥。请注意,在您生成您的秘密API密钥后,我们不会再次显示它们。
不要与他人共享您的API密钥,也不要在浏览器或其他客户端代码中公开它。为了保护您的账户安全,OpenAI还会自动轮换我们发现已公开泄露的任何API密钥
点击Create new secret key,来获取自己的密钥:
注意,在这之前先要注册openai的官方网站,有自己的账号,这里才能生成密钥。
关于如何注册,网上有很多教程,我试下来,拢共分三步:
- 搭个梯子;
- 弄个古歌账号,用于绑定openai账号;
- 弄个外面的手机号,用于收短信;
言归正传,继续看文档。
下面就是具体的代码了,教我们如何用编程语言来调用API了。
我比较关心AI如何生成代码,页面往下翻,看到:
所以,用python,先把openai这个库pip下来的话,代码其实很简单:
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Completion.create(
model="text-davinci-003",
prompt="Say this is a test",
max_tokens=7,
temperature=0
)
这里的传参就4个:
- model:所调用的AI模型,叫text-davinci-003;
- prompt:我们的问题;
- max_tokens: 完成过程中要生成的最大令牌数,提示加上max_tokens的标记计数不能超过模型的上下文长度。大多数型号的上下文长度为2048个令牌(除了支持4096的最新型号)。
这个翻译看不懂啊,bing一下看看:
The max_length or max_tokens parameter is a control for the maximum number of tokens that can be generated in a single call to the GPT-3(Generative Pre-trained Transformer 3) model. A token is a discrete unit of meaning in natural language processing.
看上去是自然语言的最小离散单元,是一个字节吗?再查查看:
max_tokens是OpenAI GPT语言模型中的一个参数,用于指定生成文本时最多可以使用的标记(tokens)数。标记是将文本分割为单独的单词或符号的基本单位。因此,max_tokens参数限制了生成的文本长度。
在使用OpenAI GPT模型生成文本时,可以设置max_tokens参数以控制生成的文本长度。例如,如果将max_tokens设置为50,则生成的文本将不会超过50个标记,即50个单词或符号。如果生成的文本达到了max_tokens的限制,模型将停止生成更多的文本。
看到这里就清楚了,max_tokens就是AI回复的最大单词数量。
temperature:
What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
We generally recommend altering this ortop_p
but not both.
翻译:要使用的采样温度,介于0和2之间。较高的值(如0.8)将使输出更具随机性,而较低的值(如0.2)将使输出更具针对性和确定性。
如果是发散性的聊天,就可以把这个数值调大一些,如果想要更针对性的回答,则调低一些。
还有其他参数,没有必要,就不看了。
当发出问题后,AI返回的数据包格式如下:
{
"id": "cmpl-uqkvlQyYK7bGYrRHQ0eXlWi7",
"object": "text_completion",
"created": 1589478378,
"model": "text-davinci-003",
"choices": [
{
"text": "\n\nThis is indeed a test",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 5,
"completion_tokens": 7,
"total_tokens": 12
}
}
其中,texts才是我们关注的东西,这是AI的真正回复。
3 实际演练
打开spyder编译器,我的python3.7不行,总是报错,网上查下原因,需要升级一下python版本才行,用anacoda全家桶的话,就打开anacoda prompt来升级一下就可以了。然后打开spyder3.10
从网上找到一段代码:
import openai
openai.api_key = "这里填入自己的密钥,一般以sk开头"
def askChatGPT(question):
prompt = question
model_engine = "text-davinci-003"
completions = openai.Completion.create(
engine=model_engine,
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
message = completions.choices[0].text
print(message)
askChatGPT("请告诉我中国的国土面积有多大")
啪的一下,很快啊,就得到回复:
牛批。
更开心的是,有了密钥后,就不需要梯子了。
不好的是,这个是基于GPT3的AI模型,比GPT3.5的chatGPT还是差点意思,特别是生成代码方面。
【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015