ChatGPT API 开发第一步,验证你的 SECRET KEY 能不能用

目录

  • 生成接口调用密钥
  • 关于费用问题
  • 运用 curl 测验 API 通否
  • 最佳的模型挑选
  • 运用 Node.js 验证基于提示的问答接口
  • 运用 Python 测验接口
    • 获取 models 列表
    • 调用 Chat 谈天接口
    • 调用 Completion 问答接口
    • 由文本生成图片
  • 小结

在取到 ChatGPT 的试用权限之后,便能够着手研讨它的 API 了。(详细怎么恳求,网上有帖子,能够自行查找一下。)

关于还没有恳求 API 试用权限的读者朋友,抓紧时间在下面这个地址恳求:

platform.openai.com/

翻开后, 假如是第一次登录该渠道,或许会有一个让你加入等待列表的提示,按提示操作。经过后,会有一封邮件给你。

生成接口调用密钥

首要,在下面这个网址:

platform.openai.com/account/api…

点击“Create new secret key”按钮,便能够生成一个 SECRET KEY,这个东西只展现一次,生成后立马复制至一个外人看不到的当地保密起来。

SECRET KEY 咱们能够称之为接口调用密钥,当咱们稍后调用 ChatGPT 的每一个 API 时,都需求将这个密钥带上,ChatGPT 靠它知道咱们是谁,并从咱们的帐号中扣钱。

有人或许会问,这个 SECRET KEY 我不恳求行不行,我用他人的?

当然能够,只要他人让人用。所以方才咱们讲,在你生成这个密钥之后,必定要把它放在一个他人看不到的当地。有人会错把它放在 Github 库房里,这是一种失误,假如然呈现了泄漏,也不要严重,还是在上面的生成页面,单击密钥后边的删去按钮,将它删去便是了。

ChatGPT API 开发第一步,验证你的 SECRET KEY 能不能用

关于费用问题

方才咱们说了,接口调用是要花钱的。但 ChatGPT 为了便利开发者上手,为每人供给了一个小数额的信誉额度,这个额度从早期的 ChatGPT API 开发第一步,验证你的 SECRET KEY 能不能用18,再到现在的$5,信誉额度是越来越低了。

这或许与运用的开发者过多及资源有限有关,所以我规劝想研讨 ChatGPT 的开发者,有时间尽早去发邮件恳求一下 API 的试用权限。哪怕恳求了之后你不必,额度也一向在哪里,在截止现在之前不会减少。

你能够在下面这个链接查看你剩下的额度:

ChatGPT API 开发第一步,验证你的 SECRET KEY 能不能用

image-20230325201629181

假如初始信誉额度用完了,你能够在下面这个地址设置你的信誉卡,每月月底 ChatGPT 会从你的卡上扣钱。

platform.openai.com/account/bil…

运用 curl 测验 API 通否

拿到密钥今后,第一步是测验接口的连通问题,这是最简略的,但也是最重要的。接口链路不通,后边一切都得研讨了。

假定你的电脑上已经有了终端 curl 东西(没有的话能够自行查找装置一下),在终端中履行以下代码:

curlhttps://api.openai.com/v1/models\
-H"Authorization:Bearer$OPENAI_API_KEY"

99.99%的概率你看不到正确的回来。在这儿有两个问题需求咱们先处理一下。

第一个,关于体系变量$OPENAI_API_KEY,它是需求咱们手动设置的。在 Windows 机器上,咱们需求在体系设置->环境变量里边,增加名称为 OPENAI_API_KEY 的变量,值便是上面咱们刚刚生成的 API 密钥。假如是 macOS/Linux 体系,咱们需求在 bash 配置文件中手动导出一个名称为 OPENAI_API_KEY 的变量,值同样也是 API 密钥。

详细设置办法假如有不明白的能够谷歌。验证环境变量设置是否成功,能够在终端里履行以下指令:

echo$OPENAI_API_KEY

第二个,便是调用恳求从咱们的电路上宣布,至到达终点,中间或许会遇到高墙大山,这时候咱们需求梯子。研讨 ChatGPT API 开发,梯子就像电工的钳子一样,必须随身携带。

将本地梯子设置好今后,在 curl 指令参数列表中加上 proxy 参数,如下所示:

curl--proxyhttp://127.0.0.1:7890https://api.openai.com/v1/models\
-H"Authorization:Bearer$OPENAI_API_KEY"

假如前面的两步你都完结了,正常情况下你就能得到一个 Models List 文本。ChatGPT 有许多模型,/v1/models 这个接口便是回来咱们能够挑选的模型,每个模型的功能、处理才能及价格都是不一样的,在现在咱们知道这一点就足够了(应该足够了)。

回来的成果很长,是一个 JSON 字符串,内容没有必要细看,意义不大。我经过 map 办法处理了一下这个成果:

