【Springboot项目对接Dify低代码工作流】

部署运行你感兴趣的模型镜像

Dify 是一个开源的 AI 应用开发平台,它允许开发者创建基于大型语言模型的应用程序。如果你想要从你的 Java 应用程序(使用 Spring Boot 2.2.13.RELEASE 和 JDK 1.8)请求 Dify 的工作流并获取流式响应,你需要确保 Dify 提供了相应的 API 接口,并且这些接口支持流式传输。

在 Java 中处理 HTTP 流式响应,你可以使用 Spring WebFlux 或者 OkHttp 等库来实现非阻塞的 HTTP 请求,这样可以在数据到达时立即处理,而不是等待整个响应体下载完成。下面我将给出一个简单的示例代码,展示如何使用 WebClient(属于 Spring WebFlux 模块)来发起一个异步的 GET 请求以接收流式响应。

✅ 实现目标

  • 使用 JDK 1.8 和 Spring Boot 2.2.13.RELEASE
  • 发起 POST 请求到 Dify 的 /api/workflows/run
  • 设置请求头(包括 Authorization, Content-Type
  • 传递 JSON body(包含 [inputs](file://D:\Code\ddcp-1a\source\service\yfk-java-services\znyfk1a-java-srv\yfk-acq-configuration-server\src\main\java\ut\yfk\acq\iot\entity\IotProduceAll.java#L354-L354) 和 response_mode: "streaming"
  • 获取并处理流式响应(逐行读取)

📦 添加依赖(pom.xml

你需要添加 OkHttp 依赖到你的 pom.xml 文件中:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

🧠 Java 示例代码(OkHttp 流式处理)

import okhttp3.*;

import java.io.IOException;

public class DifyStreamingClient {

    private static final String API_URL = "http://localhost/api/workflows/run";
    private static final String BEARER_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI5YTM3NmZkNS01MzVhLTRmZWUtOGRkYS1mNTNkZDA5YjhhYTYiLCJzdWIiOiJXZWIgQVBJIFBhc3Nwb3J0IiwiYXBwX2lkIjoiOWEzNzZmZDUtNTM1YS00ZmVlLThkZGEtZjUzZGQwOWI4YWE2IiwiYXBwX2NvZGUiOiJodDB2dE9KampYWkZ5RXFWIiwiZW5kX3VzZXJfaWQiOiI5OGVmMjgwYS0wMTdmLTQ3NmQtYjI1Mi1lZDk3NDJiNDRhZWMifQ.pGj_RzApUL_aQP1URzPmniOxB7_GIC9P-a-9n-S1it0";

    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        // 构建 JSON 请求体
        String jsonBody = "{\"inputs\":{\"user_input\":\"2222\"},\"response_mode\":\"streaming\"}";

        Request request = new Request.Builder()
                .url(API_URL)
                .post(RequestBody.create(jsonBody, MediaType.get("application/json")))
                .header("Authorization", "Bearer " + BEARER_TOKEN)
                .header("Accept", "*/*")
                .header("Content-Type", "application/json")
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

            // 检查响应体是否为流式
            ResponseBody body = response.body();
            if (body == null) throw new IOException("Empty response body");

            // 使用字符流读取响应(逐行处理)
            BufferedReader reader = new BufferedReader(body.charStream());
            String line;
            while ((line = reader.readLine()) != null) {
                // 处理每一行流式响应
                System.out.println("Received: " + line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

📌 注意事项

  1. OkHttp 支持流式响应,适用于 Server-Sent Events(SSE)或流式 JSON。
  2. 如果你使用的是 Spring Boot Web MVC(非 WebFlux),这是目前最推荐的方式。
  3. 如果你需要将这段代码集成进 Spring Boot 应用中,可以封装成一个 @Service
  4. 确保你的网络环境允许访问 ,并确认 token 有效。
  5. 如果 Dify 返回的是 Event Stream(text/event-stream),你可能需要解析 data: 字段。

您可能感兴趣的与本文相关的镜像

Qwen3-VL-30B

Qwen3-VL-30B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值