fastgpt、dify功能分析比较

2024-04-23 01:20

本文主要是介绍fastgpt、dify功能分析比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、dify、fastgpt是什么?

二、同场pk

1.大模型接入

2.chat(最简应用)

3.发布应用

4.知识库

5.workflow

6.其他

三、一些point记录

总结


前言

现在都开始AI应用开发,何谓AI应用,起码要和AI大模型结合,应用表现形式多是对话类,当然也可以是后台调用openapi的生成式。最典型的AI应用即最早一批的chat类应用,封装个Prompt实现助手类chat。

但是AI大模型能力再强,还是存在短板的。比如功能缺失,不能进行网页检索、不能直接查询天气、甚至不能进行代码运行。再比如,知识缺失,没有大模型训练截止日期之后的知识、没有私有知识。

这个时候就用到了function call(补充能力)、RAG(补充知识),然后新的一批AI应用就登场了,比纯chat类应用的功能更强水平更高。如dify、fastgpt、bisheng等。这类应用将模型接入、Prompt管理、知识库(rag)、插件(function call)、工作流等一条龙管理起来,通过能力整合让大模型可以发挥更大的作用,解决更复杂的场景问题。

今天,我们主要对dify、fastgpt做下分析比较


一、dify、fastgpt是什么?

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!

简单说,dify是AI应用开发平台,而fasfgpt是知识库问答系统,更加专注于RAG相关领域。不过相关功能基本都覆盖了。接下来我们具体每个环节看下。

二、同场pk

1.大模型接入

dify支持更多的大模型接入,包括oneapi、ollama以及一众大模型,而且直接在系统界面可以配置,操作相对友好、方便,而且提供系统默认模型,可以针对推理模型、embedding模型设置默认模型,这样后续每次需要调用大模型的时候,就省的每次调整。

但是在知识库这块,竟然不能修改embedding模型,有点不知why


fastgpt主要支持openai,不过可以通过设置代理地址,从而可以连接oneapi,从而间接支持其他大模型。但是要增加一个模型支持,需要修改config.json然后重新通过docker-compose重启容器,配置相对比较复杂,对于非技术人员来说不方便。

2.chat(最简应用)

dify:

操作路径:工作室——创建空白应用——聊天助手——基础编排,图标、名称、备注,创建

应用首页是编排,编写提示词,右侧可以直接调试和预览效果。

自动编排功能,则调用大模型,根据角色信息自动生成提示词

高级功能,还可以设置参数、关联知识库

知识库检索,可以设置为N选1召回、多路召回(包括了重排序)

还可以设置开场白、下一步问题建议、引用和归属、内容审查、标注回复


fastgpt:

操作路径:应用——简易模板——取个名字,确认创建

应用首页是简易配置,编写提示词,右侧可以直接调试预览。

高级功能,还可以设置参数、关联知识库、对话开场白、猜你想问

知识库检索,搜索模式可以设置语义检索、全文检索、混合检索,结果重排,还可以搜索过滤、问题优化(通过AI自动补全知识库缺失内容),这块功能相对更全面


小结论:

dify功能布局更加合理、舒适。fastgpt这块把提示词基础设置、发布等功能混一起,操作略混乱。

fastgpt在知识库检索方面功能更加全面

3.发布应用

二者均支持新的浏览器窗口预览、嵌入、api调用

dify默认生成一个预览地址,fastgpt可以新建多个预览地址,可以单独统计使用情况

api的话均可以生成多个密钥,这个也是行业标准操作

dify可以查看应用的消息书、活跃用户数、会话互动数、token输出速度、用户满意度、费用消耗等统计数据

4.知识库

dify:

操作路径:知识库——创建知识库——选择数据源(可选导入已有文本、同步自Notion内容、同步自Web站点--还没实现),常规选择导入已有文本——上传文件

分段式设置可选:自动分段与清洗、自定义(设置分隔符、分段处长度、分段重叠长度)

索引方式可选:高质量(使用设置的默认embedding模型)、经济(离线embedding内置模型,不需要消耗token,效果较差)

可选:QA分段模型(直接将文档形成问答对)

导入后可以修改,也可以新增单个分段


fastgpt:

操作路径:知识库——新建——选择索引模型、文件处理模型,接下来也是上传文件,分为了文本、表格,其中文本中已经实现了导入网页

训练模式:直接分段、问答拆分

处理方式:自动、自定义

导入后可以修改,也可以新增单个分段

召回测试


小结论:

dify的QA分段效果更好

fastgpt分段可以预览所有分段数据

整体上,感觉差别也不是很大。一开始以为dify的知识库分段不能编辑。

不过有个问题,dify的导入文本文档,数据量比较大的情况会报错,而且速度比较慢。而fastgpt没这个问题。

搜索测试

5.workflow

dify:

