动手学Dify:用Dify从0到1做智能体

0 阅读10分钟

Dify,这个名字本身就蕴含着“Define(定义)+ Modify(修改)”的理念,它是一款开源的大语言模型(LLM)应用开发平台。

它将后端即服务(Backend as Service)和 LLMOps 的理念完美融合,旨在为您的团队提供从构思、开发到部署、监控的完整基础设施,帮助您打造能投产并创造真正价值的 Agentic AI 解决方案。

为什么选择Dify?

Dify 的目标非常明确:轻松构建并部署生产级 Agentic AI 解决方案。它提供了一站式能力:

  • Agentic 工作流:让AI不仅能“说”,还能“做”,自主完成复杂任务。
  • RAG Pipeline:高效整合您的私有知识。
  • 丰富的集成:无缝连接各类大模型和工具。
  • 可观测性:实时监控应用表现,确保稳定可靠。

图片

Dify 不仅仅是一个开发工具,它更是生产就绪的企业级解决方案:

  • 灵活扩展:从容应对不断增长的流量和变化的需求,确保您的AI应用具备可伸缩性。
  • 稳定 可靠:提供坚实可靠的基础设施,确保您拥有安心无忧的运营体验。
  • 安全保障:具备企业级安全能力,守护您的关键数据资产,满足合规性要求。

图片图片图片图片

在 GitHub 上,Dify 拥有超过103.5K 的 Star,累计下载次数达500万,并且汇聚了800多位开发者共同贡献(截止2025年6月)。Dify 也拥有不断壮大的生态环境。通过其插件市场(Marketplace),您可以在数秒内即时调用任意模型和工具,无需修改源代码。Dify 内置了构建LLM应用所需的关键技术栈,包括大模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。 这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

Dify与LLMOps

DevOps,顾名思义,是“开发”(Dev)与“运维”(Ops)的结合。它不仅仅是一套工具或流程,更是一种文化和实践,旨在通过自动化软件交付过程,来加强软件开发和信息技术运维团队之间的协作。让我们快速回顾一下DevOps的核心实践:

随着大模型开发的范式逐渐普及  “Feature Extraction”(特征提取)这类工作的重要性相对下降,取而代之的是“Data retrieval and serving”(数据检索与服务) ,这直接指向了RAG(检索增强生成) 的重要性。我们不再是为每个任务从零开始提取特征训练模型,而是更多地利用大模型,并通过检索外部知识来增强其能力。

  • 优化方式的转变
    • 传统MLOps可能更侧重于模型训练和验证的自动化
    • 而LLMOps则更多地聚焦于提示词工程(Prompt Engineering)和检索增强生成(RAG)   的优化。对于绝大多数应用而言,我们无需微调大模型,更不需要从头构建领域大模型。这意味着LLMOps需要提供强大的提示词管理、RAG管道构建和调试工具。
  • 数据角色的不同
    • 传统MLOps的数据主要用于模型训练
    • LLMOps的数据更多地作为上下文信息,用于RAG检索,以提供个性化、领域化的回答,并需要特别关注数据的集成、结构化和命中率。
  • 模型特有挑战
    • LLMs特有的“幻觉”(Hallucination)问题,以及模型对齐(Alignment)的挑战,需要在LLMOps中通过内容审核(Moderation System) 、人类反馈和持续监控来解决。

    • API成本管理:由于大型模型的调用通常是按token计费的,LLMOps需要精确的成本监控和优化策略。

    • 复杂交互与Agent编排:LLMOps需要支持更复杂的AI Agent工作流编排,实现从意图识别到多步骤工具调用的完整链条。

Dify vs Langchain

LangChain是一个非常强大的开发框架,它为开发者提供了构建大语言模型应用的组件和工具链。而Dify.AI,则是一个更偏向于平台型的产品,它融合了Backend as a Service(后端即服务)和LLMOps的理念。

通过这些对比,我们可以清晰地看到:

  • LangChain是一个为开发者提供高度灵活性和代码控制力的强大框架,适合那些希望从底层开始构建、需要精细控制每个细节的团队。

  • Dify.AI则是一个开箱即用、功能全面、且易于上手平台。它将LLM应用开发的复杂性进行高度封装和可视化,特别适合那些希望快速构建、部署和运营生产级LLM应用 ,并希望降低开发门槛,让更多非技术人员参与其中的个人、初创企业和中大型企业。

Dify 版本差异

Dify主要提供两大类服务:云服务(Cloud Service)和自托管(Self-Hosted) ,每种方案下又细分为不同的版本和套餐,以满足从个人开发者到大型企业的各种需求。

