您现在的位置是:首页 >技术杂谈 >python+flask+eventSource打造流式chatGPT生成式API接口网站首页技术杂谈
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, session
import flask
import os
import openai
app = 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 " % data.replace(" ","<br>")
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