package Tools.MaxKb.Service; import Tools.MaxKb.Service.Impl.MaxKbImpl; import Tools.MaxKb.Model.MaxKbModel; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.Record; import java.io.File; import java.util.List; public class MaxKbService { public static MaxKbModel mm = new MaxKbModel(); /** * 上传文件到知识库 * * @param dataSetName 数据集名称 * @param uploadFile 文件路径 */ public static void uploadQA(String dataSetName, String uploadFile) { List list = mm.getDataSetList(dataSetName); if (list.size() > 1) { System.out.println("数据集:【" + dataSetName + "】名称重复,请检查后重新运行!"); return; } if (list.isEmpty()) { System.out.println("数据集:【" + dataSetName + "】不存在,请检查后重新运行!"); return; } //数据集ID String zskId = list.getFirst().getStr("id"); //在上传文档前,需要删除掉旧的同名文档 File fi = new File(uploadFile); String fileName = fi.getName(); //获取身份识别 String authCode = MaxKbImpl.getAuthorization(); //上传文档 List listDocuments = mm.getDocumentListByDataSetId(zskId); for (Record record : listDocuments) { String documentName = record.getStr("name"); if (documentName.equals(fileName)) { String documentId = record.getStr("id"); //1、需要找出根据此文档有哪些已经生成的问题,并且需要删除掉所有已经生成的问题 mm.delDocumentProblem(documentId); //准备删除掉旧的文档 MaxKbImpl.delDocument(authCode, zskId, documentId); System.out.println("删除旧的文档成功:" + documentName); } } //上传新的文档 String documentId = MaxKbImpl.uploadQA(authCode, zskId, uploadFile); //2、需要重新生成问题 String modelName = PropKit.get("modelName"); String model_id = getModelIdByModelName(modelName); //生成问题 MaxKbImpl.generateQuestion(authCode, zskId, model_id, documentId); } /** * 根据模型名称获取模型ID * * @param modelName 模型名称 * @return */ public static String getModelIdByModelName(String modelName) { List list = mm.getModel(modelName); if (list.isEmpty()) return null; return list.getFirst().getStr("id"); } /** * 分割文档 * * @param uploadFile * @return */ public static JSONObject splitDocument(String uploadFile) { return MaxKbImpl.uploadDocumentSplit(MaxKbImpl.getAuthorization(), uploadFile); } /** * 上传文档 */ public static String _bach(String dataSetName, String uploadFile) { List list = mm.getDataSetList(dataSetName); if (list.size() > 1) { System.out.println("数据集:【" + dataSetName + "】名称重复,请检查后重新运行!"); return null; } if (list.isEmpty()) { System.out.println("数据集:【" + dataSetName + "】不存在,请检查后重新运行!"); return null; } //数据集ID String zskId = list.getFirst().getStr("id"); //上传文件 JSONObject jo = splitDocument(uploadFile); JSONArray ja = jo.getJSONArray("data"); JSONArray jaRes = new JSONArray(); for (Object o : ja) { JSONObject j = (JSONObject) (o); j.put("paragraphs", j.getJSONArray("content")); j.remove("content"); jaRes.add(j); } return MaxKbImpl._bach(MaxKbImpl.getAuthorization(), zskId, jaRes.toString()); } /** * 批量生成相关问题 * @param dataSetName 数据集名称 * @param documentId 文档id * @return */ public static String batch_generate_related(String dataSetName, String documentId) { List list = mm.getDataSetList(dataSetName); if (list.size() > 1) { System.out.println("数据集:【" + dataSetName + "】名称重复,请检查后重新运行!"); return null; } if (list.isEmpty()) { System.out.println("数据集:【" + dataSetName + "】不存在,请检查后重新运行!"); return null; } //数据集ID String zskId = list.getFirst().getStr("id"); return MaxKbImpl.batch_generate_related(MaxKbImpl.getAuthorization(), zskId, documentId); } }