1 老表Max 说说说
了解学习一个东西,如果可以,一定先把东西玩起来,再去学习了解更细致的知识。(兴趣先培养起来)
所以第一课,咱们先了解如何玩转 ChatGPT API。
《跟老表Max学ChatGPT》系列课程,将完整教大家学习了解 ChatGPT,至少教会你:如何使用 ChatGPT,提升工作、学习、生活效率。
更新频率:尽量一周一更。。。
2 获取 APIKEY
开始前你至少需要准备:
- 魔法方法
- 一个有调用额度的 ChatGPT APIKEY
如果是新注册账号,一般会有 5美元 免费额度,
# 查看额度页面
https://platform.openai.com/account/usage
# 创建 APIKEY 额度页面
https://platform.openai.com/account/api-keys
点击Create new secret key
即可新建一个 APIKEY 。
APIKEY 格式为:
sk-...LvD6
如果你的 APIKEY 没有调用额度,那么你访问会出现错误,告诉你当前 APIKEY 对应账号没有调用额度(一般来说,新注册的账号都会有5美元免费额度),如果想完成本次教程,需要 APIKEY 或者 ChatGPT 账号,可以私聊我微信:pythonbrief。
3 开始调用
从 ChatGPT 爆火开始,官方和各路开源大神就做了很多相关调用demo,甚至有 ChatGPT 克隆网站源码等。
官方也将这些项目做了一个汇总,大家可以找自己熟悉的编程语言项目看看。
https://platform.openai.com/docs/libraries/community-libraries
我选择直接用官方的 openai
Python 写相关代码。
首先你需要准备一个Python环境,并安装 openai 包,如何安装环境和安装请看我的这篇文章。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
如果我们放到 Jupyterlab cell 里直接运行会出错,提示No API key provided
,因为我们没有设置 OPENAI_API_KEY 这个环境变量。
我们可以把代码改下,把我们前面生成的 API_KEY 直接赋值给openai.api_key
,再运行发现还是不行,因为网络不通。
这时候检查你家网络,可以开全局或者在代码里加上网络端口。网络设置好就好啦!
问点学习问题:如何使用Python做网页自动化点击,给出一个代码案例
这个时候发现打印出来东西好像不认识了?是机器故障了吗,不是。这是涉及中文,给 Unicode编码。
我们可以直接本地把 content
打印出来,编辑器会帮我们转码。
注: Selenium 最新版本 find_element_by_id 函数改成了 find_element,并通过参数指定查找模式,比如 By.XPATH,By.ID 等。
现在你就可以开始愉快的问自己想问的其他问题啦!从上面你应该看出怎么把问题改成自己的问题了吧?下一节继续学习。
4 基础了解
再学点基础知识。
官方文档有很详细介绍,如果你想深入研究学习,建议好好阅读官方文档。(后面都会给大家拆解、介绍,有兴趣一起拆解的可以私聊我微信,需要英语好点且懂一点编程的朋友)
https://platform.openai.com/docs/api-reference/introduction
在这里我们能看到各种模型更全面的介绍,后面主要会使用的模型有:
- GPT-3.5 全能的AI对话模型,你可以用它练习你的语言表达能力、帮你修改BUG、给你讲笑话、各种角色扮演等。
- DALL·E AI绘画模型,和SD MJ比是有距离,但平时自己用用也不差。
- Whisper 音频转文本模型,可以帮你把各种音频文件转成文字,再结合 GPT-3.5,你可以直接提取出音频中的重点等。
- Moderation OpenAI 提供的违规检测模型。
https://platform.openai.com/docs/models/overview
基础概念词理解:
-
GPTs: GPT (生成式预训练转换器) 模型经过训练,能够理解自然语言和代码,通过输入 “prompts” 输出文本,可用于多种任务,如内容生成、代码生成、摘要、对话等。
-
Embeddings: 是数据(如文本)的向量表示,旨在保留其内容和/或含义的特征,常用于搜索、聚类、推荐、异常检测、分类等。
-
Tokens: GPT和Embeddings模型将文本按照词块(tokens)进行处理,tokens表示常见的字符序列,例如 “tokenization” 被分解为 “token” 和 “ization”。输入的最大上下文长度对于GPT模型是prompt和生成输出的总和,而对于嵌入模型是输入的长度。
对话模型我们使用gpt-3.5-turbo-16k
,支持更多TOKENS,意味着能进行更多的连续对话。
4.1 调用限制
这是 APIKEY 的速率限制(rate limits)表格,该API被用于文本、嵌入(embedding)、聊天(chat)、图像(image)和音频(audio)处理。速率限制是指对API的请求进行限制,以防止滥用或过度使用API资源。这些速率限制在组织级别进行管理,而不是用户级别,并根据使用的具体端点和账户类型进行调整。主要参数有:
- 每天请求数(RPD)
- 每分钟请求数(RPM)
- 每分钟令牌数(TPM)
从表格中可以看出,免费试用用户(新注册账号会有5美元调用额度)和按需付费用户的默认速率限制是不一样的。
比如我们最常用的 chat 模型(如gpt-3.5-turbo-16k)免费试用用户每天最多可以通过API发送200次请求,每分钟最多能发3个请求,每分钟最多发送返回 token 数是 40000。
付费用户在前48小时和48小时后分别有不同的速率限制。对于某些特定模型(如gpt-3.5-turbo-16k),其TPM限制对于按需付费用户是表格中所列值的2倍。
最后,还提到了一个重要注意事项:速率限制会根据两个条件中先满足的情况进行计算,即如果一个请求满足了每分钟令牌数限制,那么该请求即使发送的令牌总数不满足每天请求数限制,也会被视为超过速率限制。
4.2 调用费用
费用介绍页面:
https://openai.com/pricing
我们主要关心GPT-3.5 Turbo
,从下图可以看到该模型调用费用风两部分:Input 和 Output。
Input 就是我们发送过去的问题经过解析后的 tokens 数,价格是 0.0015美元/1k tokens。
Output 就是 GPT 迭代出来的答案经过解析后的 tokens 数,价格是 0.002美元/1k tokens。
官方描述是大概一页A4字容纳的字数就是1k tokens。
我们就按最高的 0.002来算,5美元额度大概可以转成 2500k tokens,也就是把 2500 页A4纸写满,即使加上日常速率啥的限制,平时用用肯定够的。