ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">知识库几乎是AI创作的中心,能解决很多问题,例如AI幻觉(按着知识库的内容来输出,不会乱写)ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">在我教培业务中,搭建了一个内容知识库。根据这个知识库去生产小红书、公众号内容,能确保准确性,进而确保我账号人设的专业度。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">但我发现,很少人在用知识库,大家的一个痛点就是把内容加进「知识库」这件事比较费劲。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">虽然腾讯的IMA知识库能让大家把公众号文章等内容快速存到知识库里,但受限于知识库的能力、模型和工作流问题,这种形式只能日常问答一下,无法赋能业务。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;"> ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">今天就跟大家分享一下,dify如何用爬虫抓取网络内容后写入知识库中。ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;"> ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;"> ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">我的业务是数学思维的教培,经常需要制作优秀的小红书笔记、公众号内容来吸引客户。但纯AI生成的内容幻觉严重,而且「不落地」ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">所以我打算新建一个「数学思维知识库」,把小红书、公众号上优秀的内容都存进去,然后再让AI基于知识库来做内容的生产,效率和效果都能有保证。
以公众号的内容为例,假设我看到一个不错的文章,怎么把它加入到我Dify知识库呢? 前期准备1. 创建知识库如图,创建一个用于装内容的知识库。这里,我们创建一个空的即可。 此时,要先从网址中,找到这个知识库id在datesets和documents中间的就是了。 2. 新建API密钥目前,Dify暂没有可以直接写入数据库的插件,所以我们是通过HTTP请求来解决的。 而走http就需要密钥。按下图新建一个。 注意⚠️ 这个密钥是可以操作所有知识库的
接着在文档中,找到通过文本创建文档,这里的请求规则就是后面我们需要编写的。
3. 安装Firecrawl因为我们是要爬网页上的内容,所以需要一个爬虫工具。 这里选择用Firecrawl,可以直接在插件市场里找到安装。 然后根据提示到官网注册一个账号,拿到API Key ⚠️注意:Firecrawl实际只是有一定的免费额度。
以上准备工作完成,我们就可以开发工作流了。 老规矩,一步一步来,先做一个简单的,再做一个复杂的。
青铜:抓取单页面存入知识库以下就是完整的工作流: 逻辑是从用户的输入内容中提取出网址,接着用Firecrawl去读取页面内容,再用AI提炼出标题和正文,最后存入知识库。
如图,很简单就不多说了。
Firecrawl是有多个工具可以选 但这里我们选单页面抓取就好了 设置返回的结果是markdown格式 仅抓取主要内容为True,就是把无关的页头页尾之类的删掉 其中,关键的地方在于「请求头」 要知道,所有网站都有反爬措施,尤其是公众号文章,正常去抓是会识别成机器人,返回错误结果的,如下图: 解决方案就是加个请求头,伪装成正常的浏览器: {'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/91.0.4472.124Safari/537.36'}这样就能正确把文章内容抓下来了。
目的是从返回的内容中把标题和正文识别出来。 注意在提示词中要让AI确保还原完整的内容,不要去做任何改动。
因为我们要走HTTP请求,对于内容的格式是特别敏感的,有点换行符之类的就会报错了。 这里我们直接插入一段代码,把里面的几乎所有特殊符号都做处理。 参考: functionmain({arg1}) { return{ content: arg1.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\n/g,'\\n').replace(/\r/g,'\\r').replace(/\t/g,'\\t') } }
有了内容后,就可以新建HTTP请求节点。 这里有个小技巧,就是把前面API文档里的cURL示例,复制过来,能自动填入 然后点上面的「鉴权API-Key」 按下图把知识库的密钥加进去。 还有个要点:Headers里一定要加Content-Type,要不然会无法识别正确的格式。
至此,就完成工作流了。 测试一下:把网址放进去。
OK,存进去了 先不着急用这个知识库,今天这内容,解决的是「存入」的问题,下次来解决「读取」怎么用的问题。
白银:批量存多篇内容假如我现在有一批内容,要存进去,怎么搞? 这样一篇一篇的加,明显效率很低。 思路是: - 2.用「迭代」节点遍历网址,循环调用第一步的“读取网页-存入知识库”
工作流长这样:
ok,先解决第一步。 饼干哥哥之前用AI编程Cursor开发了一个浏览器插件,功能是把打开的网址采集下来,很方便 感兴趣可以留言,我出一期具体怎么做的教程 得到: 标题 mp_url 提高数学成绩的学习方法,比补课效果强100倍(深度长文) https://mp.weixin.qq.com/s/NuFfXophlFASb2B6dpD17Q 学好数学,最重要的是抓住这个“根”!(附方法指引) https://mp.weixin.qq.com/s/uz50tLQpHisNeYT9J-naHQ 提高数学成绩的超常规学习方法(深度好文) https://mp.weixin.qq.com/s/vMqdQp0LWCO-OXgRRdJ7PQ 提高数学成绩的方法(建议永久保存) https://mp.weixin.qq.com/s/SVSXmGDfR0JCDXq8Za9pvw 数学开窍的第一步,是规则的开窍 https://mp.weixin.qq.com/s/FDIOBPZA7RMqwXeIMVdyQQ 哈罗学校讲座逐字稿:怎样培养孩子的数学思维? https://mp.weixin.qq.com/s/k_Dbkcf2fd15ItnlURiJtQ
接下来就是对工作流做修改
首先是「参数提取器」,把提取参数改成 数组类型Array 同时修改「指令」要求AI输出的是数组 测试一下节点能正常输出:
把原先的流程,一模一样的在迭代里重新新建(吐槽:怎么不能直接复制进去呢?麻烦) 要点:注意迭代输入的一定是Array的数组类型,这样才能逐个遍历去跑。
我们一次性把多篇地址扔进去,就可以看到「迭代」里面已经在跑了: 没毛病。
黄金:自动爬虫除了手动去加之外,还有没有更极致的方法呢? 我想是有的,两个思路: 1个是借助AI「深度搜索」的能力,把相关内容,先搜索一遍,再整理到知识库中,这样就能快速新建多个主题的知识库内容。 (计划下一篇做用Dify做深度搜索工作流的内容,感兴趣的同学可以三连支持!!) 另一个是借助Agent 的能力,给一个网站AI之后,让它判断这个网站有什么跟主题相关的内容,然后把内容抓下来存进数据库。 后者就有点像是Browser-use的能力,可以自主浏览网站,这样是不是连小红书也能爬进去知识库了?
今天的内容就是给后面这两种方式打底的:这个工作流可以打包成工具供给它们调用。 |