OpenAI 在美国时间3月1日正式开放了ChatGPT模型GPT3.5的API。一下子大家有忙活起来了!
博主大概翻阅了一下相关内容,总结了一些点分享一下给大家。
计费情况
目前 gpt-3.5-turbo 价格相对于 gpt-3要优惠很多!
Chat(gpt-3.5)价格:$0.002 / 1K tokens
Davinci(gpt-3) 价格:$0.02 / 1K tokens
所以 gpt-3.5-turbo 模型价格更实惠一些!但是如果携带上下文提问,还是比较费tokens的!
1K tokens 大概是 750个单词,新注册用户送18美元体验价,大概能使用 900万个单词!
实现原理
其实在GPT-3模型已经很强大了!但是ChatGPT拥有上下文语境关联,官方最开始未提供GPT-3.5的时候。
博主在JIKE社区的ChatGPT代码中,利用引用历史回复的方式,也能实现上下文语境。体验还不错!
缺点就是有点费钱!因为每次向OpenAI提问的时候需要携带历史内容,会大量消耗tokens~
现在官方提供了更方便的形式!
接口介绍
目前ChatGPT 开放了2个模型:gpt-3.5-turbo 和 gpt-3.5-turbo-0301
这俩个模型什么区别?
gpt-3.5-turbo-0301模型 是 gpt-3.5-turbo模型的快照!gpt-3.5-turbo-0301不会自我更新,并于 2023 年 6 月 1 日结束。
如果你的代码使用的是官方的SDK需要更新到最新版本!比如Python OpenAI SDK 必须更新到0.27.0以上!
有些镜像可能同步会慢一些,可以直接从官方更新!
- pip3 install -i https://pypi.python.org/simple/ openai==0.27.0
接口怎么调用?
官方DEMO
- 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!”}]
- }’
相对于GPT-3的调用,有2处不一样
- 接口地址
- 参数prompt 换成 messages
messages的格式如下:
- import openai
- openai.ChatCompletion.create(
- model=“gpt-3.5-turbo”,
- messages=[
- {“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?”}
- ]
- )
messages里面是一个列表。列表的每一项是字典。
其中role 有三种角色:system,user,assistant
system,一般是消息的第一条,定一个这次交互的基调。比如这是一个翻译的AI,这是一个代码助手等等
user,指的是完美用户提到的问题
assistant,指的是AI回复的内容
这里列表顺序需要按照提问回答的顺序依次添加!
下图是3月2日早上测试接口的内容
代码升级
GPT-3 怎么无缝切换到 GPT-3.5?其实也简单,就调整一下参数即可。
历史文章:OpenAI ChatGPT 接入NodeBB社区论坛,轻松丰富社区内容
之前博主写过一个针对NodeBB的 ChatGPT 机器人。也已经完美支持了GPT-3.5模型!
从用户使用上和之前一样!
可以单一提问!也可以上下文提问!
仅需回复机器人的时候,引用历史帖子即可!
域名被墙
就在3月2日凌晨调试代码的时候,突然发现OpenAI的API域名疑似被Q~
后来查询一看,果然~~~~
解决方法
- 将代码服务运行在境外服务器上。
- 国内服务器或者你本机,需要前置一个代理。这里有一个系列:GitHub国内加速 可以参考,举一反三!
- 境外服务器反代OpenAI API域名,应该也有人会提供这样的服务。这种情况有利有弊,尽量还是自建!比如下面的Nginx配置。
- server
- {
- listen 8088;
- server_name _;
- location / {
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_pass https://api.openai.com;
- }
- access_log logs/abccom.log;
- }