探索Dify:开启AI应用开发的新篇章

举报
TechExplorer 发表于 2024/10/21 15:38:05 2024/10/21
【摘要】 Dify是一款开源的 LLM 应用开发平台,提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。本文将带你深入探索Dify,了解它的基本概念、核心功能以及在Dify中结合华为云AI Gallery在线推理服务使用,快速构建AI Agent、工作流和对话应用。

文档导读

Dify是一款开源的 LLM 应用开发平台,提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。本文将带你深入探索Dify,了解它的基本概念、核心功能以及在Dify中结合华为云AI Gallery在线推理服务使用,快速构建AI Agent、工作流和对话应用。

在做本文档实践操作部分之前,您需要提前完成如下操作:

  • 在华为云Flexus X实例一键部署Dify,请参考部署文档
  • 在华为云AI Gallery中完成大语言模型部署,请参考部署文档

一、关于Dify

Dify 是一个创新的开源平台,专为大型语言模型(LLM)应用的开发而设计。它巧妙地结合了后端即服务(Backend as Service)的理念和LLMOps的实践,加速了开发者构建高效、可扩展的生成式 AI 应用的过程。Dify 支持集成多种顶尖的大型语言模型,例如 Claude3 和 OpenAI,并与众多模型供应商建立了合作关系,为开发者提供了广泛的选择,以适配他们的特定需求。 该平台还具备先进的知识库管理能力,使用户能够轻松上传和维护文本及结构化数据。Dify 的可视化工具进一步简化了 Prompt 的设计和应用的运维工作,显著降低了 AI 应用开发的技术壁垒。Dify.AI 的易用性和包容性设计意味着非技术背景的用户也能轻松上手,快速构建和运行自己的 AI 应用。 Dify.AI 不仅适用于智能客服和文本生成等多样化的应用场景,而且能够满足跨行业的需求。凭借其全面的功能和灵活性,Dify.AI 成为了开发者快速打造和部署 AI 应用的首选解决方案之一。

2.关于dify.png

二、Dify的优势

  • 低代码/无代码开发:Dify通过可视化的方式,允许开发者轻松定义Prompt、上下文和插件等,无需深入底层技术细节。这种低代码/无代码的开发方式,大大降低了AI应用开发的门槛,使得更多人能够参与到AI应用的创新中来。
  • 模块化设计:Dify采用模块化的设计,每个模块都有清晰的功能和接口。开发者可以根据需求选择性地使用这些模块来构建自己的AI应用,从而实现快速迭代和优化。
  • 支持多种大语言模型:Dify已经支持了包括GPT系列在内的多种主流大语言模型,并且还在不断扩展中。开发者可以根据自己的需求选择最适合的模型来构建AI应用,从而满足不同的业务场景和需求。
  • 丰富的功能组件:平台提供了包括AI工作流、RAG管道、Agent、模型管理等丰富功能组件,帮助开发者从原型到生产的全过程。

三、Dify核心功能

Dify提供以下核心功能来基于LLM构建的应用程序,可以针对不同的应用场景和需求进行优化和定制。

1. 模型接入

Dify 是基于大语言模型的 AI 应用开发平台,初次使用时你需要先在 Dify 的 设置 -- 模型供应商 页面内添加并配置所需要的模型。

2. 应用构建

在 Dify 中,一个“应用”是指基于 GPT 等大语言模型构建的实际场景应用。通过创建应用,您可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。

3. 知识库

大语言模型的训练数据一般基于公开的数据,且每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。为了解决这一问题,目前通用的方案是采用 RAG(检索增强生成)技术,使用用户问题来匹配最相关的外部数据,将检索到的相关内容召回后作为模型提示词的上下文来重新组织回复。

4. Agent工具

工具可以扩展 LLM 的能力,比如联网搜索、科学计算或绘制图片,赋予并增强了 LLM 连接外部世界的能力。Dify 提供了两种工具类型:第一方工具自定义工具

5. 工作流

工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

6. 应用发布

使用 Dify 创建 AI 应用,你可以在几分钟内就发布一个可供用户在互联网上公开访问的 Web 应用,该应用将根据你的 Prompt 和编排设置进行工作。Dify 支持将你的 AI 应用嵌入到业务网站中,你可以使用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。也可以基于API进行开发。

7. 应用监测

