admin 管理员组文章数量: 1184232
在你习惯和大模型进行问答交互时,是否考虑过一个问题?如果用大模型辅助论文写作,问答是否是最优交互方式?ChatGPT中用Canvas实现编码的动态交互插入,这种交互形式是否可以进一步推广到文档撰写?于是我在ragflow框架的接口基础上,实现了该功能。
1.文档撰写效果展示
多说无益,先看效果:
文档撰写模式特点:
-
通过内置的Markdown编辑器,可流畅编辑和预览
-
只会在文档中需要插入内容的位置生成模型的回答内容,而不会影响其它已有内容的部分
-
问大模型时,会同时传入文章所有内容,使生成内容和全文内容均有一定相关性
-
编辑完的markdown文件可以直接一键导出word进行下载
2.实现细节分析
实现该效果需要修改的文件较多,因此本文不进行一一罗列,代码开源地址:https://github/zstar1003/ragflow-plus
2.1 模型问答接口分析
在chat界面发送一条信息时,检测网络请求,可以看到其向后端发送了两条post请求和一条get请求。
第一条请求(post):v1/conversation/set
通过发送随机初始化对话conversation_id,加上查询得到的当前助理dialog_id,用来构建一个初始化信息窗口。
第二条请求(get):v1/conversation/list?+dialog_id
通过发送dialog_id,用来更新当前助理的对话历史状态。
第三条请求(post):v1/conversation/completion
携带dialog_id、conversation_id和真正的问题,发送到后端进行问答响应,模型响应的内容通过此接口进行流式响应。
2.2 模型问答源码分析
现在已经知道主要通过v1/conversation/completion这个接口实现模型问答,下面进行进一步分析,后端在得到该请求后,进行了哪些处理。
-
api\apps\conversation_app.py的completion接收到该请求后,先执行验证登陆状态和会话存在性,之后进一步解析,将问题传到下一步进行响应。 -
api\db\services\dialog_service.py的chat在接收到上一步的问题之后,通过rag\nlp\search.py的retrieval进行知识库检索,得到检索结果进一步合并到提示词内,通过api\db\services\llm_service.py的chat_streamly进行流式问答。 -
得到问答结果后,用
api\db\services\conv
版权声明:本文标题:【Ragflow】4.增加文档撰写功能,实现全新交互模式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1765774611a3413521.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论