目录
此前我介绍了 在命令行中使用 的方法,但当时使用的开源项目 /node–api 没有使用官方 API,经常出现失效的情况。尽管该项目已更新了好几个版本,但是想要使用它,完全取决于是否有可用的「」,可以说是相当艰难。
好消息是 在 2023 年 3 月 1 日发布了基于 gpt-3.5-turbo 模型的官方 API,这个模型与 网页版 完全相同,但优势非常明显,一是响应速度快得多,几乎不会出现意外断开连接的情况,二是 API 对用户登录网络的限制非常少,这对于中国大陆用户非常友好,能够极大地拓展应用场景。
API 的价格为每 1000 个 0.002 美元,根据 的介绍,1 个 token 约等于 4 个英语字母,或者 0.75 个单词,换句话说,1 个英语单词约等于 1.33 个 (1 个汉字约等于 2.33 个 )。新注册的 账号会自动获得 18 美元的余额,有效期三个月,拥有 900 万个 的请求量。你可以在注册或登录 账号之后,在 这里 生成自己的 API key。
毫无疑问,企业用户将会是 API 的主要客户,可以预见,一大批基于 API 的应用将会迅速出现,未来处处是 的应用场景 正在到来。
API 发布一天后出现的部分 AI 应用
那么对于个人用户来说,除了使用这些第三方应用封装的 应用外,应该如何使用 API 来提高自己的学习和工作效率呢?本文就来分享一些个人使用 API 的方法,主要是在 macOS 平台上。由于关于 的消息变化太快,无法保证内容的实效性,如果出现已变更或更新的情况,请前往原始链接查看相关信息。
图形化应用
提供了一个 ,可以通过可视化的方式学习如何使用 gpt-3.5-turbo 的接口,也就是 API,有 、Chat、 和 Edit 四种模式,可以通过鼠标拖动调节各个参数,非常直观方便。不过有点遗憾的是,使用这个页面需要登录,并且要求账户中有余额。
API 网页版
除了 官方的示例,有网友利用自己的 API 制作了专属的网页版,可以像 预览版一样,直接在浏览器中使用,比如 这个页面。与 的官方页面相比,它的优势是完全免费、无需登录、速度超快、打开即用。
基于 API 的网页应用
如果你不想与其他人共享同一个 应用,可以使用 Baye 开发的 ,制作一个专属于自己的 。下载 之后,首次打开会要求你填写你自己 API key,之后就可以直接打开使用了,这种方式可以获得极快的响应速度,同时还能避免点击恼人的「验证你是人类」。
在 中通过 API key 使用
命令行工具 脚本
官方提供了一个 库 ,可以使用 pip 命令安装:
1
pip install openai
需要注意的是,使用 API 需要 0.27.0 或更新版本,如果你的系统中安装了旧版本,需要通过下面的命令查看版本信息和更新,否则无法使用 API。
1
2
3
4
5
# Show openai info, including version
pip show openai
# upgrade openai package
pip install --upgrade openai
接下来就可以根据 官方示例,写一个简单的调用 API 的 脚本:
1
2
3
4
5
6
7
8
9
10
import openai
# Get OpenAI API key at https://platform.openai.com/account/api-keys
openai.api_key = "YOUR_API_KEY"
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello ChatGPT!"}]
)
print(completion.choices[0].message.content)
将其保存在一个文本文件中,命名为 chat.py,并将第 2 行的 替换为你的 API key,然后在终端中执行 chat.py,就会向 发送一条消息 Hello !,稍等一下就会返回它的回答,比如这是它回答我的内容:
1
Hello! How may I assist you today?
除了这种预先填写问题的方式,也可以使用 input() 的方式让用户输入问题,然后再返回 的回答内容:
1
2
3
4
5
6
7
8
9
10
11
12
import openai
openai.api_key = "YOUR_API_KEY"
user_input = input("Input Your Question: ")
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_input}],
# max_tokens=100
)
print(completion.choices[0].message.content)
在终端中执行 chat.py 之后,会弹出一个提示输入语句 Input Your :,你需要按照提示输入问题,然后同样稍等片刻,便会返回 的回复。
命令行工具
库 也提供了一个命令行工具,可以直接使用,而无需通过执行 脚本来调用 API:
1
openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello ChatGPT!"
这行命令中, 是调用 库的命令行工具,api . 是指创建一个 对话,-m gpt-3.5-turbo 是指使用 gpt-3.5-turbo 模型,-g user 是指提问者角色为 user。
需要注意的是,上面这行命令没有提供 API key,这是因为我将它保存在了 .zshrc 中,方便全局调用。你可以在 . 或 .zshrc 中添加一行命令:
1
export OPENAI_API_KEY='YOUR_API_KEY'
然后就可以全局调用。如果没有将 API key 保存在环境变量中,则需要修改上面的命令为:
1
openai -k YOUR_API_KEY api chat_completions.create -m gpt-3.5-turbo -g user "Hello ChatGPT!"
Curl
Curl 是一个通过指定 URL 语法传输数据的命令行工具,它的普及性可以用「基础设施」来形容,在互联网应用中几乎无处不在, 自然也提供了通过 Curl 来调用 API 的方式:
1
2
3
4
5
6
7
curl https://api.openai.com/v1/chat/completions
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "List five alternative words of happiness"}]
}'
这几行命令返回的结果是 JSON 格式,这对于需要使用结构化信息的场景很有用。如果你希望 Curl 只返回 的回答信息,可以使用命令行工具 jq 从 JSON 中把它提取出来:
1
2
3
4
5
6
7
8
curl https://api.openai.com/v1/chat/completions
-s
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "List five alternative words of happiness"}]
}' | jq -r '.choices[0].message.content'
这是上面这几行命令的返回结果:
1
2
3
4
5
1. Joy
2. Bliss
3. Delight
4. Elation
5. Contentment
前文介绍了在命令行中使用 API 的三种方式,它们的共同点是都需要打开终端再执行,略显麻烦。为了使用方便,我们可以将其改写一下,放在 macOS 上的自动化应用中来快速执行,比如 、、 。为此,我们需要将前面的代码略微修改一下,下面以 为例进行说明。
方式一
第一种执行 脚步的方式需要将「从用户输入」改为「从 stdin 输入」,这是为了将拷贝的文字作为标准输入,以便放在 中执行:
1
2
3
4
5
6
7
8
9
10
11
12
import sys
import openai
openai.api_key = "YOUR_API_KEY"
standard_input = sys.stdin.readline().rstrip()
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": standard_input}]
)
print(completion.choices[0].message.content)
将这几行代码保存在 chat.py 中,保存在任意位置。然后制作一个下图中的 宏来运行这段 代码,其中 是 macOS 自带的命令行工具,用来粘贴剪切板中的内容,你需要将下图中的 ~/code/chat.py 替换为你的系统中 脚本的保存路径。另外,还要确保 的安装路径在 的 中,否则需要指明 的绝对路径。
在 中运行 脚本使用
方式二
由于 提供了命令行工具,我们可以直接在 中执行 Shell 脚本,这种方式不依赖外部文件,因此更加推荐:
1
pbpaste && openai -k YOUR_API_KEY api chat_completions.create -m gpt-3.5-turbo -g user "$(pbpaste)"
这行代码中,通过 $() 将剪切板内容转换为命令行的标准输入,而最前面的 是为了一并把问题粘贴回来。
在 中执行 Shell 脚本使用 API 的命令行工具
你可以在 这里 下载上图中的这个 macro。当选中一段文字后,按下快捷键 ⇧ + ⌃ + C 两次,便可以向 提问,然后同时返回问题和答案。
在 macOS 上通过快捷键使用
方式三
这种方式同样是在 中执行 Shell 脚本,不过使用的不是 ,而是 Curl。下面的命令用 jq 将返回的 JSON 格式中提取出了 回答的纯文字信息,如果你只需要得到 JSON 格式,可以将其移除。
1
2
3
4
5
6
7
8
curl https://api.openai.com/v1/chat/completions
-s
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "'"$(pbpaste)"'"}]
}' | jq -r '.choices[0].message.content'
在 中执行 Curl 命令使用
以上三种通过 使用 的方式,最为推荐的是第二种,你可以根据需要选择合适自己的任意一种方式。除了以上使用 的基本方式,即鼠标选中文字向 提问,你还可以利用 的 ,制作在特定应用场景下使用的宏,比如对文字进行翻译、润色、总结、解释等,可以参考 P.J. Wu 吳秉儒 的推文。
其他使用方式
是一款通过简单的鼠标点击或手势,快速地完成剪贴板操作、文本处理、搜索等任务的工具,它会在选中文本时自动弹出一个小工具栏,提供一系列可选操作,如复制、粘贴、搜索、翻译、分享等,除此之外,它还支持许多第三方插件。
几天前, 开发者 Nick Moore 制作了一个 插件,可以选中文字,然后点击 图标,在下方粘贴它的回复内容,按住 Shift 键则可以将回复内容拷贝到剪切板中。
通过 使用
除此之外,也有网友制作了校对和润色选中文字的 插件,比如 Check 、 。
Bob
Bob 是一款 macOS 平台的翻译和 OCR 软件,同样支持插件。除了通过快捷键使用外,也可以通过 调用 Bob。
网友 制作了两个 Bob 插件,一个是基于 的 文本翻译 插件,可以全面替代 DeepL,另一个是对句子进行 润色和语法修改 的插件,可以全面替代 。
通过 Bob 插件使用 润色文字
是一款运行在 Apple 设备上的文字处理软件,拥有强大的自动化功能,可以快速执行多步骤的复杂操作,极大地提高文字处理效率。
reorx 制作了一个 ,输入自己的 API key,就可以在 中和 对话,非常方便。
在 使用
快捷指令
苹果的快捷指令()同样也可以用来调用 API,使用非常方便。比如 P.J. Wu 吳秉儒 制作了一个简单的 ,用 快捷指令 来使用 。
使用 的快捷指令
除此之外,还有网友制作了一个通过 Siri 和 对话的 快捷指令,非常有趣,让原本的语音智障助手摇身一变成为人工智能助手
小结
模型更好、价格更低的 API 一经推出,便迅速引爆网络,沉寂已久的 似乎也因此恢复了往日的热闹,时间线上的推文几乎都在讨论,有不少网友已经做出了很好玩的应用。本文基于我这两天上网冲浪的见闻,分享了一些个人用户使用 API 的方法,希望可以让你尝尝鲜,快速体验一番 在日常学习和工作中应用的魅力。
如果说去年 12 月初的 预览版开启了一扇小门,展现了它在自然语言处理方面的巨大潜力,让人们可以到门口一睹人工智能时代的惊艳,那么 API 的问世,则更像把这扇门移到了普通人的跟前,让我们无需走到门前就可以轻松地使用它。面对正在悄然改变我们生活方式的 ,让我们共同期待并积极拥抱一个全新时代的到来吧!
尽管 API 一经推出便获得了 GFW 的认证。
心疼 DeepL 和 两秒钟