Dify4j 是一个基于 Spring AI 的ToB企业级 AI 应用开发平台,提供了完整的 AI 应用生命周期管理,包括应用创建、模型管理、知识库管理、工作流编排、插件等从底层模型到终端应用的全栈解决方案功能。
该项目是 Dify 的 Java 实现版本,在保持核心功能一致的同时,更加注重企业级特性、多租户架构和国产化适配,适合对Java技术栈有偏好或需要更强企业级支持的组织使用。
用户名/密码:admin/Yonchain
- 多租户架构:支持多租户隔离,每个租户拥有独立的资源和配置
- 应用管理:创建、配置和部署 AI 应用
- 模型管理:集成多种 AI 模型,支持模型的配置和调用
- 工具管理:工具可以扩展 LLM 的能力
- 知识库管理:构建和管理知识库,支持文档导入和检索
- 工作流编排:可视化编排 AI 工作流,实现复杂的业务逻辑
- 安全认证:基于 OAuth2 的认证和授权机制,保障系统安全
- 插件管理:接入第三方模型与工具,显著提升应用能力
- API 集成:提供丰富的 API 接口,方便与其他系统集成
由于研发需要不少的时间成本和人力成本,现第一阶段里面的大部分功能是通过免登录集成Dify实现。 Dify4j集成Dify很简单,只要能连接Dify的数据库即可,可以无侵入快速集成不同版本的Dify,将耦合度降到最低。
- Java 17:利用新的 Java 特性
- Spring Boot 3.5.0:提供快速开发和自动配置
- Spring AI 1.0.0:Spring 官方 AI 集成框架
- PostgreSQL:可靠的关系型数据库
- Redis:高性能缓存
- MyBatis:增强的 ORM 框架
- Spring Security:安全框架,提供认证和授权
- Spring Doc:API 文档生成
Dify4j与原始的Dify项目在技术栈、功能实现和部署方式等方面存在一些差异:
| 特性 | Dify4j | Dify |
|---|---|---|
| 编程语言 | Java 17 | Python 3.10+ |
| Web框架 | Spring Boot Web 3.5.0 | FastAPI |
| AI框架 | Spring AI 1.0.0 | LangChain |
| 数据库 | PostgreSQL | PostgreSQL |
| 缓存 | Redis | Redis |
| 向量数据库 | 支持Weaviate、Milvus、OpenSearch、Qdrant | 支持Weaviate、Milvus、Qdrant等 |
| 前端技术 | Vue3 + TypeScript | React + TypeScript |
| 多租户 | 原生支持(默认禁用) | 需要定制 |
| 国产化适配 | 支持国产数据库、中间件 | 有限支持 |
| 部署方式 | Docker、源码部署 | Docker、源码部署 |
| API兼容性 | 兼容Dify API | 原生API |
| 插件生态 | 支持Spring生态插件 | 支持Python生态插件 |
| 工作流编排 | 可视化编排 | 可视化编排 |
| 知识库管理 | 支持多种文档格式 | 支持多种文档格式 |
| 模型支持 | 支持主流LLM模型 | 支持主流LLM模型 |
| 安全认证 | OAuth2 + Spring Security | JWT + FastAPI安全机制 |
| 企业级特性 | 更多企业级功能和安全特性 | 基础企业功能 |
| 应用权限 | 支持 | 不支持 |
| 信创 | 支持 | 不支持 |
Dify4j 采用模块化设计,主要包含以下模块:
- dify4j-api:API 定义和接口
- dify4j-app:AI应用管理
- dify4j-bootstrap:程序启动模块
- dify4j-bom:依赖版本管理
- dify4j-client:客户端库
- dify4j-commons:通用工具类和组件
- dify4j-console:控制台界面
- dify4j-core:核心功能
- dify4j-idm:身份和访问管理
- dify4j-model:模型定义和实现
- dify4j-rag:检索增强生成
- dify4j-security:安全相关功能
- dify4j-spring-boot-autoconfigure:Spring Boot 自动配置
- dify4j-spring-boot-starters:Spring Boot 启动器
- dify4j-workflow:工作流管理
- JDK 17 或更高版本
- Maven 3.6 或更高版本
- PostgreSQL 12 或更高版本
- Redis 6 或更高版本
- Docker 20.10 或更高版本
- Docker Compose 2.0 或更高版本
- 克隆仓库
git clone https://github.com/yonchain/dify4j.git
cd dify4j- 配置数据库
创建 PostgreSQL 数据库,并更新 dify4j-bootstrap/src/main/resources/application.yaml 中的数据库配置:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/dify
username: your_username
password: your_password- 配置 Redis
更新 dify4j-bootstrap/src/main/resources/application.yaml 中的 Redis 配置:
spring:
data:
redis:
host: localhost
port: 6379
password: your_password- 编译项目
mvn clean install- 运行应用
java -jar dify4j-bootstrap/target/dify4j-bootstrap-1.0.0.jar应用将在 http://localhost:8080 启动。
- 克隆仓库
git clone https://github.com/yonchain/dify4j.git
cd dify4j/dify4j-docker- 配置环境变量
复制环境变量模板文件并修改配置:
cp .env.example .env编辑.env文件,配置以下关键参数:
DB_USERNAME: PostgreSQL数据库用户名DB_PASSWORD: PostgreSQL数据库密码REDIS_PASSWORD: Redis密码VECTOR_STORE: 向量数据库类型(weaviate/milvus/opensearch)STORAGE_TYPE: 存储类型(local/s3/azure)
- 启动服务
docker compose up -d- 访问应用
应用将在 http://localhost 启动。
- 数据持久化
Docker部署默认会将以下数据持久化:
- PostgreSQL数据存储在
./data/postgres目录 - Redis数据存储在
./data/redis目录 - 上传文件存储在
./storage目录
如果需要单独部署中间件服务(数据库、Redis等)用于开发:
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d如果你使用的是Docker部署Dify,可以使用此方式
docker network create pg_networkdocker network connect pg_network dify数据库容器名称或IDdocker run -d --name pg_proxy \
--network pg_network \
-p 5432:5432 \
alpine/socat \
TCP-LISTEN:5432,fork TCP:dify数据库容器名称或ID:5432命令的方式
psql -h localhost -p 5432 -U <用户名> -d <数据库名>进入到docker容器内开通权限
docker exec -it 容器id /bin/bash
cd /var/lib/postgresql/data
chmod -R 777 *API 文档使用 SpringDoc 生成,可以通过访问 http://localhost:8080/swagger-ui.html 查看。
加群步骤
1.Star项目 2.扫作者微信二维码添加作者 3.将Star的截图发给作者 4.作者拉你进Star用户交流群
我们欢迎任何形式的贡献,包括但不限于:
- 提交 bug 报告
- 改进文档
- 提交功能请求
- 提交代码修复或新功能
请遵循以下步骤:
- Fork 项目
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request
本项目采用 Apache License 2.0 许可证 - 详情请参阅 LICENSE 文件。
如有任何问题或建议,请通过以下方式联系我们:
Dify4j - 让 AI 应用开发更简单

