LLM

Dify调研

Dify调研

Posted by ZBX on March 9, 2025

简要说明

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

Docker Compose 部署

  1. 进入 Dify 源代码的 Docker 目录

    cd dify/docker
    
  2. 复制环境配置文件

    cp .env.example .env
    
  3. 启动 Docker 容器

    docker-compose up -d
    

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

[+] Running 11/11
 ✔ Network docker_ssrf_proxy_network  Created                                                          
 ✔ Network docker_default             Created                                                           
 ✔ Container docker-redis-1           Started                                                           
 ✔ Container docker-ssrf_proxy-1      Started                                                           
 ✔ Container docker-sandbox-1         Started                                                           
 ✔ Container docker-web-1             Started                                                           
 ✔ Container docker-weaviate-1        Started                                                           
 ✔ Container docker-db-1              Started                                                           
 ✔ Container docker-api-1             Started                                                           
 ✔ Container docker-worker-1          Started                                                           
 ✔ Container docker-nginx-1           Started            

项目架构

image-20250309214726468

Poetry

Poetry 是一个现代化的依赖管理打包工具,旨在简化 Python 项目的开发、依赖管理和发布流程。它整合了传统工具(如 pip, virtualenv, setuptools)的功能,同时通过更直观的配置和依赖解析机制,帮助开发者更高效地管理项目。

功能 Poetry pip + venv pipenv
依赖管理 ✅ (手动)
虚拟环境管理 ✅ (手动)
打包与发布
单一配置文件 ✅ (pyproject.toml) ✅ (Pipfile)
PEP 621 标准支持

常见问题

  • 依赖解析慢:首次解析复杂依赖可能耗时,但 poetry.lock 会缓存结果加速后续操作。
  • 兼容性:旧项目迁移到 Poetry 可能需要调整配置文件,但大多数场景可无缝适配。

Celery

Celery 是一个基于 Python 的 分布式任务队列(Distributed Task Queue)框架,主要用于处理异步任务和实现高效的任务调度。它能够将耗时的操作(如发送邮件、文件处理、数据计算等)从主流程中解耦,异步执行,从而提升应用的响应速度和扩展性。

由以下三个核心组件组成:

  • 消息中间件(Broker): 负责存储和分发任务。支持多种消息队列服务,如 RabbitMQRedisMongoDB 等。
  • Worker(工作进程): 从消息队列中获取任务并执行。可以启动多个 Worker 进程或分布式节点,实现并行处理。
  • 结果存储(Backend): 可选组件,用于存储任务执行结果(如成功/失败状态、返回值等),支持 Redis、数据库等。