花1块钱让你的网站支持 ChatGPT(ChatGPT不要钱版额度)
I. ChatGPT不要钱版额度简介
ChatGPT是一款由OpenAI提供的人工智能对话模型,用户可以通过API调用与ChatGPT进行交互。ChatGPT提供了一定的不要钱额度供用户试用,以下是关于ChatGPT不要钱版额度的简介:
A. 用户初始取得的不要钱额度为100次要求/日,有效期为30天。
刚注册ChatGPT账号的用户将会取得100次不要钱要求的额度,这些要求可以在每天中的任什么时候间内使用。额度的有效期为30天,超过有效期后额度将会失效。
B. 用户可以根据实际需要和使用情况,灵活选择使用不要钱额度。
用户可以根据自己的需求和使用情况来选择使用不要钱额度。不管是一次性使用完不要钱额度,或者分散使用额度,用户都可以自由控制消耗额度的方式。
II. 不要钱额度的使用频率和使用量影响
ChatGPT不要钱额度能用多久取决于用户的使用频率和使用量。下面将分别介绍偶尔测试或使用量较少的用户和常常使用的用户在使用不要钱额度方面的情况:
A. 偶尔测试或使用量较少的用户,不要钱额度能用的时间可能会比较长。
1. 使用频率低,不要钱额度能够使用一个月或更久的时间。
对只偶尔测试ChatGPT的用户来讲,他们的使用频率较低,可以将有限的不要钱额度公道分配,这样不要钱额度能够使用一个月乃至更长的时间。
2. 使用量较少,不要钱额度能够满足用户的需求。
如果用户的使用量较少,每天的要求次数在不要钱额度内,那末不要钱额度能够满足用户的需求,用户不需要额外租赁API调用额度。
B. 常常使用的用户,不要钱额度使用时间较短。
1. 高频使用的用户可能在较短时间内使用完不要钱额度。
对常常使用ChatGPT进行对话的用户来讲,他们的使用频率较高,可能会较快地消耗完不要钱额度。
2. 使用量大的用户可能需要在不到30天的时间内租赁额外的API调用额度。
如果用户的逐日要求次数超过不要钱额度,或用户需要更大的API调用额度以满足其使用量需求,那末用户可能需要在30天内租赁额外的API调用额度。
III. ChatGPT Plus和OpenAI账户余额
除不要钱额度,用户还可以选择租赁ChatGPT Plus进行付费使用。以下是关于ChatGPT Plus和OpenAI账户余额的信息:
A. ChatGPT Plus的价格为20$/月,使用不会占用OpenAI账户的不要钱额度。
ChatGPT Plus是OpenAI提供的付费版本,价格为20美元/月。使用ChatGPT Plus不会消耗用户OpenAI账户中的不要钱额度,用户可以同时享受不要钱额度和ChatGPT Plus的服务。
B. OpenAI账户有18$的不要钱额度可用于抵扣API费用,与ChatGPT Plus无关。
OpenAI账户中有18美元的不要钱额度,用于抵扣API调用的费用。这18美元的不要钱额度与ChatGPT Plus的服务无关,用户使用ChatGPT Plus时不会消耗这部份不要钱额度。
IV. 其他额度相关信息
除上述信息,以下是关于ChatGPT额度的其他相关信息:
A. ChatGPT账号默许有一个API调用余额,默许为5美元或18美元。
新注册的ChatGPT账号根据区别情况默许取得5美元或18美元的API调用余额。
B. 新用户一般会取得5美元的不要钱额度,用于使用ChatGPT。
新用户在注册ChatGPT账号后一般会取得5美元的不要钱额度,可以用于使用ChatGPT的API调用。
C. 注册ChatGPT账号可取得不要钱额度,一般支持3600次对话。
注册ChatGPT账号后,用户可以取得不要钱额度,一般可以支持3600次对话。这部份额度能够帮助用户进行一定的对话测试和利用开发。
D. 额外的额度可以租赁API调用额度,价格根据使用情况而变化。
如果用户使用的API调用额度超过了不要钱提供的额度,用户可以根据自己的需求租赁额外的API调用额度。额度的价格将根据用户的使用情况而变化,用户可以根据实际情况选择租赁适合的额度。
总结
综上所述,ChatGPT不要钱额度能用多久取决于用户的使用频率和使用量。对偶尔测试或使用量较少的用户,不要钱额度可能能够使用一个月或更久的时间。而对频繁使用或使用量大的用户,不要钱额度可能在较短时间内用完,需要租赁额外的API调用额度。另外,使用ChatGPT Plus其实不会占用OpenAI账户的不要钱额度。用户可以根据自己的需求和预算选择合适自己的付费方案。
ChatGPT不要钱版额度的进一步展开说明
# GPT3.5 API:为智能对话带来新体验
![image](https://drive.google.com/uc?export=view&id=1EuNGssd4keIPNVjDvLRrqeb55Qrgwlzc)
最近,OpenAI 最新推出了 GPT3.5 API,让人们能够更便捷地体验全球最早进的智能对话模型。只需要花费短短一分钟的时间,你就能够快速上手使用!
ChatGPT 火热上线,技术圈沸腾不已。这也激起了我的兴趣,我决定在我的博客中加入一个 ChatGPT 的对话功能。
首先附上体验链接,源码在文末可以找到。
**[点击体验 ChatGPT](https://chatgpt-demo.openai.com/)**
ChatGPT 是OpenAI训练的一个AI对话模型,可以用于多种场景的智能对话。
想要体验ChatGPT,首先需要注册一个账户。但是由于这个产品在国内网络上没法直接使用,所以需要解决网络问题。
解决网络问题后,注册时会要求进行邮箱验证。然后就需要手机号验证,但很遗憾,国内手机号没法进行验证。
你可以尝试使用Google账号登录,但终究依然需要手机号验证。
因此,我们需要先找到一个能够接收短信验证码的海外手机号码。你可使用SMS-ACTIVATE这个网站来获得。
SMS-ACTIVATE提供了数百万个国家的虚拟号码,以便你在线接收带有确认代码的短信。他们还提供虚拟号码的长时间租赁、转发连接、电话验证等服务。
SMS-ACTIVATE上的价格是以卢布为单位,我们可使用支付宝来充值。我租赁了一个印度号码,这样我就能够收到来自OpenAI的验证码了。
需要注意的是,这个号码只是租赁,有一定的有效期。所以我们需要尽快完成注册流程,否则20分钟后,这个号码就不属于你了。
完成OpenAI账号注册后,你就能够在ChatGPT的Web工作台上体验AI对话了。
如果你想将ChatGPT的能力整合到自己的产品中,可以通过API接入OpenAI。
快速上手的方法是通过参考官方提供的案例,这个Chat的案例非常合适我们的需求。
官方提供了一个Node.js的starter,我们可以基于此迅速上手并测试一下。
“`
git clone https://github.com/openai/openai-quickstart-node.git
“`
其中核心代码以下所示,使用了OpenAI官方封装好的Node.js库openai。
“`javascript
const completion = await openai.createCompletion({
model: “text-davinci-003″,
prompt: ‘发问内容’,
temperature: 0.9,
max_tokens: 150,
top_p: 1,
frequency_penalty: 0,
presence_penalty: 0.6,
});
“`
在调用API之前,需要在你的OpenAI账户中生成一个API Key。
目前官方不要钱提供了18美元的额度,超过这个额度就需要付费了。计费是根据Token来计算的,关于Token的概念可以参考Key concepts。
我们可以直接使用上述Chat案例中的参数,基本上就能够得到一个漂亮的AI回答问题的样例。这个可以自己去试一试,非常简单。
接下来是研究怎么将这个starter代码集成到自己的产品中。
## 产品分析
之前,我在我的博客中实现了一个简单的WebSocket聊天功能。在AI对话的需求中,前真个UI部份基本上可以参考WebSocket聊天功能的实现来作出改变,工作量不大,主要工作量依然集中在前后真个逻辑和对接进程中。
对ChatGPT这个产品模板,它其实不是一个常规的WebSocket全双工对话,而是像我们平常调用接口一样简单地发送要求到服务端,等待服务真个响应,然后将响应反馈给用户。虽然界面上看起来像是一场聊天,但实际上其实不是标准的聊天进程。因此,前后端交互主要依赖于HTTP接口。
核心要素 – Prompt
在调用openai.createCompletion的时候,有一个重要的参数prompt,它是对话的上下文信息。只有当这个信息足够完全时,AI才能给出正确的回答。
举个例子,假定对话中有两个回合。
你:爱因斯坦是谁?
AI:爱因斯坦(Albert Einstein)是20世纪最重要的物理学家,他被誉为“时空之父”。他发现了相对论,并取得了诺贝尔物理学奖。
在第一个回合中,prompt传递的参数是”爱因斯坦是谁?”,这样AI能够理解你的问题并立即给出符合实际情况的回答。
你:他做了甚么贡献?
AI:他为社会做出了许多贡献,如改良公共卫生、建立教育基础设施、提高农业生产能力、增进经济发展等。
在第二个回合中,prompt传递的参数是”他做了甚么贡献?”。看到AI的回答,你可能会觉得有点离谱,由于AI不知道上下文信息,它没法理解”他”代表的是谁,只能通过”他做了甚么贡献”这个完全的句子来推断。从结果上看,它符合语言逻辑,但却不符合我们既有的语境。
如果我们把第二个回合的prompt改成”你:爱因斯坦是谁?”,AI就可以够理解上下文信息,并给出相应的回答。
你:他做了甚么贡献?
AI:爱因斯坦对科学做出了重大贡献,他发明了相对论,改变了人们对世界、物理定律和宇宙的认识,并为量子力学奠定了基础。他还发现了…。
因此,我们得出初步结论:prompt参数应当包括此次对话主题的完全内容,这样才能确保AI给出的下一次回答符合我们的基本认知。
前后端交互
对前端来讲,我们通常关注的是,我给后端发送了甚么数据,后端返回了甚么数据。因此,前真个关注点之一是用户的输入。使用上面的例子,”爱因斯坦是谁?”和”他做了甚么贡献?”这两个内容应当分别作为前端两次要求的参数。另外,对前端来讲,我们不需要关心后端将prompt传递给OpenAI时会不会是完全的,我们只需公道地将用户的输入内容传递给后端便可。
对后端来讲,我们需要关注会话问题。每一个用户都应当有自己和AI的私密对话空间,不能将其与其他用户的对话串在一起,这可以通过会话实现。前端每次传递的信息仅仅是简单的用户输入,后端需要将其与OpenAI的对接进程结合起来,将用户输入和保存的一些会话信息合并为一个完全的prompt传递给OpenAI,以确保正常的对话进程。
因此,基本的流程应当是这样的:
1. 用户在前端界面输入内容。
2. 前端通过HTTP要求将内容发送到后端。
3. 后端将接收到的内容与已存储的会话信息合并为一个完全的prompt参数。
4. 后端将完全的prompt参数传递给OpenAI进行处理,获得到AI的回答。
5. 后端将AI的回答返回给前端。
6. 前端将AI的回答展现给用户。
根据这个流程,我们开始编写第一个版本的代码。
## 后端 – V1版本代码
“`javascript
router.get(‘/chat-v1’, async function(req, res, next) {
const wd = req.query.wd;
if (!req.session.chatgptSessionPrompt) {
req.session.chatgptSessionPrompt = ”
}
const prompt = req.session.chatgptSessionPrompt + ` 发问:${wd} AI:`
try {
const completion = await openai.createCompletion({
model: “text-davinci-003”,
prompt,
temperature: 0.9,
max_tokens: 150,
top_p: 1,
frequency_penalty: 0,
presence_penalty: 0.6,
stop: [“
发问:”, “
AI:”],
});
req.session.chatgptSessionPrompt = prompt + completion.data
res.status(200).json({ code: ‘0’, result: completion.data.choices[0].text });
} catch (error) {
console.error(error)
res.status(500).json({ message: “Open AI 调用异常” });
}
});
“`
## 前端 – V1版本关键代码
“`javascript
const sendChatContentV1 = async() => {
msgList.value.push({
time: format(new Date(), “HH:mm:ss”),
user: “我说”,
content: chatForm.chatContent,
type: “mine”,
customClass: “mine”,
});
loading.value = true;
try {
const { result } = await chatgptService.chatV1({ wd: chatForm.chatContent });
msgList.value.push({
time: format(new Date(), “HH:mm:ss”),
user: “Chat AI”,
content: result,
type: “others”,
customClass: “others”,
});
} finally {
loading.value = false;
}
};
“`
基本的对话功能已有了,但是每一个回合等待的时间太长了,我们希望它能更快一点,最少在交互上看起来更流畅一些。
## 流式输出 – 服务器推送 + EventSource
荣幸的是,OpenAI也支持流式输出,在前端可以与EventSource一起使用。
流式输出的基本数据格式以下:
后端代码进行改造:
“`javascript
router.get(‘/chat-v2’, async function(req, res, next) {
try {
const completion = await openai.createCompletion({
stream: true
}, {
responseType: ‘stream’
});
res.setHeader(“content-type”, “text/event-stream”);
completion.data.pipe(res);
} catch (error) {
console.error(error)
res.status(500).json({ message: “Open AI 调用异常” });
}
});
“`
前端将不再使用axios发起HTTP要求,而是使用EventSource。
“`javascript
const sendChatContent = async () => {
msgList.value.push({
time: format(new Date(), “HH:mm:ss”),
user: “我说”,
content: chatForm.chatContent,
type: “mine”,
customClass: “mine”,
});
const es = new EventSource(`/api/chatgpt/chat?wd=${chatForm.chatContent}`);
let content = “”;
es.onmessage = (e) => {
if (e.data === “[DONE]”) {
chatgptService.feedback(content);
es.close();
loading.value = false;
updateScrollTop();
return;
}
const text = JSON.parse(e.data).choices[0].text;
if (text) {
if (!content) {
msgList.value.push({
time: format(new Date(), “HH:mm:ss”),
user: “Chat AI”,
content: text,
type: “others”,
customClass: “others”,
});
content += text;
} else {
content += text;
msgList.value[msgList.value.length – 1].content = content;
}
}
};
};
“`
从代码中可以看出,在EventSource的message事件结束时,前端还调用了feedback接口进行反馈。这是由于在使用Pipe输出时,后端没有记录AI的回答文本。斟酌到前端已处理了文本,这里由前端进行反馈,将本次AI回答的内容完全地传递给后端,后端再更新会话信息,保证对话的完全性。
feedback接口的实现非常简单:
“`javascript
router.post(‘/feedback’, function(req, res, next) {
if (req.body.result) {
req.session.chatgptSessionPrompt += req.body.result
res.status(200).json({ code: ‘0’, msg: “更新成功” });
} else {
res.status(400).json({ msg: “参数毛病” });
}
});
“`
我这里只是给出一种简单的方法,请注意这仅供参考,不能保证在所有情况下都完善运行。
限制访问频率
由于OpenAI也有不要钱的使用额度,因此需要限制调用频率和次数,以避免被歹意调用。这可以通过session来实现。我这里给出一种比较简单的处理方式,实际产品中可能会使用Redis、数据库写入和定时任务等更复杂的方法,这方面我也不是太专业,所以就不展开了。
对访问频率,我暂定在3秒内最多调用一次。我们可使用当前时间减去上一次记录的chatgptRequestTime来判断会不会在3秒内,如果是,则返回HTTP状态码429;如果不在3秒内,则进行后续逻辑。
“`javascript
if (req.session.chatgptRequestTime && Date.now() – req.session.chatgptRequestTime <= 3000) {
return res.status(429).json({ msg: "请降低请求频次" });
}
```
对于请求次数,同样的道理,我这里使用了一个简单的实现方法。实际上,还需要考虑跨天清理等逻辑。由于这里是简化的示例,所以并没有涉及这些。
```javascript
if (req.session.chatgptTimes && req.session.chatgptTimes >= 50) {
return res.status(403).json({ msg: “到达调用上限,欢迎明天再来哦” });
}
“`
同一个话题聊得太多也不好,否则传递给OpenAI的prompt参数会很大,这可能会消耗很多Token,也有可能超越OpenAI参数的限制。
“`javascript
if (req.session.chatgptTopicCount && req.session.chatgptTopicCount >= 10) {
req.session.chatgptSessionPrompt = ”
req.session.chatgptTopicCount = 0
return res.status(403).json({ msg: “这个话题聊得有点深入了,不如换一个” })
}
“`
## 结语
总的来讲,OpenAI开放出的GPT3.5 API能够满足基本需求,但仍有很大的改进空间。我在文章中给出的代码仅供参考,不能保证在所有情况下都完善运行。
附上源码地址:[点击这里](https://github.com/example)
如果觉得好,请给项目点个star吧,ball ball了[认真脸]。
ChatGPT不要钱版额度的常见问答Q&A
问题1:CHATGPT不要钱额度能用多久?
答案:CHATGPT不要钱额度的使用期限取决于用户的使用频率和使用量。如果用户只是偶尔测试CHATGPT或使用量较少,不要钱额度能够使用相对较长的时间,乃至能够使用一个月或更久。但如果用户需要常常使用CHATGPT或使用量较大,不要钱额度的使用时间可能会相对较短。
- 如果用户只需偶尔测试或使用量较少,不要钱额度可以使用一个月或更久。
- 如果用户需要常常使用或使用量较大,不要钱额度的使用时间可能较短。
- 用户可以根据实际需要和使用情况灵活选择使用不要钱额度。
问题2:ChatGPT的不要钱额度是多少?
答案:目前在CHATGPT中,用户初始取得的不要钱额度为100次要求/日,有效期为30天。用户可以根据自己的实际需要和使用情况,灵活地选择使用不要钱额度。
- 用户初始取得的不要钱额度为100次要求/日。
- 不要钱额度的有效期为30天。
- 用户可以根据自己的实际需要和使用情况灵活选择使用不要钱额度。
问题3:ChatGPT账号有甚么限制?
答案:ChatGPT账号的限制主要针对不要钱用户和付费用户有所区分。具体来讲,不要钱用户的使用额度和使用时间有限,而付费用户可以享受更高的使用额度和更长的使用时间。
- 不要钱用户的额度为100次要求/日,有效期为30天。
- 付费用户可以根据自己的需要租赁API调用额度。
- 不要钱用户和付费用户在使用ChatGPT时需要遵照OpenAI的使用协议。