From 0340b24f78882f34c010cd9663da4ede34cca2b3 Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Mon, 3 Mar 2025 18:38:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor(yudao-module-llm):=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=A8=A1=E5=9E=8B=E8=A1=A5=E5=85=A8=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=9A=84=E9=BB=98=E8=AE=A4=E5=8F=82=E6=95=B0=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 max_tokens 参数从 4000调整为 4096 - 将 temperature 参数从0.7 调整为 0.2 - 新增 top_p 参数,默认值为0.9 - 优化了数据处理逻辑,移除了不必要的注释代码 - 调整了 SseEmitter 的心跳检测机制 - 优化了数据解析过程,移除了多余的换行符 --- .../module/llm/service/http/ModelService.java | 43 +++++++++++++++++-- .../http/vo/ModelCompletionsReqVO.java | 8 ++-- 2 files changed, 43 insertions(+), 8 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 9a87fd021..2750ef98c 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 @@ -148,6 +148,9 @@ public class ModelService { */ public ModelCompletionsRespVO modelCompletionsStream (String url, ModelCompletionsReqVO req, SseEmitter emitter, String uuid) { req.setStream(true); + req.setTemperature(0.2); + req.setTop_p(0.9); + req.setMax_tokens(4096); log.info("开始处理模型补全请求"); // 检查模型是否为空,若为空则设置默认模型 @@ -175,6 +178,38 @@ public class ModelService { } + // + // // 解析响应内容 + // log.info("正在解析响应内容..."); + // ChatCompletion chatCompletion = JSON.parseObject(result, ChatCompletion.class); + // + // // 检查响应内容是否包含错误信息 + // if (StringUtils.isBlank(chatCompletion.getDetail())) { + // log.info("响应内容无错误信息,提取回答内容..."); + // + // // 提取回答内容 + // String respContent = chatCompletion.getChoices().get(0).getMessage().getContent(); + // String patternString = "(.*?)"; + // Pattern pattern = Pattern.compile(patternString, Pattern.DOTALL); + // Matcher matcher = pattern.matcher(respContent); + // String answerContent = matcher.replaceAll(""); + // + // // 构建返回对象 + // ModelCompletionsRespVO respVO = new ModelCompletionsRespVO(); + // respVO.setSystem("助手"); + // respVO.setQuestion(req.getMessages().get(req.getMessages().size() - 1).getContent()); + // respVO.setAnswer(answer); + // + // log.info("模型补全请求处理成功。返回结果: {}", JSON.toJSONString(respVO)); + // return respVO; + // + // } else { + // log.warn("响应内容包含错误信息,返回 null"); + // return null; + // } + // return null; + + // 构建返回对象 ModelCompletionsRespVO respVO = new ModelCompletionsRespVO(); respVO.setSystem("助手"); respVO.setQuestion(req.getMessages().get(req.getMessages().size() - 1).getContent()); @@ -249,6 +284,7 @@ public class ModelService { } log.info("接收到的响应行数据: {}", line); + line = line.replaceAll("\n", " "); String content = parseStreamLine(line, uuid); if (content != null) { emitter.send( @@ -263,8 +299,9 @@ public class ModelService { } // // 心跳检测 -// if (System.currentTimeMillis() - lastSendTime > MAX_IDLE_TIME && !result.toString().isEmpty()) { -// emitter.send("[HEARTBEAT]"); +// if (System.currentTimeMillis() - lastSendTime > 15_000) { +// emitter.send(SseEmitter.event().comment("heartbeat")); +// lastSendTime = System.currentTimeMillis(); // } } emitter.complete(); @@ -285,7 +322,7 @@ public class ModelService { if (StringUtils.isNotBlank(line)) { if (line.startsWith("data: ")) { String dataString = extractJsonFromDataString(line); - if (!dataString.contains("[DONE]")||!dataString.contains("")) { + if (!dataString.contains("[DONE]")) { JSONObject jsonObject = JSON.parseObject(dataString); // 获取 choices 数组 JSONArray choicesArray = jsonObject.getJSONArray("choices"); diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java index f66e5ee46..2565816fc 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/ModelCompletionsReqVO.java @@ -15,12 +15,10 @@ public class ModelCompletionsReqVO { private String model; private List messages; - private Integer max_tokens = 4000; - private Double temperature = 0.7; -// private Integer max_tokens; -// private Double temperature; + private Integer max_tokens = 4096; + private Double temperature = 0.2; + private Double top_p = 0.9; private Boolean stream; -// private Integer max_length = 120000; @Data @NoArgsConstructor