chatchat知识库对话接口修改成sse流式输出方案

在chatchat结合chatGLM搭建的私有化知识库中,使用原生的webUI画面是可以流式输出的,而直接调用api接口,不管stream为true还是false,都是阻塞式输出的,也就是一口气返回给接口。

我们的解决方案是修改StreamingResponse方式返回,变更为EventSourceResponse。以下是详细步骤:

1、 增加sse依赖,Python -m pip install sse-starlette

2、找到工程中的/server/chat/knowledge_base_chat.py文件,将其拷贝一份,命名为:knowledge_base_chat_sse.py

chatchat知识库对话接口修改成sse流式输出方案_第1张图片
3、 增加依赖:from sse_starlette.sse import EventSourceResponse,并且修改文件内方法名,和文件明对应上。
chatchat知识库对话接口修改成sse流式输出方案_第2张图片

4、把方法返回值类型StreamingResponse改为EventSourceResponse
chatchat知识库对话接口修改成sse流式输出方案_第3张图片
注意python的换行问题。

5、修改init文件:
chatchat知识库对话接口修改成sse流式输出方案_第4张图片

6、修改aip.py文件:
chatchat知识库对话接口修改成sse流式输出方案_第5张图片

chatchat知识库对话接口修改成sse流式输出方案_第6张图片

7、最后
Conda中增加环境变量:

conda env config vars set openai_api_key=""
conda env config vars list

然后重载一下环境:

conda activate LangChain-Chatchat-0.2.3

启动即可:

python startup.py –a 或者 nohup python startup.py -a

如果报openai错,将modal中配置文件的GPT3.5的key改为””,如下图:

chatchat知识库对话接口修改成sse流式输出方案_第7张图片

然后在启动就行了。

备注,常用命令:

conda activate LangChain-Chatchat-0. 2.3  //进入指定conda空间
nohup python startup.py -a  //后台启动
 ps -ef |grep -i python //检索进程
bash shutdown_all.sh  //停止chatchat

你可能感兴趣的:(AIGC人工智能,生成式人工智能对接,python)