deer-flow自定义DeepResearch流程实践经历
最近想做一个DeepResearch的多智能体系统,一方面是对MAS感兴趣,一方面就是想自己去实现了解一下DeepResearch的流程,不然总是浮于表面。
整体用下来的感受,字节的大佬还是很强的,整个项目的架构,构思,我觉得都是很值得学习的。有的时候以为自己懂了,但是实际还是离真实的知识差的远,所以还是一定要多花时间时间。
简单讲一讲遇到的一些坑吧。
一,第一个大坑就是报告生成的关键引用部分,会有很多的幻觉。基本全部是幻觉产生的链接。
因为research_team中的observations里面是纯字符串,一起导入到reporter里面,然后交由大模型总结,最终由reporter_node统一生成返回。字符串的内容太多,会导致URL被模型忽略。
如何解决:
1,将传入obeservations里面数据结构化,结构化成title,url,content等内容,让大模型能够清楚的知道从哪里得到知识,知识对应的URL。
2,强化优化提示词,reporter的提示词还是有待加强,尤其是url的引用这一块。
3,tavily检索问题,这个就建议去看一看tavily的文档了,tavily提供了打分功能和NLP智能总结功能等等。原本的tavily检索是来者不拒的,加上一个评估和验证逻辑。高分可访问的链接才会传入到observations里面,保证信息来源质量。也可以用其他搜索引擎,searxng等等。有一个一定要注意,raw_content这个字段建议设置成false,这样的话就会返回总结内容,不然就会返回网页中的所有内容,容易超出模型的上下文。
4,最重要的一点,不要舍不得key,用一些能力比较差,规模比较小的模型,生成的报告质量也会很差,工具调用也会有问题,直接上最好的模型。
二,图片处理,openai要的参数是image_url,但是大模型有时候会直接返回type=image,导致无法正确处理图片。
三,爬虫工具,在html为空,或者有异常的时候,容易报错并且中断。要加一个处理函数逻辑。
四,tavily检索返回结果个数,这个不光要在后端改,一定要在前端改,前端的数据会覆盖后端的,所以我当时改了很久都没有用。
五,如何链接dify知识库,直接去dify的知识库里面找知识库的api文档,直接调用知识库的api即可。
六,一个提醒,可以将后端的日志专门写到文件里面,以便于阅读,不然终端会截断日志。
其他的我不记得了,后面想起来再继续写吧,如果有小伙伴对这些比较感兴趣的,可以在我评论区多多交流。