舒服了!她來了,ChatGPT官方API她來了
距OpenAI線上發(fā)布ChatGPT時隔3個月之久,萬眾期待的ChatGPT官方API終于發(fā)布了,小伙伴們可將其集成在應(yīng)用程序等產(chǎn)品中。ChatGPT的模型API地址:https://platform.openai.com/docs/guides/chat。
????根據(jù)Open AI官方的說法,開放ChatGPT的模型API主要有兩個原因。
????第一,持續(xù)優(yōu)化和創(chuàng)新:Open AI希望借助更多的企業(yè)和開發(fā)人員來使用Gpt-3.5-turbo模型,一起發(fā)現(xiàn)、改善模型并持續(xù)進(jìn)行功能迭代、創(chuàng)新。同時也希望各路玩家們能基于Gpt-3.5-turbo模型,開發(fā)出更具商業(yè)價值、創(chuàng)造力的應(yīng)用程序。
????第二,造福人類:自去年12月份以來,Open AI已將ChatGPT的成本降低了90%?,F(xiàn)在,希望通過API的方式將節(jié)省的資金,賦予企業(yè)、個人開發(fā)者等。此外,Gpt-3.5-turbo模型不應(yīng)該只屬于Open AI,這是全人類共同的財富是時候共享它了。
????與OpenAI此前開放的其他模型接口一樣,ChatGPT接口提供兩種調(diào)用方式:(1)使用openai庫直接進(jìn)行調(diào)用;(2)使用http請求進(jìn)行調(diào)用。我比較偏向后者,下面給出簡單的使用樣例(github:https://github.com/ Chenny0808/ChatGPT-API。
步驟1:申請OpenAI賬號,并且生成專屬的api-key;
步驟2:運(yùn)行服務(wù),代碼如下:
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" ?# 異常詳細(xì)信息
? ? ? ?code = 500
? ? ? ?msg = "服務(wù)器內(nèi)部錯誤!"
? ?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) ?# 接口返回數(shù)據(jù)
? ?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:調(diào)用ChatGPT服務(wù)
請求參數(shù):
????比較重要的參數(shù)有2個,其他參數(shù)詳情請至官網(wǎng)查看(https://platform.op enai.com/docs/guides/chat/introduction)
????(1)message:輸入待補(bǔ)全的信息,包括角色和問題兩個字段,可以通過傳入多個信息,來構(gòu)建多輪對話;
????(2)temperature:回復(fù)的嚴(yán)格程度(0-2),值越小回復(fù)越精確嚴(yán)格,值越大,回復(fù)更圓滑隨意。
url:https://api.openai.com/v1/chat/completions
{
????????"messages":?[{"role":?"user",?"content":?"中國何時能進(jìn)世界杯?"}],
????????"max_tokens":?1024,
????????"model":?"gpt-3.5-turbo",
????????"top_p":?1,
????????"temperature":?0.3,
????????"n":?3
}
返回結(jié)果:
{
????"code":?200,
????"msg":?"成功",
????"data":?{
????????"answer":?[
????????????{
????????????????"role":?"assistant",
????????????????"content":?"\n\n作為AI語言模型,我無法預(yù)測未來,但中國足球正在不斷發(fā)展和改善,相信隨著時間的推移,中國足球會越來越強(qiáng)大,有望在未來的世界杯賽場上取得更好的成績。"
????????????},
????????????{
????????????????"role":?"assistant",
????????????????"content":?"\n\n作為一個AI語言模型,我無法預(yù)測未來的事情,但是中國足球一直在努力提高自己的水平,希望在不久的將來能夠進(jìn)入世界杯。"
????????????},
????????????{
????????????????"role":?"assistant",
????????????????"content":?"\n\n作為一名?AI?語言模型,我無法預(yù)測未來的事情,也無法對政治和體育事件做出評論。但是,中國足球一直在努力提高水平,希望能夠在未來的世界杯比賽中取得更好的成績。"
????????????}
????????],
????????"elapse":?"1.759?s"
????}
}
福利:關(guān)注公眾號,回復(fù)“chatgpt”,領(lǐng)取ChatGPT系列講座PPT合集。

關(guān)注NLP有品,多少有些收獲不是

