当前位置: 首页 > news >正文

电子商务网站建设与管理实验目的互联网关键词优化

电子商务网站建设与管理实验目的,互联网关键词优化,赛门仕博做网站怎么样,黑龙江电商网站建设关于SSE的基本概念可以看一下阮一峰老师的这篇文章:Server-Sent Events教程。 现在比较常见的场景是gpt回答的时候类似下图这种打字机的情况,因为AI一般响应时间会比较长,使用这种方式能让人别等那么久,是一个相对比较良好的用户…

关于SSE的基本概念可以看一下阮一峰老师的这篇文章:Server-Sent Events教程。

现在比较常见的场景是gpt回答的时候类似下图这种打字机的情况,因为AI一般响应时间会比较长,使用这种方式能让人别等那么久,是一个相对比较良好的用户体验。

在这里插入图片描述
这里简单说一下具体这个场景下的实现思路。

客户端(前端)

SSE 使用 HTTP 协议,客户端需要向服务端发起一次请求,需要定义一个fetchEventSource方法,大概这样:

		const fetchEventSource = (url, options) => {fetch(url, options).then(resp => {if (resp.status === 200) {options.onopen && options.onopen()return resp.body}}).then(rb => {const reader = rb.getReader()const push = () => {// done 为数据是否接收完成 boolean 值// value 为接收到的数据, Uint8Array 格式return reader.read().then(({done, value}) => {if (done) {options.onclose && options.onclose()return}options.onmessage && options.onmessage(new TextDecoder().decode(value))return push()});}// 开始读取流信息return push()}).catch((e) => {options.error && options.error(e)})}

定义url和options参数,url传请求的地址,options可以定义更多内容,大概像这样调用fetchEventSource方法:

			fetchEventSource('http://localhost:8000/gpt/summary', {method: 'POST',body: JSON.stringify(data),headers: {"Content-Type": "application/json","Authorization": "此处可以带接口鉴权token"},onopen: () => {console.log('连接sse成功')},onclose: () => {console.log('sse连接关闭')},onmessage: (delta) => {let prefix = 'data: 'if (!delta.startsWith(prefix)) {return;}let delta_array = delta.split(prefix);delta_array.forEach(function(element) {element = element.replace(/\n$/, '')if (element === '[DONE]\n') {return;}if (element != '') {// 可能有多个回答let choices = JSON.parse(element).choices;let content = choices[0].delta.content;console.log(content);$('#mean').append(content);}});}})

可以看到option中比实际http请求多了几个函数:onopen onclose onmessageonopen代表和服务端建立连接成功,onclose则是关闭服务端连接的时候会被调用,onmessage则是处理接口返回的数据,一般是需要处理多份数据,这里详细讲一下onmessage的处理方式。

onmessage可以看到参数是delta,假如说GPT场景下返回了“你好,我是GPT的文字”,可能第一个delta里就返回包含”你好“,第二个delta里返回“,”,第三个delta返回“我是”等等以此类推直到数据返回完毕。数据返回的格式因业务不同也会不同,但基本要做的事情就是处理并解析里面的数据,然后把这些文字拼接到页面上做显示,实现效果。

服务端(后端)

服务端的任务通常是调用gpt的接口,然后流式读取,读到什么马上返回给前端。

这里给一个python的demo:

from sse_starlette.sse import ServerSentEvent, EventSourceResponsedef create_chat_completion(messages):# 发起请求response = openai.ChatCompletion.create(engine="gpt-35-turbo",messages=messages,stream=True, # 该参数需要设置为truemax_tokens=1000)# 循环处理stream结果for item in response:# yield ServerSentEvent(json.dumps(item, ensure_ascii=False), event='delta')result = json.dumps(item)print(result)yield ServerSentEvent(json.dumps(item))@router.post("/summary")
async def summary(contentNeedSummary: posts.ContentNeedSummary, user = Depends(get_token_header)):    messages = [{"role": "system", "content": "可以预置一些系统的设置"},{"role": "user", "content": contentNeedSummary.content}]return EventSourceResponse(create_chat_completion(messages))

可以看到上面的方法,前端调用/summary接口后,进入summary函数,做一些这个方法特有的设置之后,return了EventSourceResponse(create_chat_completion(messages))。create_chat_completion再实现通用的调用gpt的方法,每得到一个响应,马上用ServerSentEvent包裹返回给前端。

也就是说,整个过程,是前端发起SSE请求服务端,服务端(可以做一些别的处理,比如鉴权和预置系统数据)再发起SSE请求GPT接口;在返回结果的过程中,GPT接口流式输出给服务端,服务端(可以做一些别的处理,比如处理好返回结果的格式,计算token成本)马上返回给前端,比如GPT接口流式输出了“你好”,服务端马上返回了“你好”给前端显示在网页上,再返回“,我是GPT”,服务端接着返回给前端显示在网页上。

这样的处理方式可以让结果尽快显示出来,也可以借由服务端的处理,保证安全和计算成本,以及处理好数据格式。

http://www.tj-hxxt.cn/news/91265.html

相关文章:

  • 有口碑的企业网站建设每天新闻早知道
  • 杏坛网站建设怎样做好竞价推广
  • 上海专业网站建设报价单班级优化大师怎么用
  • 深圳宝安住房和建设局网站官网nba最新交易汇总实时更新
  • 网站域没到期不能续费吗电子商务平台有哪些
  • 中小企业网络创业企业关键词优化推荐
  • 网站域名备案服务号中国站长站官网
  • 怎样做网站建设的程序搜索引擎优化搜索优化
  • 重庆招标建设信息网站北京最新疫情
  • 长春做网站公司长春seo公司全国各城市疫情搜索高峰进度
  • 做设计在哪个网站上找高清图app推广接单平台
  • 建立内部网站需要多少钱百度联盟个人怎么接广告
  • 色系网站哪里有成品视频直播软件推荐哪个好用
  • php做学校网站免费央视网新闻
  • 那个网站都有做莱的图片网络营销优化培训
  • 手机小说网站源码长沙本地推广联系电话
  • 网站开发后端做那些郑州网站运营专业乐云seo
  • 瀑布流分享网站源代码下载新闻稿撰写
  • c 网站购物车怎么做河北网站seo
  • 学院网站建设工作会议电脑优化大师哪个好
  • 郑州做网站好seo咨询顾问
  • 360网站 备案seo营销怎么做
  • 如何做局域网网站湘潭网络推广
  • 哪些网站可以做易拉宝网站百度收录批量查询
  • 求个免费网站18款禁用看奶app入口
  • 做任务推广网站seo搜索优化排名
  • 云砺信息科技做网站谷歌seo排名技巧
  • 网站logo在哪里修改北京网站优化技术
  • 深圳市建设网络有限公司网站yahoo搜索引擎
  • 光明新区住房和建设局 官方网站营销推广的主要方式