letmodels=ret.data.map(item=>item.id)

最终得到的列表是这样的:

(62)['babbage', 'davinci', 'babbage-code-search-code', 'text-similarity-babbage-001', 'text-davinci-001', 'ada', 'curie-instruct-beta', 'babbage-code-search-text', 'babbage-similarity', 'whisper-1', 'code-search-babbage-text-001', 'text-curie-001', 'code-search-babbage-code-001', 'text-ada-001', 'text-embedding-ada-002', 'text-similarity-ada-001', 'ada-code-search-code', 'ada-similarity', 'text-davinci-003', 'code-search-ada-text-001', 'text-search-ada-query-001', 'davinci-search-document', 'ada-code-search-text', 'text-search-ada-doc-001', 'davinci-instruct-beta', 'text-similarity-curie-001', 'code-search-ada-code-001', 'ada-search-query', 'text-search-davinci-query-001', 'curie-search-query', 'gpt-3.5-turbo-0301', 'davinci-search-query', 'babbage-search-document', 'ada-search-document', 'text-search-curie-query-001', 'text-search-babbage-doc-001', 'gpt-3.5-turbo', 'curie-search-document', 'text-search-curie-doc-001', 'babbage-search-query', 'text-babbage-001', 'text-search-davinci-doc-001', 'text-search-babbage-query-001', 'curie-similarity', 'curie', 'text-similarity-davinci-001', 'text-davinci-002', 'davinci-similarity', 'cushman:2020-05-03', 'ada:2020-05-03', 'babbage:2020-05-03', 'curie:2020-05-03', 'davinci:2020-05-03', 'if-davinci-v2', 'if-curie-v2', 'if-davinci:3.0.0', 'davinci-if:3.0.0', 'davinci-instruct-beta:2.0.0', 'text-ada:001', 'text-davinci:001', 'text-curie:001', 'text-babbage:001']

最佳的模型挑选

一共有 62 个,这是理论上咱们在运用 ChatGPT 的才能时,能够挑选的模型。有许多模型或许咱们一向都不会研讨,有 5 个模型是咱们接下来或许会常常用到的。它们是:

  • Ada 阿达
  • Bargage 巴贝奇
  • Curie 居里
  • Davinci 达芬奇
  • gpt-3.5-turbo 3.5 涡轮

这 5 个模型,它们的才能从上至下是逐渐升高的,它们的处理速度全体上(至少在前 4 个里边)是逐渐下降的,这也很好了解,任务越复杂越要消耗的 CPU 时间就越多。还有,它们的每一千个 token(什么是 token?)消耗的 money(在前 4 个里边)也是逐渐升高的,这能够了解为,才能越大,成本越大。

这儿提到了一个新概念:token,什么是 token?这是个程序里的概念,能够简略了解为汉语里的字,英语句子里的单词,甚至单词里包含的前缀、后缀。有人做过统计,大约每 750 个字相当于 1000 个 token。token 是 ChatGPT API 接口调用的计量单位。

这 5 个模型咱们看到了,基本越往后才能越大,但耗时及资费也越来越贵。但第 5 个模型 gpt-3.5-turbo,现在是一个例外。除了 GPT-4 的 API 之外,它在现在 5 个模型中,才能是最强的。咱们看一下它们的资费对比:

  • Ada $0.0004
  • Babbage $0.0005
  • Curie $0.002
  • Davinci $0.02
  • gpt-3.5-turbo $0.002

gpt-3.5-turbo 不是最贵的,也不是处理时间最快的,但归纳考虑才能、资费及耗时,它是现在的最优挑选。除非你的工作任务运用前几个模型就能够完结,否则运用 gpt-3.5-turbo 模型是毫无疑问的默许选项。

好,现在知道挑选哪个选型了。咱们测验一两个 API,分别用 Node.js 和 Python 两种语言。

运用 Node.js 验证基于提示的问答接口

下面咱们用 Node.js,完结对 ChatGPT 问答接口的调用。基于提示指令的问答,是 ChatGPT 最常被运用的接口。直接上首要代码吧:

//disc/01/main.js
importhttpsProxyAgentfrom"https-proxy-agent";
importenvfrom"env";
//all_proxy=socks5://127.0.0.1:7890
functionhttpsAgent(){
//@ts-ignore
returnnewhttpsProxyAgent({
host:'127.0.0.1',
port:7890,
protocol:'socks5'
});
}
asyncfunctiontest(messages){
constapiKey=env.getenv("OPENAI_API_KEY");
constresult=awaitfetch(`https://api.openai.com/v1/chat/completions`,{
agent:httpsAgent(),
headers:{
"Content-Type":"application/json",
Authorization:`Bearer${apiKey}`,
},
method:"POST",
body:JSON.stringify({
messages,
model:"gpt-3.5-turbo",
temperature:0.5,
max_tokens:4096,
stream:true,
})
});
returnresult
}
asyncfunctionmain(){
constr=awaittest("What'syourname?").catch(console.log);
console.log("result:",r);
}
main();

