快大半年的时间,一直在公司内部设计AIGC应用拖拽式生成的产品,无意中发现了Dify.ai的工作人员吐槽被大厂抄袭的新闻,瞬间被吸引;能够被大厂照搬的产品必定是不错的产品。Dify在年末时候还获得了思否颁发的《2023中国技术先锋年度榜单——中国新锐技术先锋企业》奖项,所以必须抱着“学习者”心态去研究一番。
以下信息大多来自于公开资料收集,更多可自行前往官网体验。
Dify定位于生成式 AI 应用创新引擎;Dify 涵盖了构建生成式 AI 原生应用所需的核心技术栈,开发者可以聚焦于创造应用的核心价值。其定位于新一代大型语言模型应用开发平台,轻松构建和运营生成式 AI 原生应用。基于任意大型语言模型构建企业级 Assistants API 和 GPTs。


1 产品主要截图
1.1 探索
1.1.1 发现——agent
发现类似应用市场,官方提供了预置的、多场景的模板直接使用,或基于该模板进行自定义。在定位上,类似于Openai的Agent,支持应用去调用第三方插件或使用Memory。

系统预置大量的模板可直接使用;也可点击“自定义”复制模板信息后进行调整修改。

添加至工作区便于后期直接使用;与租户收费有关。

点击不同的应用进入后,交互方式不同;下文中会提及官方提供了两种类型应用的创建。即使是同一种类型的应用,也会因设置的不同展现不同的前端页面Item组件。批量的逻辑在于提交CSV文件后批量生成和展示。
Dify 中提供了两种应用类型:文本生成型与对话型;官方不排除会后续新增其他类型范式的应用。
应用类型 | 文本生成型 | 对话型应用 |
WebApp 界面 | 表单+结果式 | 聊天式 |
WebAPI 端点 | completion-messages | chat-messages |
交互方式 | 一问一答 | 多轮对话 |
流式结果返回 | 支持 | 支持 |
上下文保存 | 当次 | 持续 |
用户输入表单 | 支持 | 支持 |
数据集与插件 | 支持 | 支持 |
AI 开场白 | 不支持 | 支持 |
情景举例 | 翻译、判断、索引 | 聊天或一切 |
1.1.2 智聊 ——GPTs
Dify提供了类似Openai的GPTs的功能,支持快速的使用和搭建聊天机器人,支持插件、知识库/上下文的选择

支持选择多种LLM和插件完成聊天机器人的创建

聊天界面中展示推理过程和引用内容,和主流交互基本一致

上下文信息中支持知识库的引入,支持多选关联
1.2 应用
如上文描述,官方提供了两种应用类型:chat类型和文本生成类型。后续根据多模态或图片、音频等可能还有其他的类型应用。

1.2.1 chatbot/GPTs

官方提供了针对开发者的各种统计监控数据;同时,也支持chat工具以js等方式在其他系统中打开可用,也支持接口方式调用。
其整体对可用状态的控制比较细致,能够较好的支撑业务发展;比如切入网站右下角作为客户入口、嵌入企微中作为自建应用等均可。

提供多种的工具,最核心的还是Prompt的模板设置;支持自定义变量的嵌入,同时也支持自动编排。
自动编排是用户描述该应用针对的群体和使用场景,由LLM协助生成提示词模板和自定义变量的过程。验证中该功能偶现失效的情况,但依然比较好用或亮眼,能够较好帮助对Prompt不熟悉的用户使用。
同时提供专业的Prompt的编排能力,类似Azure的Playground一样支持System、user、Assistants分角色上下文。

API部分因展示问题未展示,旨在支持外部调用。
由于应用是自己设计的,故系统支持日志信息的查看,便于后期分析和总结。过往的聊天或生成内容可进行标注用于微调等,故在开启标注后支持一问一答的数据标注。
1.2.2 文本生成应用
整个创建流程类似于chatbot,也分为4步。



1.2.3 一些高级设置
1.2.3.1 通过嵌入方式在更多场景中使用
一个应用创建完毕后,仅仅在单个系统内部使用肯定是无法满足业务需要的;这一点和我们目前实现的方式差不多,通过js等方式支持嵌入其他页面中来使用。

1.2.3.2 自动编排
系统支持LLM来完成Prompt的设计和编排,这一点还是挺令人惊奇的。下面以一个例子来进行说明:

通过“用户群体”和“场景描述”,完成对LLM的需求输入

LLM自动生成变量和提示词模板,及其欢迎语
在这个过程中,我也通过GPT-4来尝试还原该能力,大致如下;LLM的确可以很好的输出变量信息和提示词模板。但在体验过程中,也会发现该功能有时候不太稳定。

1.2.3.2 上下文召回设置
系统支持了两类的召回方式:N选1召回、多路召回。针对该部分的衔接详见另一篇文章.


1.2.3.3 聊天增强的相关设置




这部分的高级设置通过引导基本上可以了解其的使用方法,这里就不再赘述。
1.2.3.4 内容审查
由于LLM在产生内容时候具有一定的随机性,可能会影响到企业品牌、政策法律等问题,所以通过内容审查机制将有效的预防风险。
Dify提供了三种内容审查方式:
敏感词字典审查

在输入或输出中涉及敏感词的时候,系统给予提醒反馈。
敏感词审查 Moderation 扩展

官方自定义接口,通过API调用实现,支持丰富、强大的敏感词审查
1.2.3.5 标注回复设置
注回复功能通过人工编辑标注为应用提供了可定制的高质量问答回复能力;即在合适的时候优先用标注信息(FAQ)来回答,而不使用LLM处理。
适用情景:
- 特定领域的定制化回答:在企业、政府等客服或知识库问答情景时,对于某些特定问题,服务提供方希望确保系统以明确的结果来回答问题,因此需要对在特定问题上定制化输出结果。比如定制某些问题的“标准答案”或某些问题“不可回答”。
- POC 或 DEMO 产品快速调优:在快速搭建原型产品,通过标注回复实现的定制化回答可以高效提升问答结果的生成预期,提升客户满意度。


- 在开启标注回复功能之后,你可以对 LLM 对话回复内容进行标注,你可以将 LLM 回复的高质量答案直接添加为一条标注,也可以根据自己的需求编辑一条高质量答案,这些编辑的标注内容会被持久化保存;
- 当用户再次提问相似的问题时,会将问题向量化并查询中与之相似的标注问题;
- 如果找到匹配项,则直接返回标注中与问题相对应的答案,不再传递至 LLM 或 RAG 过程进行回复;
- 如果没有找到匹配项,则问题继续常规流程(传递至 LLM 或 RAG);
- 关闭标注回复功能后,系统将一直不再继续从标注内匹配回复。
1.3 知识库
详见姊妹篇
2 收费套餐
SaaS产品必定要收费,收费细节如下。

相关内容的传送门: