如何用Python返回SSE数据
最近在使用python调用gpt的sse接口并通过sse的方式返回给自己的前端。遇到了几个问题,简单记录下,也没什么代码量,但也用了大半天的时间才搞定。
- python如何返回sse
- 为什么我返回的sse中的换行符总是会丢失
最近在使用python调用gpt的sse接口并通过sse的方式返回给自己的前端。遇到了几个问题,简单记录下,也没什么代码量,但也用了大半天的时间才搞定。
我们都知道ChatGPT的接口支持流式SSE的方式进行数据返回,而前端浏览器默认提供了EventSource去接收SSE,但是问题在于,默认的EventSource只支持Get请求,切不支持任何自定义的头部,而ChatGPT的接口就是POST请求,且需要在头部携带token,于是使用了一个微软的库,我们来解释一下它的用法,源码以及从协议角度简单说一下它的源码可以运行的基础,即它的源码为什么可以工作
最近对chatgpt能够进行流式请求返回的协议产生了一点好奇,于是就去了解了一下,一开始我以为是HTTP2,或者是WS协议,后来发现都不是,而是一种叫做SSE(Server-Sent Events)的协议。
最近开始重新系统学习计算机图形学的知识,于是目光放到了GAMES101,一边看,一边做,一边总结吧。这次总结下线性代数的基础知识,以及游戏中是如何做模型变换的。最后完成一下作业1.
之前做了个关系图谱的需求,因为导出png等图片放大会失真,所以希望导出为矢量图。但是G6自带的导出图谱功能再Canvas模式下无法导出为SVG,而SVG模式又有很多特性不支持,所以就想办法能不能把Canvas导出为SVG了。
贪心算法是比较常见的一种算法,贪心的本质是选择每一阶段的局部最优,从而达到全局最优。而模拟退火算法比较常见于人工智能当中。
这两种算法之所以放在一起考虑是因为,模拟退火算法像是加强版的贪心算法。
如果一个问题的每一步的局部最优解无法得到全局最优解,我们常规前后端程序员的算法思维想到的是动态规划。
但是对于AI开发来讲,参数可能是上亿级别的,根本没有办法动态规划,这个时候就可以尝试用模拟退火算法以一定概率跳出这个局部,去整体中找到一个更优的答案,但是,其实这种算法也不像常规算法一样,会得到一个必然的结果。
本文把两种算法放在一起进行总结和比较,看看他们分别适用于什么情况,以及如何使用。
Tailwind这个CSS的框架不算是什么新东西了,不过也一直没有去研究过,最近有需要就看了下,看起来还是比较简单的。
这东西看起来就是个新的DSL之类的,提供了许多常用且内置的css样式,封装成语法,然后提供一个PostCSS插件,把封装好的语法又处理回普通的css。
我们需要做的事就是安装Tailwind的PostCSS插件,然后使用他封装好的DSL即可。
作为一个程序员,我们平时关注的关于管理方面的知识,最初可能是设计模式,管理的是某一个需求的复杂度,慢慢的,我们会开始关注领域划分,DDD,业务建模等,这些管理的是系统的复杂度,再后来,事情的复杂度逐渐进化到我们个人无法处理了,我们就需要团队合作了,这里管理的就是项目复杂度。
其实这三者是自始至终都会存在且相互关联的,很多理念也很相似,只是我们需要逐渐的参与实际工作才会一步步认知到这种复杂度。
关于设计模式和领域驱动设计,我之前的博客都有总结过一些我看过的书和具体的实践,这次结合亲身的体验与《知行》这本书,总结一下项目管理中的一些方法论。