处理一下这个文件:

  • 第 1 行,https-proxy-agent 是一个第三方模块,是用来设置本地署理的,需求提早装置;
  • 第 8 行至第 12 行,这儿设置的是本地署理,在测验开端之前,必定要记得敞开署理;
  • 第 16 行,这儿是从环境变量中取密钥,这一步依靠前面运用 curl 测验 API 的一步。这儿就体现了运用环境变量的长处,密钥放在本地电脑里边,不会随代码被推到 Github 库房里;
  • 第 17 行,这个地址/v1/chat/completions 便是问答的 API 地址;
  • 第 26 行,这儿挑选的模型是 gpt-3.5-turbo,这是前面咱们选定的默许模型。

在测验之前,有一点或许需求说明一下,这是一个 Node.js 项目,位置坐落 disc/01,在测验时它需求被当作一个 Node.js 项目发动,测验指令为:

yarndevornpmrundev

假如你不这样做,而直接履行 node main.js,或许会遇到一个关于 Node.js 模块导入的语法错误。

一切步骤一切都搞定今后,履行测验,应该就能看到成果了。

运用 Python 测验接口

前面运用 Node.js 测验接口,每一个接口参数都需求咱们自己传递,这关于一部分开发者来说或许是透明的长处,但关于别的一部分开发者来说,或许便是麻烦了。下面咱们测验运用官方封装的 openai 模块,在 Python 中调用官方的 API。

首要,是装置 openai 模块:

pip3installopenai

在 Node.js 中,其实也有一个现成的 openai 模块,它能够运用 yarn 或 npn 装置:

yarn add openai or npm install openai

假如你想简略一些,又运用 Node.js 进行开发,能够装置这个 openai 模块。

获取 models 列表

下面的 Py 代码用于拉取 models:

#disc/02.py
importos
importopenai
openai.api_key=os.getenv("OPENAI_API_KEY")
print(openai.Model.list())

它在内部也是调用了/v1/models 接口,仅仅封装了起来,只需求咱们供给一个必须供给的 api_key。

调用 Chat 谈天接口

调用的是谈天接口/v1/chat/completions,代码如下所示:

#disc/03.py
importos
importopenai
openai.api_key=os.getenv("OPENAI_API_KEY")
completion=openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role":"user","content":"Douknowyishulun?"}]
)
print(completion)

关于像这样的简略的 Py 代码,能够这样测验:

python303.py

调用 Completion 问答接口

将要调用的是/v1/completions 接口,它在前面运用过,基于开发者供给的指令(prompt),完结特定的任务:

#disc/04.py
importos
importopenai
openai.api_key=os.getenv("OPENAI_API_KEY")
text_prompt="请你扮演一个脱口秀艺人,讲一个与‘艺述论’有关的笑话。"
completion=openai.Completion.create(
model="text-davinci-003",
prompt=text_prompt,
temperature=0.5,
)
generated_text=completion.choices[0].text
print(generated_text)

在这儿有一个问题,请注意,==假如咱们将第 8 行的模型换成 gpt-3.5-turbo,对不住代码就报错了,为什么?==

由文本生成图片

怎么生成呢?直接上 Py 代码吧:

#disc/05/main.py
importos
importopenai
openai.api_key=os.getenv("OPENAI_API_KEY")
response=openai.Image.create(
prompt="Aredfishbitesablackdog.",
n=2,
size="1024x1024"
)
#['256x256','512x512','1024x1024']
image_url=response['data']
print(image_url)

这个示例会回来两个图片,其中一张是这样的:

ChatGPT API 开发第一步,验证你的 SECRET KEY 能不能用

第 8 行传递的参数 size,只能从有限的备选项中选取,它们是[‘256×256’, ‘512×512’, ‘1024×1024’] 。注意==,这儿的 size 为什么必定是正方形呢?为什么不能由开发者随便指定份额及巨细呢?==

小结

基本上经过以上几步的折腾,你大约就能搞明白 ChatGPT API 怎么调用了。当然了,详细的每个接口怎么运用,还需求看官方的文档,地址是:

platform.openai.com/docs/api-re…

这篇文章的首要意图,在于运用 Node.js、Python 这样简略的脚本语言,快速验证你的密钥是否可用,是否具有进行 ChatGPT API 研讨的根底条件。

有问题欢迎在评论区发问。

新人读者从0到1编程自学宝典《微信小游戏开发》全套书本已经在京东、当当上架,需求签名版及1v1教导的读者请与我联络,微信9830131。作者博客:艺述论。

参考资料

[2] platform.openai.com/docs/api-re…

[2] ChatGPT API研讨示例库房:github.com/rixingyike/…