# dify-java
**Repository Path**: chenghy/dify-java
## Basic Information
- **Project Name**: dify-java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-07
- **Last Updated**: 2025-04-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Dify-Java API使用说明
---
## 项目概述
本项目基于 Spring Boot 3.2.x 实现与 Dify 平台的 API 集成,采用 **HTTP Interface** 声明式客户端,提供简洁高效的 API
调用方式。通过本框架,开发者可快速完成以下功能:
- Dify 工作流执行接口封装
- 文件上传与 API 密钥管理集成
- 响应流式/阻塞模式切换
---
## 环境要求
```
JDK 17+
Spring Boot 3.2.x+
Maven 3.6+
Dify API 密钥(从平台控制台获取)
```
---
## 快速开始
### 1. 添加依赖
- maven包上架还未完成,可以下载源码手动编译
```xml
com.github.polarisink
dify-spring-boot-starter
latest
```
- 项目基于webflux编写,需要注意处理和web的冲突
- 如果是spring-web项目则正常使用
- 如果在非spring环境中,可以使用`HttpInterfaceUtil`创建XXXApi的代理类,或使用XXXClient的builder方法构建Client
### 2. 使用
#### 1、聊天室,工作流只有单个的情况
- 在 `application.yml` 中配置:
```yaml
dify:
base-url: https://api.dify.ai/v1
chat-key: app-xxxxxxxxxx # 从Dify控制台获取
text-key: app-xxxxxxxxxx # 从Dify控制台获取
dataset-key: dataset-xxxxxxxxxx # 从Dify控制台获取
workflow-key: app-xxxxxxxxxx # 从Dify控制台获取
```
- 在业务中进行使用
```java
//启用dify自动配置
@EnableDifyApi
@RequestMapping("/dify")
@RestController
class ChatController {
//其他的几个API:DifyDatasetApi DifyTextApi DifyWorkflowApi同理
@Autowired
private DifyChatApi difyChatApi;
@GetMapping("/chat")
public DifyChat chat(@RequestBody DifyChatRequest paramMessage) {
return difyChatApi.chat(paramMessage);
}
}
```
#### 2、有多个聊天室或工作流
- 手动构建`DifyChatClient`进行调用,此时不能再使用`DifyChatApi`等系列api,而且client系列
```java
@RequestMapping("/dify")
@RestController
class ChatController {
//其他的几个API:DifyDatasetApi DifyTextApi DifyWorkflowApi同理
private String baseUrl = "https://api.dify.ai/v1";
private String token = "token";
//使用map维护多个不同的token
private static final Map chatMap = new ConcurrentHashMap<>();
@GetMapping("/chat")
public DifyChat chat(@RequestBody DifyChatRequest paramMessage) {
DifyChatClient difyChatClient = chatMap.computeIfAbsent(token, k -> DifyChatClient.builder().baseUrl(baseUrl).token(token).build());
return difyChatClient.chat(paramMessage);
}
}
```
---
## 配置说明
| 配置项 | 示例值 | 说明 |
|---------------------|--------------------------|------------------|
| `dify.chat-key` | `app-xxxxxxxx` | 控制台获取的聊天室api-key |
| `dify.workflow-key` | `app-xxxxxxxx` | 控制台获取的工作流api-key |
| `dify.base-url` | `https://api.dify.ai/v1` | API 基础路径 |
---
## 注意事项
2. **文件类型限制**:上传文件需符合 Dify 的 MIME 类型要求(如 TXT/PDF)
3. **错误代码处理**:捕获 `HttpClientErrorException` 处理 4xx/5xx 错误
4. **流式响应**:设置 `response_mode=streaming` 时需使用 WebClient 处理 SSE
---
## 任务列表
- [ ] spring-boot-starter上架maven中心仓库
- [ ] sse相关api完善及测试
- [ ] 测试用例的编写
完整代码示例可参考测试程序,建议结合 [Dify](https://docs.dify.ai/zh-hans) 官方文档进行调试。