实现

Dify前端使用React框架实现,这里不做深入探索,来看看后端的实现。

主要代码目录如下:

.\
..\
api\  # 后端实现目录
  app.py         # 入口文件
  controllers\   # 控制层,注册路由
    console\     # 前端API
    files\       # 图片、文件API
    inner_api\   # 插件API
    service_api\ 
    web\         
  services\      # 业务实现层
  models\        # 模型
  core\          # 逻辑实现
web\  # 前端实现目录

后端框架使用Flask,使用flask-restful管理路由,使用celery进行分布式任务管理。

架构层面:

API server <–> Worker

为了支持横向扩展,可以多节点部署worker,属于基于事件驱动的架构。

实现层面:

分层架构,经典的控制、服务、模型分层。

数据库:

业务管理使用的pg,是除MySQL外很流行的开源关系型数据库。

为支持RAG,dify支持了很多款向量数据库,可以按需配置。

部署: docker compose 一行命令完成部署,快速体验很赞。

思考

翻看dify的源码,有种熟悉的感觉,因为这就是第一份工作的完整技术栈。

作为技术开发者,追逐新颖、时髦的技术,认为这些很酷,但是有时候会忘了出发点:

技术是用来解决问题的!

Dify目前已经将近96K的star。