欢迎光临散文网 会员登陆 & 注册

舒服了!她来了,ChatGPT官方API她来了

2023-03-02 14:29 作者:chenny88  | 我要投稿

距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有品,多少有些收获不是


舒服了!她来了,ChatGPT官方API她来了的评论 (共 条)

分享到微博请遵守国家法律