最近 ChatGPT 刷屏的事件真是太多了(都疯了,国外的产品疯了,国内的媒体疯了
)。我也跟风发了好多篇 AI 资讯类文章,但是作为技术人,今天想来点硬核的东西。
ChatGPT & OpenAI & API key
很多人(小白用户)一直分不清 ChatGPT 官网,OpenAI 和 API Key 到底是啥关系。简单来说就是:
ChatGPT 官网
:是 chat.openai.com[1] 或 ai.com[2] 这两个网址,当你在浏览器登录账号后可以直接访问的东西。官方目前只有一个网站(其他所有打着 ChatGPT 旗号的网站都是第三方应用)OpenAI
:OpenAI是一家美国人工智能(AI)研究实验室,由非营利性 OpenAI Incorporated (OpenAI Inc.) 及其营利性子公司 OpenAI Limited Partnership (OpenAI LP) 组成,后与微软合作,推出了一系列 AI 应用,ChatGPT 只是 OpenAI 旗下的一款应用。API key
:是 OpenAI 提供给开发者的可以用来请求 gpt 系列(例如最近比较火的 gpt3.5 和刚刚发布的 gpt4)大模型的接口,ChatGPT 官网也是基于接口实现网站。目前所有的第三方应用都是基于接口在实现。你可以在这里创建管理自己的 API Key[3]。ChatGPT Plus
:它是一个 ChatGPT 官网的会员,可以理解为各种视频网站开的会员,可以让你更丝滑的体验 gpt 聊天。但是它并不同于 API key,它们直接没有什么联系,如果要使用 API key 仍需要额外付费。
搭建应用
目前市面上有很多支持 API Key 的第三方应用,如果你不了解它的运作方式,大概率会为此支付高昂的接口费用(文末的附录可查看具体模型价格)。
价格影响因素
模型类型
模型 Tokens 使用数
Tokens 分词器
chat completions
接口按 token 计费,所以会有专门的算法来计算 token 消耗(输入和输出全部都会计入到 token)。在 chat completions 接口返回的 usage 字段会有具体消耗的 token 数。
OpenAI Tokenizer[4]
Tiktokenizer[5] - OpenAPI 标记器的网页版
openai/tiktoken[6] - 用于 OpenAI 模型的快速 BPE 标记器
接口使用
Chat completions 文档[7]
创建 Chat completion[8] - 官方提供了
curl
、python
和node.js
的代码示例
# 接口地址
POST https://api.openai.com/v1/chat/completions复制
以 curl 为例:
curl https://api.openai.com/v1/chat/completions \ # 接口地址
-H "Content-Type: application/json" \ # 设置请求头,数据类型为 json 格式
-H "Authorization: Bearer $OPENAI_API_KEY" \ # 设置请求头,自己的 API Key
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'复制
以 node.js 为例:
// 安装 openai 依赖,执行 `npm i openai`
// 使用此官方包的好处:不在需要自己设置请求头,只需要简单配置即可
const { Configuration, OpenAIApi } = require("openai");
// OPENAI_API_KEY:API Key 在这里创建 https://platform.openai.com/account/api-keys
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const completion = await openai.createChatCompletion({
// 使用的模型
model: "gpt-3.5-turbo",
// 需要发送的信息,数组格式,如果需要支持上下文联系,则需要将之前产生的对话全部再次发送
messages: [{role: "user", content: "Hello world"}],
// 是否使用流形式发送,默认不开启(打字效果)
stream: false,
// 最大令牌数,输入标记和生成标记的总长度受模型上下文长度的限制(可选参数,一般是 4096)
max_tokens: 4096,
// 其他可选参数,请查看文档
});
console.log(completion.data.choices[0].message);复制
返回数据:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}复制
第三方可靠吗?
以 TypingMind[9] 为例。它支持用户使用 API Key(目前测试试用阶段)或直接购买其服务。但是我在试用后发现了一个巨大的问题,众所周知,每次聊天对话都需要消耗 Token,AI 才能给用户返回结果(但是这是一个双向的过程,即收/发消息都需要消耗 Tokens),在这里的 Tokens 的消耗是不可以避免的。真正爆炸的是一个连续的对话,会造成 Tokens 消耗的滚雪球(为了让 AI 记住聊天的上下文,更加智能的回答你的问题,就需要将之前所有的聊天内容作为一条信息发送给 AI)。
请求:
返回:
新坑预告
我目前正在开发基于 API Key 的 ChatGPT 客户端(预计很快可以发布 0.1.0 版本),并且我为它取了一个新名字 NoFWL
,ChatGPT 功能只是它规划版图里很小的一个子模块。之前 ChatGPT 桌面应用支持的所有功能都会被 NoFWL 应用所支持,并且远不止于此:
# 没有自由的工作生活:希望未来它的强大,可以让人更高效,从而变得自由
NoFWL -> No Free Work Life复制
仓库地址:https://github.com/lencx/nofwl
附录
API Pricing[10]
接口价格
GPT-4
Model | Prompt | Completion |
---|---|---|
Model8K context | Prompt$0.03 / 1K tokens | Completion$0.06 / 1K tokens |
Model32K context | Prompt$0.06 / 1K tokens | Completion$0.12 / 1K tokens |
Chat
Model | Usage |
---|---|
Modelgpt-3.5-turbo | Usage$0.002 1K tokens |
InstructGPT
Model | Usage |
---|---|
ModelAda (Fastest) | Usage$0.0004 / 1K tokens |
ModelBabbage | Usage$0.0005 / 1K tokens |
ModelCurie | Usage$0.0020 / 1K tokens |
ModelDavinci (Most powerful) | Usage$0.0200 / 1K tokens |
Fine-tuning 模型
Model | Training | Usage |
---|---|---|
ModelAda | Training$0.0004 / 1K tokens | Usage$0.0016 / 1K tokens |
ModelBabbage | Training$0.0006 / 1K tokens | Usage$0.0024 / 1K tokens |
ModelCurie | Training$0.0030 / 1K tokens | Usage$0.0120 / 1K tokens |
ModelDavinci | Training$0.0300 / 1K tokens | Usage$0.1200 / 1K tokens |
Embedding 模型
Model | Usage |
---|---|
ModelAda | Usage$0.0004 / 1K tokens |
Image 模型
Resolution | Price |
---|---|
Resolution1024×1024 | Price$0.020 / image |
Resolution512×512 | Price$0.018 / image |
Resolution256×256 | Price$0.016 / image |
Audio 模型
Model | Usage |
---|---|
ModelWhisper | Usage$0.006 / minute (rounded to the nearest second) |
References
chat.openai.com: https://chat.openai.com
[2]ai.com: https://ai.com
[3]API Key: https://platform.openai.com/account/api-keys
[4]OpenAI Tokenizer: https://platform.openai.com/tokenizer
[5]Tiktokenizer: https://github.com/dqbd/tiktokenizer
[6]openai/tiktoken: https://github.com/openai/tiktoken
[7]Chat completions 文档: https://platform.openai.com/docs/guides/chat
[8]创建 Chat completion: https://platform.openai.com/docs/api-reference/chat
[9]TypingMind: https://www.typingmind.com
[10]API Pricing: https://openai.com/pricing