你可以在 概览 内监控、跟踪应用程序在生产环境中的性能,在数据分析仪表盘内分析生产环境中应用的使用成本、延迟、用户反馈、性能等指标,并通过持续调试、迭代不断改进你的应用程序。

四、Dify操作实践

模型接入

我们以在华为云AI Gallery中部署的模型接入到Dify中为例。在此之前需要完成如下操作:

  • 在华为云Flexus X实例一键部署Dify,请参考部署文档
  • 在华为云AI Gallery中完成大语言模型部署,请参考部署文档

具体接入步骤如下:

    1. 获取服务接口地址:AI Gallery中推理服务部署完成后,状态变为运行中,点击接口调用,在弹窗中可获取到完整的API调用地址;
    2.   获取调用模型名称:在接口调用弹窗中点击“前往查看使用方式”,进入模型详情页,并下拉页面,在参数说明表中,model一行即可查看到调用时需要使用的模型名称;
    3. 模型供应商配置:浏览器进入您部署的Dify平台界面,点击右上角个人的“设置”,进入模型供应商页签,选择OpenAI-API-compatible供应商;

      信息配置:

      -"模型名称"请填入步骤四中的调用模型名称

      -"API endpoint URL"请填入步骤1中的API调用地址,并在后面添加"v1"

      "Completion mode"请点击叉号将其置空

    构建应用

    你可以通过 3 种方式在 Dify 的工作室内创建应用:基于应用模板创建(新手推荐)、创建一个空白应用、通过 DSL 文件(本地/在线)创建应用;对话型应用的编排支持:对话前提示词,变量,上下文,开场白和下一步问题建议。

    1. 此处以创建一个空白应用为例:可以从导航选择 「工作室」 ,在应用列表内选择 「从空白创建 」。

    •  Dify 上 提供4 种不同应用类型,分别是聊天助手、文本生成应用、Agent 和工作流;此处以聊天助手为例;
    • 创建应用时,你需要给应用起一个名字、选择合适的图标,或者上传喜爱的图片用作图标、使用简介清晰的文字来描述此应用的用途,以方便后续应用在团队内的使用。

    创建应用.png

    2. 编排应用:创建应用后会自动跳转到应用概览页。点击左侧菜单 编排 来编排应用。

    编排应用.png

    3. 填写提示词:提示词用于约束 AI 给出专业的回复,让回应更加精确。你可以借助内置的提示生成器,编写合适的提示词。提示词内支持插入表单变量,例如 {{input}}。提示词中的变量的值会替换成用户填写的值。

    示例:

    • 输入提示指令,要求给出一段面试场景的提示词。
    • 右侧内容框将自动生成提示词。

    • 你可以在提示词内插入自定义变量。

    填写提示词.png

    4. 添加开场白:为了更好的用户体验,可以加上对话开场白。点击页面底部的 “添加功能” 按钮,打开 “对话开场白” 的功能:

    添加开场白.png

    编辑开场白时,还可以添加数个开场问题:

    编辑开场白.png

    集成知识库

    如果想要让 AI 的对话范围局限在知识库内,例如企业内的客服话术规范,可以在“上下文”内引用知识库。Dify 的知识库功能将 RAG的各环节可视化,提供了一套简单易用的用户界面来方便应用构建者管理个人或者团队的知识库,并能够快速集成至 AI 应用中。能够支持长文本(TXT、Markdown、DOCX、HTML、JSONL 甚至是 PDF 文件)、结构化数据(CSV、Excel 等)、网页、Notion等。

    上下文.png

    1. 创建知识库:在 Dify 主导航栏中点击知识库,点击“创建知识库” 进入创建向导。

    • 拖拽或选中文件进行上传;
    • 如果还没有准备好文档,可以先创建一个空知识库;
    • 如果你在创建知识库时选择了使用外部数据源(Notion 或同步 Web 站点),该知识库的类型不可更改;

    2. 选择分段与清洗策略:将内容上传至知识库后,需要先对内容进行分段与数据清洗,该阶段可以被理解为是对内容预处理与结构化。

    支持以下两种策略:

    • 自动分段与清洗:自动模式适合对分段规则与预处理规则尚不熟悉的初级用户。在该模式下,Dify 将为你自动分段与清洗内容文件。
    • 自定义:自定义模式适合对于文本处理有明确需求的进阶用户。在自定义模式下,你可以根据不同的文档格式和场景要求,手动配置文本的分段规则和清洗策略。

    3. 索引方式:指定内容的预处理方法(分段与清洗)后,接下来需要指定对结构化内容的索引方式。索引方式将直接影响 LLM 对知识库内容的检索效率以及回答的准确性。

    系统提供以下三种索引方式:

    • 高质量:在高质量模式下,将首先调用 Embedding 嵌入模型(支持切换)将已分段的文本转换为数字向量,帮助开发者更有效地实现大量文本信息的压缩与存储;同时还能够在用户与 LLM 对话时提供更高的准确度。高质量索引方式提供向量检索、全文检索和混合检索三种检索设置;
    • 经济:使用离线的向量引擎与关键词索引方式,降低了准确度但无需额外花费 Token,产生费用。检索方式仅提供倒排索引;

    • Q&A 模式(仅社区版支持):在知识库上传文档时,系统将对文本进行分段,总结后为每分段生成 Q&A 匹配对。

    4. 检索设置:

    高质量索引方式下,Dify 提供以下 3 种检索方案:

    • 向量检索:向量化用户输入的问题并生成查询向量,比较查询向量与知识库内对应的文本向量距离,寻找最近的分段内容。
    • 全文检索:关键词检索,即索引文档中的所有词汇。用户输入问题后,通过明文关键词匹配知识库内对应的文本片段,返回符合关键词的文本片段;类似搜索引擎中的明文检索。
    • 混合检索:同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果。

    经济索引方式下,Dify 仅提供 1 种检索设置:

    • 倒排索引:倒排索引是一种用于快速检索文档中关键词的索引结构,它的基本原理是将文档中的关键词映射到包含这些关键词的文档列表,从而提高搜索效率。

    5. 完成上传:配置完上文所述的各项配置后,轻点“保存并处理”即可完成知识库的创建。

    6. 在应用内集成知识库:如果想要让 AI 的对话范围局限在知识库内,例如企业内的客服话术规范,可以在“上下文”内引用知识库。

    Agent工具配置

    在“上下文”中,你可以添加智能助手可以用于查询的知识库工具,这将帮助它获取外部背景知识。

    在“工具”中,你可以添加需要使用的工具。工具可以扩展 LLM 的能力,比如联网搜索、科学计算或绘制图片,赋予并增强了 LLM 连接外部世界的能力。Dify 提供了两种工具类型:第一方工具自定义工具

    agent1.png

    “工具”功能允许用户借助外部能力,在 Dify 上创建出更加强大的 AI 应用。例如你可以为智能助理型应用(Agent)编排合适的工具,它可以通过任务推理、步骤拆解、调用工具完成复杂任务。

    另外工具也可以方便将你的应用与其他系统或服务连接,与外部环境交互。例如代码执行、对专属信息源的访问等。你只需要在对话框中谈及需要调用的某个工具的名字,即可自动调用该工具。

    agent2.png

    工作流配置

    Dify 工作流分为两种类型:

    • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
    • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

    工作流.png

    为解决自然语言输入中用户意图识别的复杂性,Chatflow 提供了问题理解类节点。相对于 Workflow 增加了 Chatbot 特性的支持,如:对话历史(Memory)、标注回复、Answer 节点等。

    为解决自动化和批处理情景中复杂业务逻辑,工作流提供了丰富的逻辑节点,如代码节点、IF/ELSE 节点、模板转换、迭代节点等,除此之外也将提供定时和事件触发的能力,方便构建自动化流程。

    应用发布

    1. 调试:在右侧填写用户输入项,输入内容进行调试。

    调试1.png

    如果回答结果不理想,可以调整提示词和底层模型。你也可以使用多个模型同步进行调试,搭配出合适的配置。

    调试2.png

    2. 发布应用:调试好应用后,点击右上角的 “发布” 按钮生成独立的 AI 应用。除了通过公开 URL 体验该应用,你也进行基于 APIs 的二次开发、嵌入至网站内等操作。

    应用监测

    你可以在 概览 内监控、跟踪应用程序在生产环境中的性能,在数据分析仪表盘内分析生产环境中应用的使用成本、延迟、用户反馈、性能等指标,并通过持续调试、迭代不断改进你的应用程序。

    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。