UNPKG

aichat-core

Version:

AI 流式聊天业务核心TS模型封装及业务实现模块

186 lines (185 loc) 8.23 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var LLMUtil = (function () { function LLMUtil() { } LLMUtil.truncateName = function (name, maxLength) { if (!name || name === "") { return ""; } if (name.length > maxLength) { return name.slice(0, maxLength - 3).trim() + "..."; } return name; }; LLMUtil.toFormData = function (data) { var formData = new FormData(); for (var key in data) { formData.append(key, data[key]); } return formData; }; LLMUtil.bytesToSize = function (bytes) { if (bytes === 0) return { size: 0, unit: "B" }; var k = 1024; var sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; var i = Math.floor(Math.log(bytes) / Math.log(k)); return { size: parseFloat((bytes / Math.pow(k, i)).toFixed(2)), unit: sizes[i], }; }; LLMUtil.getDateDiff = function (startTime, endTime) { if (!startTime || !endTime) { return ""; } var sTime = new Date(startTime).getTime(); var eTime = new Date(endTime).getTime(); var divNumSecond = 1000; var diff = (eTime - sTime) / divNumSecond; if (diff > 60 && diff / 60 < 60) { var miniute = Math.floor(diff / 60); var second = diff % 60; return second === 0 ? "".concat(miniute, "\u5206\u949F") : "".concat(miniute, "\u5206\u949F,").concat(second, "\u79D2"); } else if (diff > 3600 && diff / 3600 < 24) { var hour = Math.floor(diff / 3600); var minute = Math.floor((diff % 3600) / 60); return minute === 0 ? +"".concat(hour, "\u5C0F\u65F6") : "".concat(hour, "\u5C0F\u65F6,").concat(minute, "\u5206\u949F"); } else { return diff + "秒"; } }; LLMUtil.processContent = function (responseContent, think) { if (think === void 0) { think = true; } var returnContent = responseContent; if (!returnContent) { return ""; } if (think) { var match = responseContent.match(/^<think[^>]*>([\s\S]*?)<\/think>/i); if (match) { returnContent = match[1]; } if (returnContent === responseContent) { returnContent = ""; } } else { returnContent = responseContent.replace(/<think>[\s\S]*?<\/think>/g, ""); } return returnContent.replace("<think>", ""); }; LLMUtil.buildThinkTitle = function (thinkContent, bAnwserOver) { if (thinkContent === "") { return bAnwserOver ? "已回答完毕" : "回复进行中"; } else { return bAnwserOver ? "已深度思考" : "深度思考中"; } }; LLMUtil.processSourceContent = function (responseContent) { var returnContent = responseContent; returnContent = responseContent.replace(/<document_metadata>[\s\S]*?<\/document_metadata>/g, ""); return returnContent.replace("<document_metadata>", ""); }; LLMUtil.convertTimestampToDate = function (timestamp) { if (!timestamp) { timestamp = Date.now(); } else { if (timestamp.toString().length === 13) { } else if (timestamp.toString().length === 10) { timestamp *= 1000; } } var date = new Date(timestamp); var year = date.getFullYear(); var month = String(date.getMonth() + 1).padStart(2, '0'); var day = String(date.getDate()).padStart(2, '0'); var hours = String(date.getHours()).padStart(2, '0'); var minutes = String(date.getMinutes()).padStart(2, '0'); var seconds = String(date.getSeconds()).padStart(2, '0'); return "".concat(year, "-").concat(month, "-").concat(day, " ").concat(hours, ":").concat(minutes, ":").concat(seconds); }; LLMUtil.getTimeKey = function (delay) { if (delay === void 0) { delay = 0; } return Date.now() + delay; }; LLMUtil.file2Base64 = function (file) { return new Promise(function (resolve, reject) { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { var res = reader.result; var base64String = res && res.split(",")[1]; resolve(base64String); }; reader.onerror = function () { reject(new Error("Failed to load file")); }; }); }; LLMUtil.getBase64FromFile = function (file) { return __awaiter(this, void 0, void 0, function () { var base64String, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4, LLMUtil.file2Base64(file)]; case 1: base64String = _a.sent(); return [2, base64String]; case 2: error_1 = _a.sent(); console.error('Error converting file to base64:', error_1); throw error_1; case 3: return [2]; } }); }); }; LLMUtil.getBase64Data = function (base64Str, format) { return "data:".concat(format, ";base64,").concat(base64Str); }; return LLMUtil; }()); export default LLMUtil;