Dify 是一个用于构建 AI 应用程序的开源平台。Dify融合了后端即服务(Backend as Service)和LLMOps理念。它支持多种大型语言模型,如Claude3、OpenAI等,并与多个模型供应商合作,确保开发者能根据需求选择最适合的模型。Dify通过提供强大的数据集管理功能、可视化的Prompt编排以及应用运营工具,大大降低了AI应用开发的复杂度。
Dify
一、Dify
什么是Dify(Define & Modify)?Dify是一个开源的大语言模型(LLM)应用开发平台,旨在简化和加速生成式AI应用的创建和部署。该平台结合了后端即服务(Backend as Service, BaaS)和LLMOps的理念,为开发者提供了一个用户友好的界面和一系列强大的工具,使他们能够快速搭建生产级的AI应用。
Dify
- 低代码/无代码开发:Dify通过可视化的方式允许开发者轻松定义Prompt、上下文和插件等,无需深入底层技术细节。
- 模块化设计:Dify采用模块化的设计,每个模块都有清晰的功能和接口,开发者可以根据需求选择性地使用这些模块来构建自己的AI应用。
- 丰富的功能组件:平台提供了包括AI工作流、RAG管道、Agent、模型管理等丰富功能组件,帮助开发者从原型到生产的全过程。
- 支持多种大语言模型:Dify已支持主流的模型,开发者能够根据自己的需求选择最适合的模型来构建AI应用。
Dify提供四种基于LLM构建的应用程序,可以针对不同的应用场景和需求进行优化和定制。
Dify
- 聊天助手(Chat Assistant):
- 基于LLM的对话助手,能够与用户进行自然语言交互,理解用户的问题、请求或指令,并给出相应的回答或执行相应的操作。
- 文本生成(Text Generation):
- 专注于各种文本生成任务,如撰写故事、新闻报道、文案、诗歌等创意写作,以及文本分类、翻译等任务。
- Agent(智能代理):
- 这种助手不仅具备对话能力,还具备任务分解、推理、工具调用等高级能力。它能够理解复杂的指令,将任务分解为多个子任务,并调用相应的工具或API来完成这些子任务。
- 工作流程(Workflow):
- 根据用户定义的流程编排,灵活地组织和控制LLM的工作流程。用户可以自定义一系列的操作步骤和逻辑判断,让LLM按照预定的流程执行任务。
二、Dify + RAG
如何将文档上传到Dify知识库构建RAG?将文档上传到Dify知识库的过程涉及多个步骤,从文件选择、预处理、索引模式选择到检索设置,旨在构建一个高效、智能的知识检索系统。
1. 创建知识库:Dify主导航栏中的“知识”,在此页面可以看到已有的知识库。
- 创建新知识库:拖放或选择要上传的文件,支持批量上传,但数量受订阅计划限制。
- 空知识库选项:如果尚未准备文档,可选择创建空知识库。
- 外部数据源:使用外部数据源(如Notion或网站同步)时,知识库类型将固定,建议为每个数据源创建单独知识库。
2. 文本预处理与清理:内容上传到知识库之后,需要进行分块和数据清洗,这个阶段可以理解为内容的预处理和结构化。
- 自动模式:Dify自动分割和清理内容,简化文档准备流程。
- 自定义模式:对于需要更精细控制的情况,可选择自定义模式进行手动调整。
3. 索引模式:根据应用场景选择合适的索引模式,如高质量模式、经济模式或问答模式。
- 高质量模式:利用Embedding模型将文本转换为数值向量,支持向量检索、全文检索和混合检索。
- 经济模式:采用离线向量引擎和关键字索引,虽然准确率有所降低,但省去了额外的 token 消耗和相关成本。
- 问答模式:系统会进行文本分词,并通过摘要的方式,为每段生成QA问答对。
4. 检索设置:
(1)在高质量索引模式下,Dify 提供三种检索设置:向量搜索、全文搜索、混合搜索
- 向量搜索:将查询向量化,计算与知识库中文本向量的距离,识别最接近的文本块。
- 全文搜索:基于关键字匹配进行搜索。
- 混合搜索:结合向量搜索和全文搜索的优势。
- Rerank模型:对检索结果进行语义重排序,优化排序结果。
(2)在经济索引模式下,Dify 提供单一检索设置:倒排索引和TopK
- 倒排索引:一种为快速检索文档中的关键字而设计的索引结构。
- TopK和分数阈值:设置检索结果的数量和相似度阈值。
三、Dify + Agent
如何在Dify平台搭建Agent?在Dify平台上,通过选择模型、编写提示、添加工具与知识库、配置推理模式及对话开启器,最后进行调试预览并发布为Webapp,实现Agent的创建与部署。
1. 探索与集成应用模板
Dify平台提供了丰富的“探索”(Explore)部分,其中包含多个代理助理的应用模板。用户可以直接将这些模板集成到自己的工作区中,快速开始使用。同时还允许用户创建自定义代理助理,以满足特定的个人或组织需求。
2. 选择推理模型
代理助理的任务完成能力很大程度上取决于所选LLM模型的推理能力。建议使用如GPT-4等更强大的模型系列,以获得更稳定、更精确的任务完成结果。
3. 编写提示与设置流程
在“说明”(Instructions)部分,用户可以详细编写代理助理的任务目标、工作流程、所需资源和限制条件等提示信息。这些信息将帮助代理助理更好地理解并执行任务。
4. 添加工具与知识库
- 工具集成:在“工具”(Tools)部分,用户可以添加各种内置或自定义工具,以增强代理助理的功能。这些工具可以包括互联网搜索、科学计算、图像创建等,帮助代理助理与现实世界进行更丰富的交互。
- 知识库:在“上下文”(Context)部分,用户可以整合知识库工具,为代理助理提供外部背景知识和信息检索能力。
5. 推理模式设置
Dify支持两种推理模式:Function Calling和ReAct。
- Function Calling:对于支持该模式的模型(如GPT-3.5、GPT-4),建议使用此模式以获得更好更稳定的性能。
- ReAct:对于不支持Function Calling的模型系列,Dify提供了ReAct推理框架作为替代方案,以实现类似的功能。
6. 配置对话开启器
用户可以为代理助理设置对话开场白和初始问题,以便在用户首次与代理助理交互时,展示其可以执行的任务类型和可以提出的问题示例。
7. 调试与预览
在将代理助理发布为应用程序之前,用户可以在Dify平台上进行调试和预览,以评估其完成任务的有效性和准确性。
8. 应用程序发布
一旦代理助理配置完成并经过调试,用户就可以将其发布为Web应用程序(Webapp),供更多人使用。这将使得代理助理的功能和服务能够跨平台、跨设备地提供给更广泛的用户群体。