From 588202311c298f4afa48e3dd3b6d4f6157bf042c Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 20 May 2025 16:02:38 +0800 Subject: [PATCH] =?UTF-8?q?TASK:LLM=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ai/da/service/LLMService.java | 2 +- .../ai/da/service/impl/LLMServiceImpl.java | 40 +++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/ai/da/service/LLMService.java b/src/main/java/com/ai/da/service/LLMService.java index 016e033c..807817a6 100644 --- a/src/main/java/com/ai/da/service/LLMService.java +++ b/src/main/java/com/ai/da/service/LLMService.java @@ -31,7 +31,7 @@ import java.util.Set; */ public interface LLMService { - SseEmitter stream(String prompt, Long projectId, String fileUrl, List imageUrlList, String token); + SseEmitter stream(String prompt, Long projectId, String fileUrl, List imageUrlList, String token, Boolean enableThinking); Long chatCreateProject(String prompt, String process); diff --git a/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java b/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java index 0ac23ca2..0e410777 100644 --- a/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LLMServiceImpl.java @@ -19,6 +19,7 @@ import com.ai.da.service.DesignService; import com.ai.da.service.LLMService; import com.ai.da.service.SysFileService; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -36,10 +37,7 @@ import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -69,7 +67,7 @@ public class LLMServiceImpl implements LLMService { private final ExecutorService executor = Executors.newCachedThreadPool(); @Override - public SseEmitter stream(String prompt, Long projectId, String fileUrl, List imageUrlList, String token) { + public SseEmitter stream(String prompt, Long projectId, String fileUrl, List imageUrlList, String token, Boolean enableThinking) { SseEmitter emitter = new SseEmitter(0L); // 永不超时 executor.submit(() -> { @@ -89,11 +87,11 @@ public class LLMServiceImpl implements LLMService { JSONObject jsonBodyObject = new JSONObject(); jsonBodyObject.put("project_id", projectId.toString()); jsonBodyObject.put("role", "user"); -// jsonBodyObject.put("image", !CollectionUtils.isEmpty(imageUrlList) ? imageUrlList : ""); // 可扩展 - jsonBodyObject.put("image", ""); // 可扩展 - jsonBodyObject.put("file", fileUrl != null ? fileUrl : ""); + jsonBodyObject.put("image", !CollectionUtils.isEmpty(imageUrlList) ? imageUrlList : null); // 可扩展 +// jsonBodyObject.put("image", ""); // 可扩展 + jsonBodyObject.put("file", fileUrl != null ? Collections.singletonList(fileUrl) : null); jsonBodyObject.put("message", prompt); - jsonBodyObject.put("enable_thinking", false); + jsonBodyObject.put("enable_thinking", enableThinking); // 1. 存储用户输入 ChatMessage userMessage = new ChatMessage(); @@ -334,10 +332,28 @@ public class LLMServiceImpl implements LLMService { if (record.getRole().equals("user")) { String content = record.getContent(); JSONObject jsonObject = JSONObject.parseObject(content); - String file = jsonObject.getString("file"); - if (!StringUtils.isEmpty(file)) { - jsonObject.put("file", minioUtil.getPreSignedUrl(file, 24 * 60)); + JSONArray fileArray = jsonObject.getJSONArray("file"); + if (!CollectionUtils.isEmpty(fileArray)) { + for (int i = 0; i < fileArray.size(); i++) { + String string = fileArray.getString(i); + if (!StringUtils.isEmpty(string)) { + fileArray.set(i, minioUtil.getPreSignedUrl(string, 24 * 60)); + } + } + jsonObject.put("file", fileArray); } + + JSONArray imageArray = jsonObject.getJSONArray("image"); + if (!CollectionUtils.isEmpty(imageArray)) { + for (int i = 0; i < imageArray.size(); i++) { + String string = imageArray.getString(i); + if (!StringUtils.isEmpty(string)) { + imageArray.set(i, minioUtil.getPreSignedUrl(string, 24 * 60)); + } + } + jsonObject.put("image", imageArray); + } + record.setContent(JSONObject.toJSONString(jsonObject)); } } return PageBaseResponse.success(chatMessagePage);