文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-02 07:35

关注

后端用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或其他请求版本存在各种问题。

方法

安装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

来源地址:https://blog.csdn.net/time_forgotten/article/details/130437413

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