From 1138058d7405783d364ed1db223716d8007fce96 Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Wed, 5 Mar 2025 17:23:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(llm):=20=E4=B8=BA=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E8=AF=B7=E6=B1=82=E6=B7=BB=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E7=BB=84=20ID=20=E5=8F=82=E6=95=B0-=20=E5=9C=A8=20modelComplet?= =?UTF-8?q?ionsStream=20=E6=96=B9=E6=B3=95=E4=B8=AD=E6=B7=BB=E5=8A=A0=20gr?= =?UTF-8?q?oupId=20=E5=8F=82=E6=95=B0=20-=20=E5=B0=86=20groupId=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BC=A0=E9=80=92=E7=BB=99=20sendPostRequest?= =?UTF-8?q?=20=E5=92=8C=20handleResponseEntity=20=E6=96=B9=E6=B3=95=20-=20?= =?UTF-8?q?=E5=9C=A8=20parseStreamLine=20=E6=96=B9=E6=B3=95=E4=B8=AD?= =?UTF-8?q?=E4=B8=BA=20ChatReqVO=20=E5=AF=B9=E8=B1=A1=E6=B7=BB=E5=8A=A0=20?= =?UTF-8?q?groupId=20=E5=AD=97=E6=AE=B5=20-=20=E4=BC=98=E5=8C=96=E4=BA=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BA=86=E9=83=A8=E5=88=86=E7=BC=A9=E8=BF=9B=E5=92=8C=E7=A9=BA?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/llm/service/http/ModelService.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java index 2750ef98c..03900dd15 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/ModelService.java @@ -146,7 +146,7 @@ public class ModelService { * @param url 模型服务的 URL * @param req 模型补全请求对象 */ - public ModelCompletionsRespVO modelCompletionsStream (String url, ModelCompletionsReqVO req, SseEmitter emitter, String uuid) { + public ModelCompletionsRespVO modelCompletionsStream (String url, ModelCompletionsReqVO req, SseEmitter emitter, String uuid, String groupId) { req.setStream(true); req.setTemperature(0.2); req.setTop_p(0.9); @@ -168,11 +168,11 @@ public class ModelService { log.info("使用指定URL: {}", url); } - String answer=""; + String answer = ""; try { String jsonString = JSON.toJSONString(req); log.info("开始处理模型补全请求,参数3: {}", jsonString); - answer= sendPostRequest(url, jsonString, emitter, uuid); + answer = sendPostRequest(url, jsonString, emitter, uuid, groupId); } catch (Exception e) { emitter.completeWithError(e); @@ -225,7 +225,7 @@ public class ModelService { * @param requestBody 请求体内容 * @throws IOException 发送请求或处理响应时可能抛出的 IO 异常 */ - private String sendPostRequest (String apiUrl, String requestBody, SseEmitter emitter, String uuid) throws IOException { + private String sendPostRequest (String apiUrl, String requestBody, SseEmitter emitter, String uuid, String groupId) throws IOException { // 创建 HttpClient 实例 HttpClient httpClient = HttpClients.createDefault(); @@ -239,7 +239,7 @@ public class ModelService { HttpResponse response = httpClient.execute(httpPost); // 处理响应实体 - return handleResponseEntity(response, emitter, uuid); + return handleResponseEntity(response, emitter, uuid, groupId); } /** @@ -269,7 +269,7 @@ public class ModelService { * * @param response HttpResponse 对象 */ - private String handleResponseEntity (HttpResponse response, SseEmitter emitter, String uuid) { + private String handleResponseEntity (HttpResponse response, SseEmitter emitter, String uuid, String groupId) { StringBuilder result = new StringBuilder(); // 获取响应实体 HttpEntity responseEntity = response.getEntity(); @@ -285,7 +285,7 @@ public class ModelService { log.info("接收到的响应行数据: {}", line); line = line.replaceAll("\n", " "); - String content = parseStreamLine(line, uuid); + String content = parseStreamLine(line, uuid, groupId); if (content != null) { emitter.send( SseEmitter.event() @@ -294,15 +294,15 @@ public class ModelService { log.info("已发送数据:{}", content); } ChatReqVO chatReqVO = JSONObject.parseObject(content, ChatReqVO.class); - if (content!=null){ + if (content != null) { result.append(chatReqVO.getContent()); } -// // 心跳检测 -// if (System.currentTimeMillis() - lastSendTime > 15_000) { -// emitter.send(SseEmitter.event().comment("heartbeat")); -// lastSendTime = System.currentTimeMillis(); -// } + // // 心跳检测 + // if (System.currentTimeMillis() - lastSendTime > 15_000) { + // emitter.send(SseEmitter.event().comment("heartbeat")); + // lastSendTime = System.currentTimeMillis(); + // } } emitter.complete(); } catch (IOException e) { @@ -318,7 +318,7 @@ public class ModelService { * @param line 流式响应中的单行JSON数据 * @return 处理后的文本内容(若无有效内容返回null) */ - private String parseStreamLine (String line, String uuid) { + private String parseStreamLine (String line, String uuid, String groupId) { if (StringUtils.isNotBlank(line)) { if (line.startsWith("data: ")) { String dataString = extractJsonFromDataString(line); @@ -337,6 +337,7 @@ public class ModelService { content = content.replaceAll("\n", " "); ChatReqVO chatReqVO = new ChatReqVO(); chatReqVO.setUuid(""); + chatReqVO.setGroupId(""); chatReqVO.setContent(content); chatReqVO.setFinish_reason(false); return JSON.toJSONString(chatReqVO); @@ -346,6 +347,7 @@ public class ModelService { ChatReqVO chatReqVO = new ChatReqVO(); chatReqVO.setUuid(uuid); + chatReqVO.setGroupId(groupId); chatReqVO.setContent(""); chatReqVO.setFinish_reason(true); return JSON.toJSONString(chatReqVO);