diff --git a/src/main/java/Tools/MaxKb/Service/Impl/MaxKbImpl.java b/src/main/java/Tools/MaxKb/Service/Impl/MaxKbImpl.java index c1937ddd..b6fec4fa 100644 --- a/src/main/java/Tools/MaxKb/Service/Impl/MaxKbImpl.java +++ b/src/main/java/Tools/MaxKb/Service/Impl/MaxKbImpl.java @@ -1,11 +1,11 @@ package Tools.MaxKb.Service.Impl; +import Tools.MaxKb.Util.MaxKbUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson.JSONArray; import com.jfinal.kit.PropKit; import java.io.File; @@ -48,6 +48,37 @@ public class MaxKbImpl { return jo.getJSONArray("data").getJSONObject(0).getStr("id"); } + /** + * 上传文档并分段 + * + * @param authCode 验证码 + * @param uploadFile 上传的文件 + * @return + */ + public static JSONObject uploadDocumentSplit(String authCode, String uploadFile) { + //知识库url上传地址 + String qaUrl = baseUrl + "/api/dataset/document/split"; + //使用hutool工具箱里面的httpPost功能,向指定的接口发起上传文件的请求,在Header中携带参数authCode + HttpResponse response = HttpRequest.post(qaUrl) + .header("Accept", "application/json, text/plain, */*") + .header("Accept-Encoding", "gzip,deflate") + .header("Accept-Language", "zh-CN,zh;q=0.9") + .header("Authorization", authCode)// 添加header + .header("Connection", "keep-alive") + .header("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryhEiEDpZDka6byweA") + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36") + .form("file", new File(uploadFile)).execute();// 添加文件 + // 获取响应内容 + String result = response.body(); + JSONObject jo = JSONUtil.parseObj(result); + int code = jo.getInt("code"); + if (code != 200) { + System.out.println("请求失败"); + return null; + } + return jo; + } + /** * 发送请求获取识别码 @@ -120,9 +151,10 @@ public class MaxKbImpl { /** * 生成问题 - * @param authCode 身份识别码 - * @param zskId 知识库id - * @param modelId 模型id + * + * @param authCode 身份识别码 + * @param zskId 知识库id + * @param modelId 模型id * @param documentId 文档id * @return */ @@ -134,7 +166,6 @@ public class MaxKbImpl { List list = new ArrayList<>(); list.add(documentId); jo.put("document_id_list", list); - //使用Hutool的PUT调用接口 HttpResponse response = HttpRequest.put(url) .header("Accept", "application/json, text/plain, */*") .header("Accept-Encoding", "gzip,deflate") @@ -146,4 +177,17 @@ public class MaxKbImpl { return com.alibaba.fastjson.JSONObject.parseObject(response.body()); } + + public static String _bach(String authCode, String zskId, String body) { + String url = baseUrl + "/api/dataset/" + zskId + "/document/_bach"; + HttpResponse response = HttpRequest.put(url) + .header("Accept", "application/json, text/plain, */*") + .header("Accept-Encoding", "gzip,deflate") + .header("Accept-Language", "zh-CN,zh;q=0.9") + .header("Authorization", authCode)// 添加header + .header("Connection", "keep-alive") + .header("Content-Type", "application/json") + .body(body).execute(); + return response.body(); + } } diff --git a/src/main/java/Tools/MaxKb/Service/MaxKbService.java b/src/main/java/Tools/MaxKb/Service/MaxKbService.java index 3f78f391..a480e56f 100644 --- a/src/main/java/Tools/MaxKb/Service/MaxKbService.java +++ b/src/main/java/Tools/MaxKb/Service/MaxKbService.java @@ -2,6 +2,8 @@ package Tools.MaxKb.Service; import Tools.MaxKb.Service.Impl.MaxKbImpl; import Tools.MaxKb.Model.MaxKbModel; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.Record; @@ -13,10 +15,11 @@ public class MaxKbService { /** * 上传文件到知识库 + * * @param dataSetName 数据集名称 - * @param uploadFile 文件路径 + * @param uploadFile 文件路径 */ - public static void uploadQA(String dataSetName,String uploadFile) { + public static void uploadQA(String dataSetName, String uploadFile) { List list = mm.getDataSetList(dataSetName); if (list.size() > 1) { System.out.println("数据集:【" + dataSetName + "】名称重复,请检查后重新运行!"); @@ -68,4 +71,25 @@ public class MaxKbService { if (list.isEmpty()) return null; return list.getFirst().getStr("id"); } + + public static JSONObject uploadDocumentSplit(String uploadFile) { + return MaxKbImpl.uploadDocumentSplit(MaxKbImpl.getAuthorization(), uploadFile); + } + + /** + * 上传文档 + */ + public static String _bach(String zskId, String uploadFile) { + //上传文件 + cn.hutool.json.JSONObject jo = uploadDocumentSplit(uploadFile); + JSONArray ja = jo.getJSONArray("data"); + cn.hutool.json.JSONArray jaRes = new JSONArray(); + for (Object o : ja) { + cn.hutool.json.JSONObject j = (cn.hutool.json.JSONObject) (o); + j.set("paragraphs", j.getJSONArray("content")); + j.remove("content"); + jaRes.put(j); + } + return MaxKbImpl._bach(MaxKbImpl.getAuthorization(), zskId, jaRes.toString()); + } } diff --git a/src/main/java/Tools/MaxKb/UploadDocument.java b/src/main/java/Tools/MaxKb/UploadDocument.java new file mode 100644 index 00000000..a65a6f44 --- /dev/null +++ b/src/main/java/Tools/MaxKb/UploadDocument.java @@ -0,0 +1,20 @@ +package Tools.MaxKb; + +import Tools.MaxKb.Service.MaxKbService; +import Tools.MaxKb.Util.MaxKbUtil; +import cn.hutool.json.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jfinal.kit.PropKit; + +public class UploadDocument { + //要上传的文档内容 + static String uploadFile = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\黄海的个人简历.txt"; + + public static void main(String[] args) throws Exception { + //加载配置文件 + PropKit.use("MaxKb.properties"); + //初始化数据库 + MaxKbUtil.Init(); + + } +} \ No newline at end of file diff --git a/src/main/java/Tools/MaxKb/UploadQA.java b/src/main/java/Tools/MaxKb/UploadQA.java index 6c2f95a6..d849ebcb 100644 --- a/src/main/java/Tools/MaxKb/UploadQA.java +++ b/src/main/java/Tools/MaxKb/UploadQA.java @@ -5,7 +5,6 @@ import Tools.MaxKb.Util.MaxKbUtil; import com.jfinal.kit.PropKit; public class UploadQA { - //要上传的QA知识内容 static String uploadFile = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\各学校人员和班级统计【结果】.xlsx"; @@ -18,7 +17,6 @@ public class UploadQA { //获取数据集名称 String dataSetName = "应用【模板】"; MaxKbService.uploadQA(dataSetName,uploadFile); - System.out.println("恭喜,所有操作成功完成!"); } } \ No newline at end of file