From c7e4e71e48777f1257d4ba7f12b76931a9a47576 Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Thu, 20 Feb 2025 14:02:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(module-llm):=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E5=90=91=E9=87=8F=E5=B5=8C=E5=85=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -移除了 try-catch 块,简化了错误处理逻辑 - 在 KnowledgeRagEmbedReqVO 中添加了 fileBytes 字段 - 引入了 okhttp3 和 ok2curl 依赖,用于生成 curl 命令 - 在 RagHttpService 中添加了详细的日志记录,包括请求参数、生成的 curl 命令和响应内容 - 优化了代码结构,提高了可读性和可维护性 --- yudao-module-llm/yudao-module-llm-biz/pom.xml | 10 +++++ .../llm/service/async/AsyncKnowledgeBase.java | 27 +++++------- .../llm/service/http/RagHttpService.java | 41 +++++++++++++++---- .../http/vo/KnowledgeRagEmbedReqVO.java | 5 +++ 4 files changed, 59 insertions(+), 24 deletions(-) diff --git a/yudao-module-llm/yudao-module-llm-biz/pom.xml b/yudao-module-llm/yudao-module-llm-biz/pom.xml index 60434ecbf..d5f728ca3 100644 --- a/yudao-module-llm/yudao-module-llm-biz/pom.xml +++ b/yudao-module-llm/yudao-module-llm-biz/pom.xml @@ -97,6 +97,16 @@ portable-1.3.4 + + com.squareup.okhttp3 + okhttp + + + + com.github.mrmike + ok2curl + 0.4.5 + diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncKnowledgeBase.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncKnowledgeBase.java index f0a96c749..ab837341a 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncKnowledgeBase.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/async/AsyncKnowledgeBase.java @@ -103,25 +103,20 @@ public class AsyncKnowledgeBase { */ public void knowledgeEmbed (KnowledgeDocumentsDO knowledge, Long id) { - try { + // TODO:本地调试时打开 + // String tmpUrl = "http://xhllm.xinnuojinzhi.com/admin-api/infra/file/29/get/ca3d06d24f80c127ec0300408a035176f5e0bf90ce319fda17018303226e2298.doc"; + // log.info("knowledge url {}", tmpUrl); + // knowledge.setFileUrl(tmpUrl); - // TODO:本地调试时打开 -// String tmpUrl = "http://xhllm.xinnuojinzhi.com/admin-api/infra/file/29/get/ca3d06d24f80c127ec0300408a035176f5e0bf90ce319fda17018303226e2298.doc"; -// log.info("knowledge url {}", tmpUrl); -// knowledge.setFileUrl(tmpUrl); + // 创建知识向量 + KnowledgeRagEmbedReqVO ragEmbedReqVo = new KnowledgeRagEmbedReqVO() + .setFileId(String.valueOf(knowledge.getId())) + .setFileName(knowledge.getDocumentName()) + .setFileInputStream(new ByteArrayInputStream(Objects.requireNonNull(getFileByte(knowledge.getFileUrl())))) + .setFileBytes(getFileByte(knowledge.getFileUrl())); - // 创建知识向量 - KnowledgeRagEmbedReqVO ragEmbedReqVo = new KnowledgeRagEmbedReqVO() - .setFileId(String.valueOf(knowledge.getId())) - .setFileName(knowledge.getDocumentName()) - .setFileInputStream(new ByteArrayInputStream(Objects.requireNonNull(getFileByte(knowledge.getFileUrl())))); + ragHttpService.knowledgeEmbed(ragEmbedReqVo, id); - ragHttpService.knowledgeEmbed(ragEmbedReqVo, id); - - } catch (Exception e) { - log.error("the creation of the knowledge base error : {}", e.getMessage()); - throw e; - } } /** diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java index c4f9592b5..1537b301e 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/RagHttpService.java @@ -21,8 +21,9 @@ import kong.unirest.HttpResponse; import kong.unirest.Unirest; import kong.unirest.UnirestException; import lombok.extern.slf4j.Slf4j; +import okhttp3.*; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; -import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; @@ -152,19 +153,34 @@ public class RagHttpService { inputStream.close(); // 关闭InputStream outputStream.close(); // 关闭ByteArrayOutputStream + String ragEmbed = ragUploadReqVO.getUrl(); + log.info("知识库向量嵌入接口URL: {}", ragEmbed); + + // 打印请求参数 + log.info("请求参数 - file_id: {}", ragUploadReqVO.getFileId()); + log.info("请求参数 - file: {}", ragUploadReqVO.getFileName()); + + // 生成并打印 curl 命令 + String curlCommand = String.format("curl -X POST -F \"file_id=%s\" -F \"file=@%s\" \"%s\"", ragUploadReqVO.getFileId(), ragUploadReqVO.getFileName(), ragEmbed); + log.info("生成的 curl 命令: {}", curlCommand); + + String body = HttpRequest.post(ragUploadReqVO.getUrl()) .form("file", result, ragUploadReqVO.getFileName()) .form("file_id", ragUploadReqVO.getFileId()) .execute().body(); -// // 发送上传请求 -// HttpResponse uploadResponse = Unirest.post(ragUploadReqVO.getUrl()) -// .field("file_id", ragUploadReqVO.getFileId()) -// .field("file", new ByteArrayInputStream(utf8Bytes), ragUploadReqVO.getFileName()) -// .asString(); + // 打印响应内容 + + log.info("响应原始内容: {}", body); + // // 发送上传请求 + // HttpResponse uploadResponse = Unirest.post(ragUploadReqVO.getUrl()) + // .field("file_id", ragUploadReqVO.getFileId()) + // .field("file", new ByteArrayInputStream(utf8Bytes), ragUploadReqVO.getFileName()) + // .asString(); // 检查响应状态 -// log.info("Response Body: {}", uploadResponse.getBody()); + // log.info("Response Body: {}", uploadResponse.getBody()); ragEmbedRespVO = JSON.parseObject(body, RagEmbedRespVO.class); log.info("ragEmbedRespVO:{}", ragEmbedRespVO); @@ -340,7 +356,7 @@ public class RagHttpService { if (parseObject.containsKey("status") && parseObject.getBoolean("status")) { // 修改状态为 上传成功 updateFileState(documents, KnowledgeStatusEnum.UPLOAD_SUCCESS); - } else { + } else { String errorMsg = parseObject.getString("error"); updateFileState(documents, KnowledgeStatusEnum.UPLOAD_FAILED); throw exception(new ErrorCode(10047, errorMsg)); @@ -360,6 +376,15 @@ public class RagHttpService { throw new RuntimeException(errorMsg); } + /** + * 处理失败逻辑 + */ + private void handleFailure (KnowledgeDocumentsDO documents, String errorMsg) { + updateFileState(documents, KnowledgeStatusEnum.UPLOAD_FAILED); + log.error("Exception {} : {}", FILE_UPLOAD_FAILED_MSG, errorMsg); + throw new RuntimeException(errorMsg); + } + /** * 重置 Unirest 连接 */ diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/KnowledgeRagEmbedReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/KnowledgeRagEmbedReqVO.java index d10ba1dde..2652d3b86 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/KnowledgeRagEmbedReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/http/vo/KnowledgeRagEmbedReqVO.java @@ -31,4 +31,9 @@ public class KnowledgeRagEmbedReqVO { * 文件流 */ private ByteArrayInputStream fileInputStream; + + /** + * 文件字节数组 + */ + private byte[] fileBytes; }