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

西安网站维保公司天津做网站开发的

西安网站维保公司,天津做网站开发的,制作书签怎么做,wordpress性能优化对接国内讯飞星火模型,官方文档接口采用的是websocket跟国外chatgpt有些差异。 虽然官网给出一个简单demo通过while(true),websocket的receive()可以实现逐条接受并输出给前端,但是通用和灵活度不高。不能兼容现有项目框架的流式输出。故模仿…

对接国内讯飞星火模型,官方文档接口采用的是websocket跟国外chatgpt有些差异。

虽然官网给出一个简单demo通过while(true),websocket的receive()可以实现逐条接受并输出给前端,但是通用和灵活度不高。不能兼容现有项目框架的流式输出。故模仿openai,采用IteratorAggregate接口实现迭代器可遍历获取响应结果。

IteratorAggregate只有一个需要实现的方法getIterator()实现起来简单方便,基本代码如下

<?php
declare(strict_types=1);namespace App\Extends;use WebSocket\Client;
use IteratorAggregate;
use Generator;class XingHuoClient
{protected $client;public function client(){$apikey = '';//自己填写真实内容$apiSecret = '';//自己填写真实内容$addr = '';//自己填写真实内容$authUrl = $this->assembleAuthUrl("GET",$addr,$apikey,$apiSecret);//创建ws连接对象$this->client = new Client($authUrl);return $this;}public function send($uid, array $message){if($this->client){$data = $this->getBody($uid, $message);$this->client->send($data);$response = new XingResponseIterator($this->client);return $response;}else{throw new \Exception('星火客户端异常');}}//构造参数体protected function getBody($uid, $message){//...省略内容return $json_string;}//鉴权方法public function assembleAuthUrl($method, $addr, $apiKey, $apiSecret) {//...省略内容return $authAddr;}
}class XingResponseIterator implements IteratorAggregate {protected $client;public function __construct($client) {$this->client = $client;}public function getIterator(): Generator {if($this->client){while(true){$response = $this->client->receive();$resp = json_decode($response,true);$code = $resp["header"]["code"];if(0 == $code){$status = $resp["header"]["status"];if($status != 2){yield $resp['payload'];}else{yield $resp['payload'];break;}}else{//TODO:记录错误日志或报警break;}}}else{return [];}}
}

前提引入composer require textalk/websocket包用于socket请求星火接口,大部分内容还是官网提供的demo,主要是增加了XingResponseIterator 。

$stream = xinghuo()->client()->send($uid, $messages);//xinghuo()是封装的XingHuoClient对象
foreach($stream as $response){//处理数据,格式化数据,统计,记录等操作,输出内容到响应流,此处不做细讲
}

输出形式可以分流式输出,以openai为例参考:

https://github.com/orhanerday/open-ai

https://packagist.org/packages/hhxsv5/php-sse

前端浏览器使用的是EventSource对象。

可以使用chunk形式,存在客户端不支持eventSource对象的情况可以选择使用,参考我的另一篇文章

https://blog.csdn.net/jinborui2/article/details/132325824

以及一些nginx配置和php配置也在这篇文章里有所讲解,保证服务端及时输出内容到客户端。

http://www.15wanjia.com/news/173593.html

相关文章:

  • 雪域什么网站是做电影的网店推广总结
  • 网站建设实践收获天河区进一步
  • 怎么seo网站关键词优化潍坊网站建设尚荣
  • 楚雄州建设局网站如何修改WordPress账号
  • 桂林北站附近住宿东莞封了几个镇
  • 网站设计的标准达内学费价格表
  • 如何进入微网站静态网站怎么做
  • 怎么做二手房网站如何把自己电脑做网站服务器
  • 西宁圆井模板我自己做的网站网站建设需要大约多少钱
  • 上海专业做网站公司有哪些域名网查询
  • dart语言做的网站网站开发与建设的原则
  • 流量套餐网站网站建设与经营
  • 西安企业建站费用可信赖的响应式网站
  • php网站开发试卷深圳市住建局官网
  • 做企业展示网站需要多少钱WordPress降低搜索数据库
  • 做外贸在哪个网站找客户旅行社营业部管理办法
  • 服装品牌网站怎么做公司注册网上怎样注册
  • 城乡住房和城乡建设厅网站首页在ppt里面做网站链接
  • 如何做话费卡回收网站家乡介绍网页设计
  • 王璞网站开发实战答案直播教育网站建设
  • 网站开发可以用两种语言吗濮阳市城乡一体化示范区七星医院
  • 赤峰中国建设招标网站游戏网页游
  • 免费自助制作永久网站怎么用linux做网站服务器吗
  • 手机h5网站模板下载dream chaser wordpress
  • 东莞做网站那家好腾讯cdc用wordpress
  • dede装修网站模板公司模块化建设的意义
  • 做一电影网站怎么赚钱吗个人网站的版权怎么写
  • 行唐县网站建设公司frontpage可以做网站吗
  • 快速搭建网站后台成都培训机构哪家好
  • 华为网站建设费用创建网站需要哪些过程