From 51877df13075ad10ef51107f15bcd21f1661febe Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 17 三月 2026 09:48:01 +0800
Subject: [PATCH] #AI
---
rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
index b41bb2d..53c9066 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/ai/service/AiGatewayClient.java
@@ -8,6 +8,7 @@
import javax.annotation.Resource;
import java.io.BufferedReader;
+import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
@@ -24,11 +25,20 @@
private ObjectMapper objectMapper;
public interface StreamCallback {
+ /**
+ * 澶勭悊缃戝叧杩斿洖鐨勪竴鏉� NDJSON 浜嬩欢銆�
+ * 杩斿洖 true 琛ㄧず缁х画娑堣垂鍚庣画浜嬩欢锛岃繑鍥� false 琛ㄧず涓诲姩鍋滄鏈娴佽鍙栥��
+ */
boolean handle(JsonNode event) throws Exception;
}
+ /**
+ * 璋冪敤 AI 缃戝叧鐨勫唴閮ㄦ祦寮忔帴鍙o紝骞跺皢缃戝叧杩斿洖鐨勪簨浠堕�愭潯鍥炶皟缁欎笂灞傜紪鎺掗�昏緫銆�
+ * 杩欓噷灞忚斀浜� HTTP 缁嗚妭锛岃皟鐢ㄦ柟鍙渶瑕佸叧娉� delta / done / error 浜嬩欢鏈韩銆�
+ */
public void stream(GatewayChatRequest request, StreamCallback callback) throws Exception {
HttpURLConnection connection = null;
+ boolean terminalEventReceived = false;
try {
String url = aiProperties.getGatewayBaseUrl() + "/internal/chat/stream";
connection = (HttpURLConnection) new URL(url).openConnection();
@@ -53,10 +63,17 @@
continue;
}
JsonNode event = objectMapper.readTree(line);
+ String type = event.path("type").asText();
+ if ("done".equals(type) || "error".equals(type)) {
+ terminalEventReceived = true;
+ }
if (!callback.handle(event)) {
break;
}
}
+ }
+ if (!terminalEventReceived) {
+ throw new IOException("AI缃戝叧娴佸紓甯镐腑鏂�");
}
} finally {
if (connection != null) {
@@ -66,3 +83,4 @@
}
}
+
--
Gitblit v1.9.1