@ChefIsAwesome 每收 N 个字审查,也不是不行,体验也还能接受,但是检测效果会有影响的,举个例子: 假设“科学上网”这四个字是关键字,假如我服务端设定每接收 5 个字检测一次,那可能发生我接收到“xx 科学上”,这个没违规,下发给客户端,接着接收到“网 xxxx”,这个也没违规,下发给客户端。 不知道这个概率高不高,高的话,检测效果就太差了
本地敏感词库,可以设置每次检测最近的 10 个字,在敏感词库里的就打 * 号隐藏 全部返回完之后再跑一次在线 API (阿里什么的之类的),获得最终屏蔽结果 本地的可以超严格,防止露馅,最后以 api 为准显示
从 chatgpt 流式获取,定期审核,模拟打字机效果流式发送给客户端 (1) 收到标点符号的 data 数据包或者累计 20 个 data 数据包,就去做一次内容审核(从会话头部到截断位置的内容)。一次回答会做多次内容审核的。 (2) 审核后的回复内容(data 数据包)写入缓冲区 (3) 每隔 20ms 从缓冲区取一个 data 数据包发给客户端 (模拟打字机效果)