云服务(Cloud Service)- 便捷高效,即开即用。 Dify的云服务提供了多个层级,让您无需自行部署和维护基础设施,即可快速启动AI应用开发:

  • SANDBOX (免费沙盒版):提供核心功能的免费试用,包含200条消息额度,支持多种LLM,1个团队工作区,5个应用和50个知识文档等,非常适合个人开发者或初期探索。
  • PROFESSIONAL (专业版):面向独立开发者和小型团队,每月5000条消息额度,支持更多知识文档和数据存储,并提供优先文档处理和日志记录等。
  • TEAM (团队版):专为中型团队设计,提供更高的消息额度、知识文档和并发请求限制,是专业版的扩展。

图片

Dify 模块与技术栈

Dify 的后端是整个平台的“大脑”,负责处理核心逻辑和数据流。

  • 编程语言与框架
    • Python + Flask:Dify 的后端服务主要使用 Python 语言开发,并基于轻量级的 Flask 框架构建了高效的 RESTful API 接口。这种组合使得开发快速而灵活。
    • Celery:为了处理数据导入、模型训练等耗时的异步任务,Dify 引入了 Celery,它是一个强大的分布式任务队列管理系统。这极大地提升了复杂工作流的执行效率和系统的响应速度。
  • 数据库与存储
    • PostgreSQL:作为核心关系型数据库,PostgreSQL 负责存储 Dify 的应用数据、用户信息以及各种结构化内容,确保数据的可靠性和一致性.

    • Redis:作为内存数据库,Redis 主要用于缓存和会话管理,有效优化了高频访问场景的性能,提升了用户体验。

    • Weaviate:这是 Dify 在 RAG(检索增强生成)管道中的关键组件。Weaviate 是一个向量搜索引擎,它能够高效地存储和检索海量的文本向量,从而为 LLM 提供精准的上下文信息,是 Dify 知识库能力的核心。

Dify 应用类型

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

docs.dify.ai/zh-hans/gui…

Dify 中提供了五种应用类型:

  • 聊天助手:基于 LLM 构建对话式交互的助手
  • 文本生成应用:面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等
  • Agent:能够分解任务、推理思考、调用工具的对话式智能助手
  • 对话流:适用于定义等复杂流程的多轮对话场景,具有记忆功能的应用编排方式
  • 工作流:适用于自动化、批处理等单轮生成类任务的场景的应用编排方式

Dify 知识库

开发者可以将企业内部文档、FAQ、规范信息等内容上传至知识库进行结构化处理,供后续 LLM 查询。相比于 AI 大模型内置的静态预训练数据,知识库中的内容能够实时更新,确保 LLM 可以访问到最新的信息,避免因信息过时或遗漏而产生的问题。

  • LLM 接收到用户的问题后,将首先基于关键词在知识库内检索内容。知识库将根据关键词,召回相关度排名较高的内容区块,向 LLM 提供关键上下文以辅助其生成更加精准的回答。
  • 开发者可以通过此方式确保 LLM 不仅仅依赖于训练数据中的知识,还能够处理来自实时文档和数据库的动态数据,从而提高回答的准确性和相关性。

在 Dify 中,知识库(Knowledge)是一系列文档(Documents)的集合,一个文档内可能包含多组内容分段(Chunks),知识库可以被整体集成至一个应用中作为检索上下文使用。文档可以由开发者或运营人员上传,或由其它数据源同步。

Dify 工具/插件

插件是 Dify 平台的扩展模块,让你可以轻松地接入第三方模型与工具,显著提升应用能力。通过插件系统,你的 AI 应用能够更好地”看”、“听”、“说”、“画”、“计算”、“推理”,并连接外部 API,执行真实世界的操作。

  1. 工具使用户可以在 Dify 上创建更强大的 AI 应用,如你可以为智能助理型应用(Agent)编排合适的工具,它可以通过任务推理、步骤拆解、调用工具完成复杂任务。

  2. 方便将你的应用与其他系统或服务连接,与外部环境交互,如代码执行、对专属信息源的访问等。

Dify 沙盒

docs.dify.ai/zh-hans/dev…

DifySandbox 是一个轻量、快速、安全的代码运行环境,支持多种编程语言,包括 PythonNodejs 等,用户在 Dify Workflow 中使用到的如 Code 节点、Template Transform 节点、LLM 节点的 Jinja2 语法、Tool 节点的 Code Interpreter 等都基于 DifySandbox 运行,它确保了 Dify 可以运行用户代码的前提下整个系统的安全性。

  • 多语言支持:DifySandbox 基于 Seccomp,这是一个系统层级的解决方案,从而确保了可以支持多种编程语言,目前支持了 Python 与 Nodejs
  • 系统安全:使用白名单策略,只允许运行特定的系统调用,从而确保不会出现意外的绕过。
  • 文件系统隔离:用户代码将运行在一个独立的隔离的文件系统中。
  • 网络隔离:
    • DockerCompose:独立网络 Sandbox 网络,并使用代理容器进行网络访问,确保内网系统的安全,同时提供了灵活的代理配置方案。
    • K8s:直接使用 Egress 配置网络隔离策略即可。

原文地址:https://mp.weixin.qq.com/s/adg98yUMDJqILrUIX0cV1g