labring / FastGPT

FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration.
https://tryfastgpt.ai
Other
18.18k stars 4.82k forks source link

希望HTTP模块支持chatgpt流式返回 #1062

Closed shixud closed 1 week ago

shixud commented 7 months ago

例行检查

功能描述 希望HTTP模块支持chatgpt流式返回,通过调用http模块,能和chat方式一样,流式展示结果。 应用场景 目前的应用场景是通过HTTP调用外部API来使用function_call。比如预约实验室功能,根据预约实验室的必填参数让模型引导用户填写完成对应的参数,引导过程中AI的回复是通过API返回的,希望支持流式响应,这样效果会更好一些。 相关示例 这个视频大概演示需要的效果,希望HTTP模块也支持流式返回。 https://github.com/labring/FastGPT/assets/28303376/451bfacf-8001-4e9d-92ba-c6b9b5826e71

c121914yu commented 7 months ago

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

shixud commented 7 months ago

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

大佬,你觉得把gpt输出的json对象放在配置文件里面怎么样,比如Agpt输出的json对象弄成一个配置,Bgpt弄成另外的一个配置,不同用户需要使用的话去配置文件配置不同的gpt输出的格式对象,使用http模块的时候,如果需要流输出,选择对应的gpt输出对象格式,http处理响应的那里可以根据选择的gpt模型来解析数据,再填充呢?

c121914yu commented 7 months ago

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

大佬,你觉得把gpt输出的json对象放在配置文件里面怎么样,比如Agpt输出的json对象弄成一个配置,Bgpt弄成另外的一个配置,不同用户需要使用的话去配置文件配置不同的gpt输出的格式对象,使用http模块的时候,如果需要流输出,选择对应的gpt输出对象格式,http处理响应的那里可以根据选择的gpt模型来解析数据,再填充呢?

也不是这个意思。如果搞这个的话,还不如放 oneapi 搞,让它更好兼容不同格式。

我说的只支持 gpt 流,意思是。如果在 http 模块里单独加一个配置的话,会显得模块没这么纯。 如果要实现的话,我感觉可以单独加个系统插件,专门用于这个功能。

shixud commented 7 months ago

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

大佬,你觉得把gpt输出的json对象放在配置文件里面怎么样,比如Agpt输出的json对象弄成一个配置,Bgpt弄成另外的一个配置,不同用户需要使用的话去配置文件配置不同的gpt输出的格式对象,使用http模块的时候,如果需要流输出,选择对应的gpt输出对象格式,http处理响应的那里可以根据选择的gpt模型来解析数据,再填充呢?

也不是这个意思。如果搞这个的话,还不如放 oneapi 搞,让它更好兼容不同格式。

我说的只支持 gpt 流,意思是。如果在 http 模块里单独加一个配置的话,会显得模块没这么纯。 如果要实现的话,我感觉可以单独加个系统插件,专门用于这个功能。

抱歉,我理解错了。我这边还有个关于function_call的问题想向大佬请教一下,上面这个视频演示的实验室预约引导用户填写必要参数后就可以调用函数了,但有个问题是不清除上下文的话,再次输入 实验室预约 模型会根据上下文信息直接提取出信息调用函数,这种不符合常理,我这边想法是函数回调完成后需要清除上下文信息,以便用户下次输入实验室预约又可以引导用户填写必要信息再次回调函数,大佬有啥简单的方法吗?是否可以加个清除上下文插件,http模块调用完成后根据响应条件来清除上下文信息。

c121914yu commented 7 months ago

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

大佬,你觉得把gpt输出的json对象放在配置文件里面怎么样,比如Agpt输出的json对象弄成一个配置,Bgpt弄成另外的一个配置,不同用户需要使用的话去配置文件配置不同的gpt输出的格式对象,使用http模块的时候,如果需要流输出,选择对应的gpt输出对象格式,http处理响应的那里可以根据选择的gpt模型来解析数据,再填充呢?

也不是这个意思。如果搞这个的话,还不如放 oneapi 搞,让它更好兼容不同格式。 我说的只支持 gpt 流,意思是。如果在 http 模块里单独加一个配置的话,会显得模块没这么纯。 如果要实现的话,我感觉可以单独加个系统插件,专门用于这个功能。

抱歉,我理解错了。我这边还有个关于function_call的问题想向大佬请教一下,上面这个视频演示的实验室预约引导用户填写必要参数后就可以调用函数了,但有个问题是不清除上下文的话,再次输入 实验室预约 模型会根据上下文信息直接提取出信息调用函数,这种不符合常理,我这边想法是函数回调完成后需要清除上下文信息,以便用户下次输入实验室预约又可以引导用户填写必要信息再次回调函数,大佬有啥简单的方法吗?是否可以加个清除上下文插件,http模块调用完成后根据响应条件来清除上下文信息。

我感觉这种,,可以设置,预约成功后,,直接整个对话框结束了好一点。(无法再继续发消息)

kingdoom1 commented 4 months ago

确实这个功能挺实用的,http模块里面的都是自己写的,现在只能取json里面的内容,不知道后面有没有这个计划呢?

kingdoom1 commented 4 months ago

@c121914yu

有想过,,但是感觉参数太多😂如果只支持 gpt 流输出,感觉又差点意思。

大佬,你觉得把gpt输出的json对象放在配置文件里面怎么样,比如Agpt输出的json对象弄成一个配置,Bgpt弄成另外的一个配置,不同用户需要使用的话去配置文件配置不同的gpt输出的格式对象,使用http模块的时候,如果需要流输出,选择对应的gpt输出对象格式,http处理响应的那里可以根据选择的gpt模型来解析数据,再填充呢?

也不是这个意思。如果搞这个的话,还不如放 oneapi 搞,让它更好兼容不同格式。

我说的只支持 gpt 流,意思是。如果在 http 模块里单独加一个配置的话,会显得模块没这么纯。 如果要实现的话,我感觉可以单独加个系统插件,专门用于这个功能。

大佬如果用 oneapi 搞,应该怎么设置,我设置了一个自定义的,用curl能看到返回,和openai格式一致,但是界面显示参数为空,服务器也报错[Error] 2024-07-11 05:38:27 sse error: core.chat.Chat API is error or undefined { message: 'core.chat.Chat API is error or undefined', stack: undefined }