chatgpt 不能用的地区 香港 快速开发一个 ChatGPT 应用的保姆级教程

默认分类5个月前发布 admin
3,511 0
ChatGPT国内版

本文转自 ,原文:,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud–yang

最近都在问,于是写个文档。本文希望用尽可能少的内容,讲清楚开发一个 /GPT 应用必然用到的知识。

欢迎 PR 补充。

& 的关系

是 推出的应用,使用的是最新的模型;而 开放接口的模型是 gpt-3.5-turbo ,这个模型比 应用要笨。但 用的最新模型没有接口,只能通过无头浏览器等方式来使用(不稳定)。

更新:目前已经开放了 gpt-4 ,当前尚未提供图片输入接口,使用方式和 gpt-3.5-turbo 一致,只需要将 model 参数更换为 gpt-4 ,注意 gpt-4 的 max 为 8k (gpt-4-32k 为 32k),Token 价格是 3.5 的 15~30 倍。

API 接口能做什么

能做的事情很多,可以查看官方文档[1],但这个文档中国网络目前无法访问。

具体来讲, 所有的可用的接口都在里边,包括语音识别和图片生成。但真正智能的其实只有 gpt-3.5-turbo,因此刚开始不用看其他内容。

目前大家看到的绝大部分 GPT 类应用都是由 gpt-3.5-turbo 模型的 chat 对话补全接口实现的。

chat 接口如何使用?

可以通过很多方式来使用,比如使用官方 SDK,第三方项目,但其实只需要一个 HTTP 请求就可以。以下是官方文档给出的例子:

curl https://api.openai.com/v1/chat/completions 
  -H 'Content-Type: application/json' 
  -H 'Authorization: Bearer YOUR_API_KEY' 
  -d '{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Hello!"}]
}'

从里边可以看到,需要的信息有:

① 请求地址: 这个地址目前在国内大部分地区已经无法访问了,后边会讲解决办法

② 最常用的接口参数包括:

model: 必填,建议使用 gpt-3.5-turbo,便宜。计费后边会讲。

: AI 进行提问的问题或信息。

: 选填,指定生成回答的最大 Token 数。

: 选填,是否按流的方式发送内容。

其中 的格式为:{“role”,””}。一般用 user 发送用户问题; 发送给模型提示信息。

例如:

[
  {"role""system""content""You are a helpful assistant that translates English to French."},
  {"role""user""content""Translate the following English text to French: {text}"}
]

知道了这些基本就可以跑通 GPT 流程了,其他 role 可以稍后优化时来做。

参数

这里单独说一下 参数,当它设置为 true 时,API 会以 SSE( Side Event )方式返回内容。

SSE 本质上还是 HTTP 协议,只不过它是一个长链接,先输出一个 (“-Type: text/event-“) , 然后持续不断地输出内容直到完成。如果不是做实时聊天,建议直接 false 掉。

需要注意的是,开启 后,将不会返回 usage 信息,这对精准计费有影响

{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"我"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"没有"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"当前"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"日期"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"的"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"实"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"时"},"index":0,"finish_reason":null}]}
{"id":"chatcmpl-6s3hNohxOliHi8zR7m5UTrLm4cWWc","object":"chat.completion.chunk","created":1678341949,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"信息"},"index":0,"finish_reason":null}]}

其他参数

接口的其他参数可以看官方文档[2],访问不了的同学可以看我做的截图。

Chat 接口如何计费?

chat 接口按 token 计费,有一个专门的算法来计算 token。输入和输出全部都会计入到 token 里边,在 chat 接口的 usage 里边会有具体消耗的 token 数。

如果你要自己计算,可以用这个在线表单[3],程序计算可以看看这两个项目:

除了 gpt-3.5-turbo 模型的 chat 接口,还有 text–003 模型的 text 接口可以用,但是价格更贵,效果更差

你可以在 查询到价格,以下是 3 月中旬的定价

gpt-3.5-turbo ()

$0.002 / 1K

()

$0.0200 / 1K

chatgpt 不能用的地区 香港 快速开发一个 ChatGPT 应用的保姆级教程

Ada ()

$0.0004 / 1K

()

$0.0005 / 1K

Curie ()

$0.0020 / 1K

chat 接口能做什么 ①

虽然 chat 看起来像是一个聊天接口,但接口设计上并没有为聊天优化,因为这个接口是记不住上下文的。

为了让对话具有连续性,我们每次请求需要带上上次的聊天记录。有多种方式解决这个问题,一个是直接在 参数中加上聊天记录。其中,GPT 返回的内容用 role。

[
     {"role""system""content""You are a helpful assistant."},
     {"role""user""content""Who won the world series in 2020?"},
     {"role""assistant""content""The Los Angeles Dodgers won the World Series in 2020."},
     {"role""user""content""Where was it played?"}
 ]

