PHP怎么在AI模型响应后流式输出
PHP怎么在AI模型响应后流式输出?
目前市面上的AI模型基本上都是流式输出的,这样做的好处:
1. 好看;
2. 模型每秒输出的token受限,如果内容过长,不可能一下子全部输出,所以是以流的形式返回。
那么如果用PHP我们对接了AI模型,也想以流的形式返回给前端怎么办呢?
Home of Little Jelly
PHP怎么在AI模型响应后流式输出?
目前市面上的AI模型基本上都是流式输出的,这样做的好处:
1. 好看;
2. 模型每秒输出的token受限,如果内容过长,不可能一下子全部输出,所以是以流的形式返回。
那么如果用PHP我们对接了AI模型,也想以流的形式返回给前端怎么办呢?
PHP中的数组,在使用`unset`后,其结构会发生变化,从数组结构变为了对象结构。
这将导致在数量返回给前端时,前端收到的是`{}`而不是`[]`,不能正常的循环。
这是个很隐蔽的问题,不容易被发现。
编译安装PHP的企业微信扩展,最好使用CentOS7.9,不支持Windows和macOS,Ubuntu的兼容性也有问题。
由于扩展的兼容性问题,需要禁用intl扩展,在编译之前需要先重新编译安装PHP并禁用intl,可参考 [宝塔面板自定义参数编译安装PHP](https://www.pimspeak.com/bt-compile-php-self-config-params.html)。
宝塔面板虽然可以很方便地安装PHP各个版本,但参数都是预先定义好的,自己不能改。
如果要自定义参数编译安装PHP,要费一点周折。
比如我最近遇到一个问题,编译安装企业微信的扩展跟PHP7.4自带的扩展intl冲突,只能先把原来的PHP版本卸载掉,再重新编译,直接在宝塔面板上操作是不行的,没有定义参数的地方。
总结了下宝塔面板的常用的一引起路径和命令,当外网登录不进面板只能通过内网ssh时,很有用。
PHP使用ZipArchive解压正常的zip文件可能会失败,这个问题很诡异。
部分代码:
智谱AI开放平台的SDK只提供了Python和Java版,其它语言比如PHP只能使用HTTP的方式去调用,这就需要自己去实现鉴权和请求的代码。
自己用PHP写了个小demo,先生成jwt token,再拿它发送会话请求。
PHP在使用PhpSpreadsheet读取Excel时,可能会遇到读取到的日期变成了数字的问题。
比如在Excel中是2020-03-02,读取后可能就是一个4千多的数字,这个时候就需要用函数来转一下,示例代码如下:
今天在使用钉钉的OpenAPI创建订阅日程时报错了:cURL error 60: SSL certificate problem: unable to get local issuer certificate,有可能是因为使用了较老的SDK,接的别人的二开,不想再折腾新SDK了,看怎么样能把这个错误给解决了。
解决办法有两种:
最近在使用EasySwoole处理异步任务(Task)时遇到了一个问题。
有一个Task,原本是在`EasySwooleEvent.php`中注册Crontab并异步调用这个Task运行的,好像没啥问题。但当把这个Task改为在Http控制器中执行时,问题出现了。
这个Task的运行时长通常在2分钟左右,在Crontab中能正常运行,而通过Http控制器去请求同步执行时,基本上都是在8秒左右就结束了,并且返回一个`-7`的错误代码,EasySwoole官网文档中说这个错误是因为超时。