| | |
| | | import java.io.ByteArrayOutputStream;
|
| | | import java.io.File;
|
| | | import java.io.InputStream;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.HashSet;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.*;
|
| | | import java.util.Map.Entry;
|
| | | import java.util.Set;
|
| | | import javax.servlet.http.HttpServletRequest;
|
| | | import javax.servlet.http.HttpServletResponse;
|
| | |
|
| | |
| | | {
|
| | | for(MultipartFile file : files)
|
| | | {
|
| | | String fileId = SMTStatic.newUUID();
|
| | | String fileText=null;
|
| | | String fileSuffix = (String) SMTAIServerApp.getApp().getGlobalConfig("file_suffix", false);
|
| | | String fileName = new File(file.getOriginalFilename()).getName();
|
| | | byte[] fileData = readAttachFile(file);
|
| | | String fileText = new String(fileData, "UTF-8");
|
| | | if (fileSuffix.contains(fileName.substring(fileName.lastIndexOf(".") + 1))) {
|
| | | fileText = SMTAIServerApp.fileTranslTxt(file);
|
| | | }else {
|
| | | fileText = new String(fileData, "UTF-8");
|
| | | }
|
| | | String fileId = SMTStatic.newUUID();
|
| | | db.executeSQL(
|
| | | " INSERT INTO chat_history_attach(attach_id, attach_type, attach_title, attach_bytes)"
|
| | | + " VALUES(?,?,?,?)", new Object[] {
|
| | |
| | |
|
| | | return tranReq.returnJson(jsonWr);
|
| | | }
|
| | | |
| | | public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception |
| | |
|
| | | public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception
|
| | | {
|
| | | String llmId = tranReq.convParamToString("llm_id", false);
|
| | | Json jsonSystems = tranReq.convParamToJson("system_json", false);
|
| | | String question = tranReq.convParamToString("question", true);
|
| | | boolean answerIsJson = tranReq.convParamToBoolean("answer_is_json", true);
|
| | | |
| | | |
| | |
|
| | |
|
| | | SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null);
|
| | | SMTLLMConnect conn = SMTAIServerApp.getApp().allocLLMConnect(llmId);
|
| | | |
| | |
|
| | | List<String> listSystem = new ArrayList<>();
|
| | | |
| | |
|
| | | if(jsonSystems != null)
|
| | | {
|
| | | for(Json jsonSystem : jsonSystems.asJsonList())
|
| | |
| | | listSystem.add(jsonSystem.asString());
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | String answer = conn.callWithMessage(listSystem, question, tranReq);
|
| | | if(answerIsJson)
|
| | | {
|
| | |
| | |
|
| | | return tranReq.returnJson(jsonWr);
|
| | | }
|
| | |
|
| | | public void downloadFileByFileId(SMTAIServerRequest tranReq, HttpServletResponse response) throws Exception {
|
| | | String fileId = tranReq.convParamToString("file_id", true); // 获取请求中的file_id
|
| | | SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
|
| | |
| | | // 获取文件信息
|
| | | DBRecord fileRecord = dbRecords.getRecords().get(0);
|
| | | String attachTitle = fileRecord.getString("attach_title"); // 获取文件标题
|
| | | String attachBytes = fileRecord.getString("attach_bytes");
|
| | | byte[] bytes = attachBytes.getBytes();
|
| | |
|
| | | // 获取文件的字节数据,假设返回的是字节数组
|
| | | byte[] bytes = (byte[]) fileRecord.getValue("attach_bytes"); // 获取字节数据
|
| | |
|
| | | // 设置响应头和文件名
|
| | | String fileName = attachTitle != null ? attachTitle : "downloaded_file";
|
| | | response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
|
| | | response.setContentType("application/octet-stream");
|
| | | response.getOutputStream().write(bytes);
|
| | | response.getOutputStream().flush();
|
| | | response.getOutputStream().write(bytes); // 写入字节数据
|
| | | response.getOutputStream().flush();
|
| | | } catch (Exception e) {
|
| | | throw new Exception("Error processing file download: " + e.getMessage());
|
| | | }
|
| | | }
|
| | |
|
| | | }
|