另一个方式是使用第三方库,比如 -api,它可以自动帮你发送聊天记录(通过指定对话的 实现):

在加上对话记录后,chat 接口就可以制作一个看起来有智能的聊天应用了。

如果你要在国内运营聊天机器人之类的话,请记得将内容通过文本内容审核接口进行审核,否则很可能导致被封。

chat 接口能做什么 ②

其实除了对话,GPT 有很强的内容总结归纳能力,另外由于它能理解内容结构,同时本身又是语言模型,因此对结构化翻译很擅长。

比如,我经常用它翻译 JSON 和 ,大部分情况下效果很好。在自用体验很好的情况下,我们可以将其制作为应用。

应用开发非常简单,我只用一天时间开发了AiBox[4],按基本的 web 应用开发就可以,重点说几个细节:

提示词:直接把提示词以 的 role 提交就可以。

Key 问题:开发者的 Key 肯定是不够用的,因此一般会让使用者填写自己的 Key。但是国内用户没有海外手机号,无法申请 key; 申请下来 API 直接访问也不通,解决方案有几种,后边专门讲

Token 计算和限制问题:如果使用者用自己的 Key,为了提升体验,我们可以提供一个 Token 计算,让用户知道自己的会花多少钱。另外如果你没有用第三方那个库来分拆,那么一次请求的内容不要超过 的限制。这个值一般是 4096。

国内是否可以上线运营 GPT 相关业务?

就目前而言,我了解到的情况是大部分企业没有收到明确禁止运营 GPT 相关业务的通知,但在国内运营要做好内容安全,比如对接口返回的内容再过一层内容审核。否则如果在应用中出现违规内容被举报,就会被封禁。

但这是一个随时可能变化的情况,我们准备了一个 issue[5]供大家反馈。

如何解决国内用户无法注册 账号、无法访问 接口的问题?

两个思路,一个是绕道海外去注册,通过代理使用服务;另一个是直接使用第三方代理 API 服务。前者可以暂时解决当前的问题;后者更方便省心。

注册

准备一个海外的网络

准备一个海外手机号来接收验证短信,可以用 海外虚拟号码[6]

注册完成后,进入API 页面[7] 创建 Key,然后就可以使用了。

这个方案目前可行,是因为 给每个新用户提供了 18 美金的免费额度。但是一旦不再提供,就会面临充值的问题。目前 不接受中国信用卡,因此还必须准备一个海外信用卡。也就是说,要长久稳定的使用,必须有海外信用卡。

以前有财付通的海外虚拟信用卡,后来服务下线了。最近看了下,很多 起,还只支持电商网站,感觉不太靠谱

访问 API

3 月 3 日开始,国内大部分网络不再能直接访问 接口。

因此你需要架设代理来访问 接口。你可以将整个服务器代理到海外网络,或者只是简单的通过 或者 腾讯云函数来部署 API 代理。

如果你准备使用腾讯云函数,教程可以看这里[8]

需要注意的是,腾讯云 API 代理会将长连接内容一次性返回,因此流式体验不明显。当然,有同学说腾讯云的 直接就能代理,但我测试了下没成功。

通过第三方接口访问

如果你搞不定海外手机号和信用卡,或者自己不想架设代理,那么可以考虑用像API2D[9]这样的第三方代理 API。

主要的优点:

基本兼容原有接口,只需要改下 API 和 Key

接口国内直接可以访问,无需架设代理

chatgpt 不能用的地区 香港 快速开发一个 ChatGPT 应用的保姆级教程

支持微信和国内卡充值,提供最小 0.5 美金 /3.5 人民币的测试档位, 注册还有 50 点免费额度试用

添加 参数,可以返回内容审核结果,省事

推荐可以获得点数,这里是我的 推荐链接[10]

缺点:

不支持 参数,已经支持

目前只支持 chat 和 接口

价格比官方略高,大概 1.5 倍,当然这个包含了流量中转的成本

利益相关:api2d 这个产品是作者加拿大的朋友做的,而且作为早期用户一直在重度使用

如何避免 封禁账号 API 权限

最近得到反馈,很多架设香港代理的账号收到了邮件被禁用了权限。经过群里大家的讨论,总结的经验如下:

不要使用 不服务地区的代理

虚拟海外手机号更可能导致账号被封

绑定信用卡可以大幅提升账号存活率

如何知道 接口状态

官方提供了一个状态页[11],虽然小故障不怎么显示,但大面积宕机时能看到公告。

引用链接

[1]

官方文档:

[2]

官方文档:

[3]

在线表单:

[4]

AiBox:

[5]

一个 issue:

[6]

海外虚拟号码:

[7]

API 页面:

[8]

教程可以看这里:

[9]

API2D:

[10]

推荐链接:

[11]

状态页:

你可能还喜欢

点击下方图片即可阅读

云原生是一种信仰

323AI导航网发布

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...