应用类型选择聊天助手,聊天助手编排方法可以选择“工作流编排”,即可直接创建工作流方式的聊天助手。(应用类型直接选择工作流,没有了选择编排方法的选项,这种情况创建的是非聊天助手应用)

主要节点:LLM、知识检索、直接回复、问题分类、http请求

操作:在当前节点点击+弹出节点选择页面,以便选择添加下一节点;点击当前节点,弹出当前节点详细信息设置界面


fastgpt:AI对话、知识库检索、指定回复、问题分类

选择知识库+对话引导、问题分类+知识库,这个时候生成的都是高级编排应用即工作流编排。不过这种情况进入的界面还是简单应用的界面,这个也是我觉得fastgpt操作相比dify差一些的地方,还需要点击左侧操作栏“高级编排”,才能进入到工作流编排界面。

主要节点:LLM、知识检索、直接回复、问题分类、http请求

操作:点击左上角+,可以给当前流程图添加节点,然后将上一节点和添加节点连接;点击当前节点即可编辑当前节点详细信息,因此节点块显示会比较大。再一个一个节点可能有多个连接点,有些是逻辑连接点、有些是数据连接点。


小结论

二者大的操作上差不多,可能fastgpt功能上更细一些,可以导入导出工作流配置;但是dify操作体验上更好。

实现度也差不多,我主要就是模拟知识库查询:首先用户问题分类,非知识库问题直接回复,知识库相关问题先调用知识库检索,再通过LLM整合,最后返回给用户。

6.其他

dify内置的应用还挺多的,都可以进行参考学习,另外也有agent的案例,不过这块也偏离了fastgpt的主要功能范畴。

内置工具(插件),dify也提供了不少内置工具,这块fastgpt欠缺,目前插件功能还是实验性功能

三、一些point记录

 1、fastgpt工作流中问题分类功能不起作用,后来加了fastgpt官方群,在常见FAQ中找到答案,需要设置对应模型属性"toolChoice": false

参考链接:私有部署常见问题 | FastGPTFastGPT 私有部署常见问题icon-default.png?t=N7T8https://doc.fastai.site/docs/development/faq/


总结

整体上dify功能更加全面,操作上更加友好舒服,拥有更多的内置功能,可以让用户更好的搭建自己的应用。

而fastgpt在知识库检索方面具有一定的优势,在工作流方面做的也不错。

这篇关于fastgpt、dify功能分析比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927406

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

研究生生涯中一些比较重要的网址

Mali GPU相关: 1.http://malideveloper.arm.com/resources/sdks/opengl-es-sdk-for-linux/ 2.http://malideveloper.arm.com/resources/tools/arm-development-studio-5/ 3.https://www.khronos.org/opengles/sdk/do

性能测试工具 wrk,ab,locust,Jmeter 压测结果比较

前言 在开发服务端软件时,经常需要进行性能测试,一般我采用手写性能测试代码的方式进行测试,那有什么现成的好的性能测试工具吗? 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 详见: 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 Jmeter性能测试 入门

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

超声波清洗机哪个品牌比较好一点的?清洁力强的超声波清洗机品牌

随着生活水平的不断提升和幸福感的增强,珠宝、饰品和眼镜等物品已成为许多家庭的常备之物。然而,这些贵重细小的物件易于积聚微尘与隐形细菌,长此以往可能悄悄影响家人的健康,毕竟细菌是肉眼难以察觉的隐患。超声波清洗机应运而生,它以高科技手段有效地解决了这一隐忧,深层清洁,守护家人免受微小污染物的潜在威胁。不过现在市面上超声波清洗机品牌挺多的,究竟有哪些品牌的超声波清洗机比较好一点呢?接下来就为大家带来四款

【JavaScript】版本号和日期时间的比较

JS使用 ‘>’ 运算符比较两个字符串大小时,会把字符串转换为ASCII码依次比较。 比较标准时间格式可以直接使用 ’ > ’ 比较; (2018-07-20格式)

俩个float数之间比较大小

需求:俩个标识金额的浮点数比较大小。 问题:相等无法成立。经过var_dump()打印,俩个浮点数数值 一样大。 解决:把标识金额的浮点数乘以100,抓换成整形,在做比较。即可使相等成立

UIFrameWork-基于UGUI-如何比较设计优劣

一、简化需求 1、从界面1打开界面2,屏蔽界面1事件响应。 2、关闭界面2,恢复界面1的事件响应。 二、暴力方案 1、对象1设置屏蔽自身事件响应,对象1通知对象2显示。 2、对象1设置恢复自身事件响应,对象2通知对象1显示。 三、UIFrameWork方案 1、对象1通知管理器对象要打开的界面信息(字符串),管理器对象通知对象1屏蔽事件响应,管理器通知对象2显示。 2、对象2通知管