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