FastGPT icon indicating copy to clipboard operation
FastGPT copied to clipboard

HTTP模块接入 知识库引用,返回的内容在对话中却不显示引用?

Open xkkjiayou opened this issue 2 years ago • 14 comments

例行检查

  • [ ] 我已确认目前没有类似 issue
  • [ ] 我已完整查看过项目 README,以及项目文档
  • [ ] 我使用了自己的 key,并确认我的 key 是可正常使用的
  • [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • [ ] 公有云版本
  • [ ] 私有部署版本, 具体版本号:

问题描述 HTTP模块接入 知识库引用,返回的内容在对话中却不显示引用? 已加入q、a、sourceName字段,也尝试加入过id、sourceId等字段均无效

image image

image

复现步骤

预期结果

相关截图

xkkjiayou avatar Apr 14 '24 17:04 xkkjiayou

试了一下这样 也不行。 版本4.7.1

image image image

xkkjiayou avatar Apr 14 '24 17:04 xkkjiayou

接入文本加工模块吧,然后用变量加上问题,直接把模块接入AI的问题, 知识库引用可能不兼容其他的格式 image

lijiajun1997 avatar Apr 14 '24 17:04 lijiajun1997

接入文本加工模块吧,然后用变量加上问题,直接把模块接入AI的问题, 知识库引用可能不兼容其他的格式 image

谢谢哥的回复,可是这样也就没有办法在 前端页面中 显示“引用”了吧?

xkkjiayou avatar Apr 14 '24 18:04 xkkjiayou

用http 做外部知识的补充,如何达到这样的效果,能够在页面上显示引用? image

xkkjiayou avatar Apr 14 '24 18:04 xkkjiayou

@nongmo677 我看这个老哥在https://github.com/labring/FastGPT/issues/1096 的截图是可行的

lijiajun1997 avatar Apr 14 '24 18:04 lijiajun1997

@nongmo677 我看这个老哥在#1096 的截图是可行的

是的,我也看到了他的截图。但是我复现不出来。我用同样的方法 试了很多遍,都显示不出来引用。

xkkjiayou avatar Apr 14 '24 18:04 xkkjiayou

@lijiajun1997 不知道咋回事 ,您可以看我上面的截图,我也用了 @nongmo677 的方法,但是就是出不来引用。辛苦了 谢谢

xkkjiayou avatar Apr 14 '24 18:04 xkkjiayou

我使用的版本是4.6.9,新版本里似乎通过了某种判断禁止了 具体请对比projects/app/src/components/ChatBox/ResponseTags.tsx不同版本的代码

nongmo677 avatar Apr 15 '24 04:04 nongmo677

我使用的版本是4.6.9,新版本里似乎通过了某种判断禁止了 具体请对比projects/app/src/components/ChatBox/ResponseTags.tsx不同版本的代码

确实4.6.9 就是可以的,4.7.1就不行了。- -感谢哥子 @nongmo677

xkkjiayou avatar Apr 15 '24 07:04 xkkjiayou

@c121914yu 哥,这个能支持一下嘛 修复一下

xkkjiayou avatar Apr 15 '24 07:04 xkkjiayou

这个实际上是这里决定的 https://github.com/labring/FastGPT/blob/c314312a57c46ff838f5f55266fcf2d6a7070bd0/projects/app/src/components/ChatBox/ResponseTags.tsx#L69 目前来看,只有知识库的组件存在quoteList这个属性,强行改代码似乎也不是很好,具体得看官方怎么解决

但是如果只是简单的需求,你可以尝试自己修改源码如下:

    const quoteList = flatResponse
      .filter((item) => item.moduleType === FlowNodeTypeEnum.datasetSearchNode || item.moduleType === FlowNodeTypeEnum.httpRequest468)
      .map((item) => item.httpResult?.quoteList ?? item.quoteList)
      .flat()
      .filter(Boolean) as SearchDataResponseItemType[];

假定我们返回的http数据里被quoteList包裹,http模块的返回值key使用进行获取quoteList

基于4.7.1版本,最终得到结果如下:

image

nongmo677 avatar Apr 15 '24 07:04 nongmo677

理解了,太感谢了,哥 你说的太细了,感谢。

这个实际上是这里决定的

https://github.com/labring/FastGPT/blob/c314312a57c46ff838f5f55266fcf2d6a7070bd0/projects/app/src/components/ChatBox/ResponseTags.tsx#L69

目前来看,只有知识库的组件存在quoteList这个属性,强行改代码似乎也不是很好,具体得看官方怎么解决 但是如果只是简单的需求,你可以尝试自己修改源码如下:

    const quoteList = flatResponse
      .filter((item) => item.moduleType === FlowNodeTypeEnum.datasetSearchNode || item.moduleType === FlowNodeTypeEnum.httpRequest468)
      .map((item) => item.httpResult?.quoteList ?? item.quoteList)
      .flat()
      .filter(Boolean) as SearchDataResponseItemType[];

假定我们返回的http数据里被quoteList包裹,http模块的返回值key使用进行获取quoteList

基于4.7.1版本,最终得到结果如下:

image

理解了,哥,你说的太细了,感谢,真心谢谢

xkkjiayou avatar Apr 15 '24 08:04 xkkjiayou

新改成只截取知识库搜索作为展示。 可以优化下,推测数据类型。

c121914yu avatar Apr 15 '24 14:04 c121914yu