Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
--- 《Dify 中文手册》
在 Dify 中,一个应用是指基于 GPT 等大语言模型构建的实际场景应用。通过创建应用,你可以将 AI 技术应用于特定的需求。
Dify 中提供了四种应用类型:
工作流通过逻辑清晰的多步步骤(节点)完成复杂的任务,在降低系统复杂度的同时,也减少了对提示词工程和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。
Dify 支持 chatflow 和 workflow 两种工作流。chatflow 运用在聊天助手应用,workflow 运用在工作流应用。两种工作流主要区别如下:
节点是工作流中的关键构成,通过连接不同功能的节点,执行工作流的一系列操作。
开始节点设置初始参数,用于存储用户输入,并传递到后续节点。支持的数据类型包括:短文本、长文本、下拉选型、数字、单文件和文件列表。
条件分支节点使用 if/else 条件语句,将工作流拆分成多个分支,从而执行不同的流程。
借助 LLM 的推理能力,通过定义分类描述,问题分类器节点能够根据用户输入选择与之相匹配的分类。
LLM 节点调用大语言模型回答问题或者对自然语言进行处理。
模板转换节点借助 Jinja2 的 Python 模板语言灵活地对输入变量进行数据转换、文本处理等操作,然后在下一个节点使用该输出变量。
变量聚合器节点是工作流程中的一个关键节点,它负责整合不同分支的输出结果,确保无论哪个分支被执行,其结果都能通过一个统一的变量来引用和访问。这在多分支的情况下非常有用,可将不同分支下相同作用的变量映射为一个输出变量,避免下游节点重复定义。
结束节点定义一个 workflow 流程结束的最终输出内容。
除了以上节点,还有一些节点也非常好用,如:代码执行节点,代码执行节点为处理变量实现特定逻辑提供了一种更加灵活的方式,支持 Python3 和 JavaScript 两种代码。
更多节点见:工作流节点
参考资料