python+flask+eventSource打造流式chatGPT生成式API接口

后端用python,前端用web,怎么打通chatGPT API连接?

如果你遇到这样的情况:

科学上网登chat.openai.com开启一个新聊天,总是出现网页错误,刷新几次就没有对话的想法了。

获取了chatGPT的APIkey,用网上一大堆PHP/JSP/CURL的代码去试,效果很差,不是反应慢,就是兼容性不好。

用python安装了openai模块,调用没问题,但自己的网站怎么调用呢?

准备工作:

科学上网此处省略一万字(有问题私信)

获取一个openai的apikey(点击这里)

python3.7+环境安装openai,flask,render_template,flask_cores

准备一个编辑器,推荐vs code

实现目标:

用自己的openai apikey,通过python+flask+web,打造一套跨域的api外围接口

聊天GPTFlaskWebAPI

这是一个使用 python flask、HTML、jquery 的 openAI 的 chatGPT API。

介绍

本代码实现任意前端web静态页面调用python版chatGPT API,方便网站将相关应用集成到自己的业务中。大致的需求是这样的:我有一个网站,但是在chatGPT无法访问的区域,我需要向代理服务器提交本地数据请求,得到答案,完成业务逻辑。

问题

当我们调用openAI API 时会发生以下情况:1、问题会等待很长时间。2、不稳定。3、存在封号危险。4、只能在本地使用,不能远程调用。5.PHP或其他请求版本存在各种问题。

方法

1、安装openAI的python版本,使用原模块调用,速度更快,兼容性更好,不会被阻塞。2、使用flask等python模块发布端口web服务。3、自己制作静态网页。可以使用html+jquery和eventSource从服务器向网页输出流信息。4、使用stream方式获取openAI的数据。

一个FLASK的基本架构:

from flask import Flask, render_template, request, sessionimport flaskimport osimport openaiapp = Flask(__name__)app.config['SECRET_KEY'] = os.urandom(24)@app.route("/chatgpt",methods=["POST","GET"])

在网站前端使用的html+js,运用eventSource从S->B端的通信方式,基本的请求示例:

var source = new EventSource("http://xxx.xxx.xxx:port/chatgpt?question="+q);source.onmessage = function(event){    if(event.data == "[DONE]"){       //do something..        source.close()    }else{        //show in some divs innerHTML    } }

在flask-web后端程序中,加入openai通信(聊天)的这一部分程序,进行调用,注意要使用流式操作,stream=true

def stream():  openai.api_key = "YOUR API-KEY"  response = openai.ChatCompletion.create(      model="gpt-3.5-turbo",      messages=[      {"role": "user", "content": question}      ],      temperature=0,      #max_tokens=1000,      stream=True,      #top_p=1,      #frequency_penalty=0,      #presence_penalty=0,      #user='Wemio机器人'  )  for trunk in response:      if trunk['choices'][0]['finish_reason'] is not None:          data = '[DONE]'      else:          data = trunk['choices'][0]['delta'].get('content','')      yield "data: %s\n\n" % data.replace("\n","
")
return flask.Response(stream(),mimetype="text/event-stream")

加入模板调用:

return render_template('chatpgt.html')#PAT:the page is in directory of "templates/"

最后运行这个应用:

app.run(host="0.0.0.0", port=5000, debug=True)

完整代码:

第一版在github上,写得比较粗糙,第二版放在朋友的小工具箱web-tool里,可以测试使用

github GitHub - wemio/chatGPTFlaskWebAPI: This a chatGPT API of openAI using python flask, HTML,jquery.

https://github.com/wemio/chatGPTFlaskWebAPI

web-tool

你可能感兴趣的:(flask,python,后端)