本章开始对Dify最新版本(v0.10.2)源码进行解读。在Dify项目根目录下有如下几个目录:api、web、docker、docker-legacy、sdks等。
其中api是后台项目目录,核心的业务逻辑、模型调用、接口服务代码都在该目录下。web目录是前台项目目录,前台页面代码基本上都在该目录下。Docker及docker-legacy是部署相关的文件。sdks是对外提供的不同语言客户端。本节开始先对后台服务项目进行介绍。
1.技术栈:
- 后端框架:Flask
- 数据库:PostgreSQL等
- ORM:SQLAlchemy
- 测试框架:Pytest
- 配置管理:环境变量(.env 文件)
- 静态文件管理:Flask内置的静态文件服务
- 模板引擎:Jinja2(Flask默认模板引擎)
2.项目结构API目录 /api
后台项目的根目录,包含所有项目文件和子目录。
- app.py:API的主应用文件。
- configs:API的配置文件目录。
- Constants:常量配置文件目录
- Controllers:对前台提供的接口入口控制层。
- Core: 后台服务的核心代码目录。后续章节会详细介绍
- Events:异步事件监听目录
- Extensions:扩展目录,包括各种存储中间件的封装。
- Fields: 字段模块,它用于序列化和反序列化数据,指定了每个字段的数据类型
- models/:存放API的数据模型文件。用于表示数据库中的表。模型类定义了表的结构,包括字段名称、数据类型和关系。
- Libs: 封装了一些工具方法。
- Schedule: 定时任务,用于清理数据库中超过一定天数的缓存
- services/:存放API的业务逻辑文件。
- Tasks: 定义了一些任务相关的操作,例如:异步地将文档添加到索引中,在数据集(dataset)被删除时清理相关的数据和资源等等。
- utils/:存放API的工具函数和辅助类。
- templates/:存放API的HTML模板文件。
- tests/:存放API的单元测试文件。
3.本地源码启动项目
3.1 首先在本地使用docker-compose启动dify各个模块服务,注意将redis/postgresql服务的端口对外开放。在官网提供的docker-compose.yml文件的端口未对外开放,需手工调整该文件,例如:
3.2 安装PyCharm工具,并安装poetry作为包的管理工具。在api项目文件夹下的控制台中执行Poetry install 命令即可将相关依赖导入进来。
由于是前后台分离项目,后台服务,需将下列代码中加”*”号,允许跨域。否则会报错。本次暂时只涉及后台服务,此处改不改都可。
3.3 通过IDEA启动后台服务,出下下图所示,即表明启动成功
3.4 验证登录接口
通过api工具发送接口请求,返回如下信息说明登录接口正常
标签:文件,dify,api,目录,API,后台,docker,源码 From: https://blog.csdn.net/qq_37577727/article/details/143574014