舒服了!她来了,ChatGPT官方API她来了
距OpenAI线上发布ChatGPT时隔3个月之久,万众期待的ChatGPT官方API终于发布了,小伙伴们可将其集成在应用程序等产品中。ChatGPT的模型API地址:https://platform.openai.com/docs/guides/chat。
根据Open AI官方的说法,开放ChatGPT的模型API主要有两个原因。
第一,持续优化和创新:Open AI希望借助更多的企业和开发人员来使用Gpt-3.5-turbo模型,一起发现、改善模型并持续进行功能迭代、创新。同时也希望各路玩家们能基于Gpt-3.5-turbo模型,开发出更具商业价值、创造力的应用程序。
第二,造福人类:自去年12月份以来,Open AI已将ChatGPT的成本降低了90%。现在,希望通过API的方式将节省的资金,赋予企业、个人开发者等。此外,Gpt-3.5-turbo模型不应该只属于Open AI,这是全人类共同的财富是时候共享它了。
与OpenAI此前开放的其他模型接口一样,ChatGPT接口提供两种调用方式:(1)使用openai库直接进行调用;(2)使用http请求进行调用。我比较偏向后者,下面给出简单的使用样例(github:https://github.com/ Chenny0808/ChatGPT-API。
步骤1:申请OpenAI账号,并且生成专属的api-key;
步骤2:运行服务,代码如下:
import requests
from flask import Flask
from flask import request
from flask_cors import *
import traceback
import json
import logging
import time
app = Flask(__name__)
CORS(app, supports_credentials=True)
logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
conf = json.load(open("config.json"))
def chatgpt35_api(request_data):
"""offical api"""
headers = {
"content-type": "application/json",
'Authorization': "Bearer " + conf["key"]
}
response = requests.post(url=conf["url"], headers=headers, json=request_data)
answer = [elem["message"] for elem in response.json()['choices']]
return answer
@app.route('/api/chatgpt/v2', methods=['GET', 'POST'])
def extract_info():
code = 200
log_text = ""
answer = ""
elapse = ""
try:
request_data = json.loads(request.get_data(as_text=True))
log_text = "access message as below\naccess parameter: \n"
log_text += "\tqps_data: {qps_data}".format(qps_data=request_data)
st = time.time()
answer = chatgpt35_api(request_data) # 20220419
elapse = f"{round(time.time() - st, 3)} s"
msg = "成功"
except Exception as e:
log_text += "exception args: {args}".format(args=e.args) # 异常信息
log_text += traceback.format_exc() + "\n" # 异常详细信息
code = 500
msg = "服务器内部错误!"
data = {"answer": answer, "elapse": elapse}
response = json.dumps({"code": code, "msg": msg, "data": data}, ensure_ascii=False)
log_text += "\nreturned data: \n\t{data}".format(data=data) # 接口返回数据
logging.info(log_text)
return response
if __name__ == '__main__':
app.config['JSON_AS_ASCII'] = False
from time import strftime, localtime
with open("log.txt", "a+", encoding="utf8") as f:
f.write("\nService on port 5200 started ^_-\n" + strftime("%Y-%m-%d %H:%M:%S", localtime()) + "\n")
app.run(host='0.0.0.0', port=5200, processes=True) # threaded=True
步骤3:调用ChatGPT服务
请求参数:
比较重要的参数有2个,其他参数详情请至官网查看(https://platform.op enai.com/docs/guides/chat/introduction)
(1)message:输入待补全的信息,包括角色和问题两个字段,可以通过传入多个信息,来构建多轮对话;
(2)temperature:回复的严格程度(0-2),值越小回复越精确严格,值越大,回复更圆滑随意。
url:https://api.openai.com/v1/chat/completions
{
"messages": [{"role": "user", "content": "中国何时能进世界杯?"}],
"max_tokens": 1024,
"model": "gpt-3.5-turbo",
"top_p": 1,
"temperature": 0.3,
"n": 3
}
返回结果:
{
"code": 200,
"msg": "成功",
"data": {
"answer": [
{
"role": "assistant",
"content": "\n\n作为AI语言模型,我无法预测未来,但中国足球正在不断发展和改善,相信随着时间的推移,中国足球会越来越强大,有望在未来的世界杯赛场上取得更好的成绩。"
},
{
"role": "assistant",
"content": "\n\n作为一个AI语言模型,我无法预测未来的事情,但是中国足球一直在努力提高自己的水平,希望在不久的将来能够进入世界杯。"
},
{
"role": "assistant",
"content": "\n\n作为一名 AI 语言模型,我无法预测未来的事情,也无法对政治和体育事件做出评论。但是,中国足球一直在努力提高水平,希望能够在未来的世界杯比赛中取得更好的成绩。"
}
],
"elapse": "1.759 s"
}
}
福利:关注公众号,回复“chatgpt”,领取ChatGPT系列讲座PPT合集。

关注NLP有品,多少有些收获不是

