From e05aeaaa5df0cabd34c982530011578a99a16ac8 Mon Sep 17 00:00:00 2001
From: qfrjava <13402782+qfrjava@user.noreply.gitee.com>
Date: 星期五, 11 四月 2025 10:48:04 +0800
Subject: [PATCH] feat(javaai): 实现 Qwen Agent LightRAG 并移除 RAGGraph

---
 /dev/null                                                                                              |   65 ---------------------
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentLightRAG.java |  111 +++++++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+), 65 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentLightRAG.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentLightRAG.java
new file mode 100644
index 0000000..dd578ae
--- /dev/null
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentLightRAG.java
@@ -0,0 +1,111 @@
+package com.smtaiserver.smtaiserver.javaai.qwen.agent;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.smtaiserver.smtaiserver.core.SMTAIServerApp;
+import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
+import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
+import com.smtaiserver.smtaiserver.javaai.SMTJavaAIError;
+import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
+import com.smtservlet.util.Json;
+import com.smtservlet.util.SMTJsonWriter;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+import javax.servlet.http.HttpServletResponse;
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
+public class SMTQwenAgentLightRAG extends SMTQwenAgent
+{
+
+	@Override
+	public void initInstance(DBRecord rec) throws Exception
+	{
+		super.initInstance(rec);
+
+	}
+
+	@Override
+	public SMTJavaAIError callAgents(String jsonPath, Json jsonArgs, SMTLLMConnect llm, String question, SMTAIServerRequest tranReq) throws Exception
+	{
+		SMTJsonWriter jsonWrResult = tranReq.getResultJsonWr();
+
+		StringBuilder sbAnswer = new StringBuilder();
+		SMTJavaAIError error = callRAGServer(question, tranReq, sbAnswer);
+		if(error != null)
+			return error;
+		jsonWrResult.addKeyValue("json_ok", true);
+		jsonWrResult.addKeyValue("answer_type", "knowledge");
+		jsonWrResult.beginArray("knowledge");
+		{
+			jsonWrResult.beginMap(null);
+			jsonWrResult.addKeyValue("answer", sbAnswer.toString());
+			jsonWrResult.endMap();
+		}
+		jsonWrResult.endArray();
+		return null;
+	}
+
+
+
+	private SMTJavaAIError callRAGServer(String question, SMTAIServerRequest tranReq, StringBuilder sbAnswer) throws Exception {
+		OkHttpClient okHttpClient = new OkHttpClient.Builder()
+				.readTimeout(0, TimeUnit.SECONDS) // 涓嶈秴鏃讹紝鏀寔娴�
+				.build();
+		HttpServletResponse response = tranReq.getResponse();
+		response.setContentType("application/json");
+		response.setCharacterEncoding("UTF-8");
+
+		SMTJsonWriter jsonWriter = new SMTJsonWriter(false);
+		jsonWriter.addKeyValue("query",question);
+		String json = jsonWriter.getRootJson().toString();
+
+		RequestBody body = RequestBody.create(MediaType.parse("application/json"), json);
+		String lightragQueyStream = (String)SMTAIServerApp.getApp().getGlobalConfig("lightrag_quey_stream");
+		Request request = new Request.Builder()
+				.url(lightragQueyStream)
+				.post(body)
+				.build();
+		tranReq.sendChunkedBlock("begin_stream", "");
+		ObjectMapper objectMapper = new ObjectMapper(); // 鐢ㄤ簬瑙f瀽 JSON
+		try (Response lightRagResp = okHttpClient.newCall(request).execute()) {
+			if (lightRagResp.body() != null) {
+				BufferedReader reader = new BufferedReader(new InputStreamReader(lightRagResp.body().byteStream(), StandardCharsets.UTF_8));
+				String line;
+				while ((line = reader.readLine()) != null) {
+					try {
+						// 姣忚鏄� {"response": "xxx"}锛屾垜浠彧鍙栧嚭 "xxx"
+						JsonNode node = objectMapper.readTree(line);
+						String content = node.get("response").asText(); // 鑷姩澶勭悊缂栫爜闂锛岃繑鍥炵殑鏄腑鏂�
+
+						// 閫愬瓧绗︽帹閫�
+						for (char ch : content.toCharArray()) {
+							tranReq.sendChunkedStreamBlock(com.smtservlet.util.SMTStatic.toString(ch));
+							sbAnswer.append(ch);
+							Thread.sleep(50);
+						}
+
+					} catch (Exception e) {
+						System.err.println("瑙f瀽澶辫触锛�" + line);
+					}
+				}
+			}
+		} catch (Exception e) {
+			String errMsg = "璋冪敤 LightRAG 澶辫触: " + e.getMessage();
+			for (char ch : errMsg.toCharArray()) {
+				tranReq.sendChunkedStreamBlock(com.smtservlet.util.SMTStatic.toString(ch));
+				sbAnswer.append(ch);
+			}
+		} finally {
+			tranReq.sendChunkedBlock("end_stream", "");
+		}
+
+		return null;
+	}
+
+}
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentRAGGraph.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentRAGGraph.java
deleted file mode 100644
index 83b178c..0000000
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/javaai/qwen/agent/SMTQwenAgentRAGGraph.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.smtaiserver.smtaiserver.javaai.qwen.agent;
-
-import com.smtaiserver.smtaiserver.core.SMTAIServerRequest;
-import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecord;
-import com.smtaiserver.smtaiserver.javaai.SMTJavaAIError;
-import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
-import com.smtservlet.util.Json;
-import com.smtservlet.util.SMTJsonWriter;
-
-public class SMTQwenAgentRAGGraph extends SMTQwenAgent 
-{
-
-	@Override
-	public void initInstance(DBRecord rec) throws Exception
-	{
-		super.initInstance(rec);
-		
-	}
-	
-	@Override
-	public SMTJavaAIError callAgents(String jsonPath, Json jsonArgs, SMTLLMConnect llm, String question, SMTAIServerRequest tranReq) throws Exception 
-	{
-		SMTJsonWriter jsonWrResult = tranReq.getResultJsonWr();
-		
-		StringBuilder sbAnswer = new StringBuilder();
-		SMTJavaAIError error = callRAGServer(question, tranReq, sbAnswer);
-		if(error != null)
-			return error;
-		jsonWrResult.addKeyValue("json_ok", true);
-		jsonWrResult.addKeyValue("answer_type", "knowledge");
-		jsonWrResult.beginArray("knowledge");
-		{
-			jsonWrResult.beginMap(null);
-			jsonWrResult.addKeyValue("answer", sbAnswer.toString());
-			jsonWrResult.endMap();
-		}
-		jsonWrResult.endArray();
-		return null;
-	}
-	
-	private SMTJavaAIError callRAGServer(String question, SMTAIServerRequest tranReq, StringBuilder sbAnswer) throws Exception
-	{
-		String answer = "ABCDEFGHIJKLM";
-		
-		tranReq.sendChunkedBlock("begin_stream", "");
-		try
-		{
-			for(int i = 0; i < answer.length(); i ++)
-			{
-				char ch = answer.charAt(i);
-				tranReq.sendChunkedStreamBlock(com.smtservlet.util.SMTStatic.toString(ch));
-				sbAnswer.append(ch);
-				
-				Thread.sleep(1000);
-			}
-		}
-		finally
-		{
-			tranReq.sendChunkedBlock("end_stream", "");
-		}
-		
-		return null;
-	}
-
-}

--
Gitblit v1.9.3