From d8ef4a10318ac7dc2914c31404c049d43f6fc830 Mon Sep 17 00:00:00 2001 From: helloworld_xy <2366528143@qq.com> Date: Tue, 11 Apr 2023 19:03:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E7=BB=93=E6=9E=9C=E5=90=8E=E9=A2=9D=E5=A4=96?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E2=80=98=E5=87=BA=E9=94=99=E4=BA=86,?= =?UTF-8?q?=E8=AF=B7=E7=A8=8D=E5=90=8E=E5=86=8D=E8=AF=95=E2=80=99bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/requests.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/requests.ts b/app/requests.ts index 3d559e369..86d180f71 100644 --- a/app/requests.ts +++ b/app/requests.ts @@ -171,10 +171,15 @@ export async function requestChatStream( const resTimeoutId = setTimeout(() => finish(), TIME_OUT_MS); const content = await reader?.read(); clearTimeout(resTimeoutId); - const text = decoder.decode(content?.value, { stream: true }); + + if (!content || !content.value) { + break; + } + + const text = decoder.decode(content.value, { stream: true }); responseText += text; - const done = !content || content.done; + const done = content.done; options?.onMessage(responseText, false); if (done) { From 65aca5c38ae738fdcf3615ae88c4ab900d223c84 Mon Sep 17 00:00:00 2001 From: latorc <65785354+latorc@users.noreply.github.com> Date: Tue, 11 Apr 2023 22:17:36 +0800 Subject: [PATCH 2/2] Update faq-cn.md --- docs/faq-cn.md | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/docs/faq-cn.md b/docs/faq-cn.md index 7a71e75d8..6251889ca 100644 --- a/docs/faq-cn.md +++ b/docs/faq-cn.md @@ -6,6 +6,8 @@ # 部署相关问题 +各种部署方式详细教程参考:https://rptzik3toh.feishu.cn/docx/XtrdduHwXoSCGIxeFLlcEPsdn8b + ## 为什么 Docker 部署版本一直提示更新 Docker 版本相当于稳定版,latest Docker 总是与 latest release version 一致,目前我们的发版频率是一到两天发一次,所以 Docker 版本会总是落后最新的提交一到两天,这在预期内。 @@ -51,6 +53,18 @@ keepalive_timeout 300; # 设定keep-alive超时时间为65秒 - 到服务器的路由通吗? - 域名正确解析了吗? +## 什么是代理,如何使用? +由于OpenAI的IP限制,中国和其他一些国家/地区无法直接连接OpenAI API,需要通过代理。你可以使用代理服务器(正向代理),或者已经设置好的OpenAI API反向代理。 +- 正向代理例子:科学上网梯子。docker部署的情况下,设置环境变量HTTP_PROXY为你的代理地址(例如:10.10.10.10:8002)。 +- 反向代理例子:可以用别人搭建的代理地址,或者通过Cloudflare免费设置。设置项目环境变量BASE_URL为你的代理地址。 + +## 国内服务器可以部署吗? +可以但需要解决的问题: +- 需要代理才能连接github和openAI等网站; +- 国内服务器要设置域名解析的话需要备案; +- 国内政策限制代理访问外网/ChatGPT相关应用,可能被封。 + + # 使用相关问题 ## 为什么会一直提示“出错了,稍后重试吧” @@ -69,17 +83,6 @@ keepalive_timeout 300; # 设定keep-alive超时时间为65秒 ## 使用时提示"You exceeded your current quota, ..." API KEY有问题。余额不足。 -## 什么是代理,如何使用? -由于OpenAI的IP限制,中国和其他一些国家/地区无法直接连接OpenAI API,需要通过代理。你可以使用代理服务器(正向代理),或者已经设置好的OpenAI API反向代理。 -- 正向代理例子:科学上网梯子。docker部署的情况下,设置环境变量HTTP_PROXY为你的代理地址(http://地址:端口)。 -- 反向代理例子:可以用别人搭建的代理地址,或者通过Cloudflare免费设置。设置项目环境变量BASE_URL为你的代理地址。 - -## 国内服务器可以部署吗? -可以但需要解决的问题: -- 需要代理才能连接github和openAI等网站; -- 国内服务器要设置域名解析的话需要备案; -- 国内政策限制代理访问外网/ChatGPT相关应用,可能被封。 - # 网络服务相关问题 ## Cloudflare是什么? Cloudflare(CF)是一个提供CDN,域名管理,静态页面托管,边缘计算函数部署等的网络服务供应商。常见的用途:购买和/或托管你的域名(解析、动态域名等),给你的服务器套上CDN(可以隐藏ip免被墙),部署网站(CF Pages)。CF免费提供大多数服务。 @@ -98,6 +101,17 @@ Vercel 是一个全球化的云平台,旨在帮助开发人员更快地构建 - 国内服务器供应商:阿里云,腾讯等; 国内服务器事项:解析域名需要备案;国内服务器带宽较贵;访问国外网站(Github, openAI等)需要代理。 +## 什么情况下服务器要备案? +在中国大陆经营的网站按监管要求需要备案。实际操作中,服务器位于国内且有域名解析的情况下,服务器供应商会执行监管的备案要求,否则会关停服务。通常的规则如下: +|服务器位置|域名供应商|是否需要备案| +|---|---|---| +|国内|国内|是| +|国内|国外|是| +|国外|国外|否| +|国外|国内|通常否| + +换服务器供应商后需要转备案。 + # OpenAI相关问题 ## 如何注册OpenAI账号? 去chat.openai.com注册。你需要: @@ -135,3 +149,17 @@ OpenAI只接受指定地区的信用卡(中国信用卡无法使用)。一 - 通过上述两个方法就可以定位到你的 token 被快速消耗的原因: - 如果 openai 消费记录异常,但是 docker 日志没有问题,那么说明是 api key 泄露; - 如果 docker 日志发现大量 got access code 爆破记录,那么就是密码被爆破了。 + +## API是怎么计费的? +OpenAI网站计费说明:https://openai.com/pricing#language-models +OpenAI根据token数收费,1000个token通常可代表750个英文单词,或500个汉字。输入(Prompt)和输出(Completion)分别统计费用。 +|模型|用户输入(Prompt)计费|模型输出(Completion)计费|每次交互最大token数| +|----|----|----|----| +|gpt-3.5|$0.002 / 1千tokens|$0.002 / 1千tokens|4096| +|gpt-4|$0.03 / 1千tokens|$0.06 / 1千tokens|8192| +|gpt-4-32K|$0.06 / 1千tokens|$0.12 / 1千tokens|32768| + +## gpt-3.5-turbo和gpt3.5-turbo-0301(或者gpt3.5-turbo-mmdd)模型有什么区别? +官方文档说明:https://platform.openai.com/docs/models/gpt-3-5 +- gpt-3.5-turbo是最新的模型,会不断得到更新。 +- gpt-3.5-turbo-0301是3月1日定格的模型快照,不会变化,预期3个月后被新快照替代。