# DifyTool **Repository Path**: shanzhi_ai/dify-tool ## Basic Information - **Project Name**: DifyTool - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-06 - **Last Updated**: 2025-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dify-Tool 项目说明文档 ## 项目简介 `Dify-Tool` 是一个基于 Java 的工具库,旨在为与 Dify 平台的 API 交互提供便捷的封装。该项目简化了与 Dify 的集成,支持知识库管理、文档处理、工作流运行、聊天会话等功能,适用于需要快速接入 Dify 平台的开发者。 ## 功能特性 - **知识库操作**:支持创建、更新、删除和查询 Dify 中的知识库(Dataset)。 - **文档管理**:支持文档上传、删除、分段内容提取以及文档内容搜索。 - **分块处理**:支持文档分块(Chunk)的查询、添加、修改和删除操作。 - **工作流执行**:提供调用 Dify 工作流(Workflow)运行的接口。 - **聊天集成**:支持与 Dify 的聊天功能集成,包括对话会话、代理聊天等。 - **灵活配置**:通过 `DifyProperties` 支持配置 Dify 的 API 地址和默认参数。 ## 模块结构 - **`config`**:配置类,包含 `DifyProperties`(用于加载配置)和 `DifyApiConfig`(API 地址常量)。 - **`entity`**:封装了与 Dify 数据模型对应的实体类,如 `DataSetEntity`、`DocumentFileEntity`、`ChunkEntity`、`WorkFlowsRunEntity` 等。 - **`service` 与 `service/impl`**:定义并实现了与 Dify 平台交互的服务接口,包括: - `DatasetService`:知识库相关操作 - `DifyChunkService`:文档分块相关操作 - `DifyChatService`:聊天会话相关操作 - `DifyApiService`:工作流执行相关操作 - `DifyBaseService`:基础请求封装,包含 URL 构建和请求发送逻辑 - **`utils`**:工具类,如 `DifyCommonUtils`(通用请求方法)、`ParseDataUtils`(数据解析)、`DifyDistillUtils`(内容提取)等。 - **`common`**:通用接口 `BaseEnum` 及 `DifyUrlEnums`(Dify API 地址枚举)。 ## 快速开始 ### 1. 依赖引入 该项目使用 Maven 构建,需确保 `pom.xml` 中已包含以下依赖(示例): ```xml org.springframework.boot spring-boot-starter org.projectlombok lombok com.alibaba fastjson ``` ### 2. 配置 Dify 地址与 API Key 在 `application.yml` 中配置 Dify 的基础地址和默认 API Key: ```yaml tool: dify: dify-url: "https://api.dify.ai" dataset-api-key: "your_dataset_api_key" ``` ### 3. 使用示例 #### 创建知识库 ```java @Autowired private DatasetService datasetService; public void createNewDataset() { DifyDatasetEntity dataset = DifyDatasetEntity.builder() .name("我的知识库") .datasetId("dataset_001") .isPublic("true") .build(); String response = datasetService.createDataset(dataset); System.out.println("创建知识库响应:" + response); } ``` #### 上传文档到知识库 ```java public void uploadDocument() { String datasetId = "dataset_001"; File file = new File("path/to/document.pdf"); String response = datasetService.uploadFileToDataset(datasetId, file); System.out.println("上传文档响应:" + response); } ``` #### 运行工作流 ```java @Autowired private DifyApiService difyApiService; public void runWorkflow() { WorkFlowsRunEntity workflowEntity = WorkFlowsRunEntity.builder() .inputs(Map.of("input", "Hello Dify")) .response_mode("blocking") .user("test_user") .build(); String apiKey = "your_api_key"; String response = difyApiService.workflowsRun(workflowEntity, apiKey, DifyUrlEnums.WORKFLOWS_RUN_URL); System.out.println("工作流运行结果:" + response); } ``` ## 贡献指南 欢迎贡献代码或提出问题。请遵循以下步骤: 1. Fork 本项目并创建新分支。 2. 提交你的修改。 3. 编写清晰的提交信息。 4. 提交 Pull Request 并说明修改内容。 ## 许可证 本项目采用 [MIT License](https://opensource.org/licenses/MIT) 开源协议。 --- 如有任何问题,欢迎提交 Issues 或联系项目维护者。