aichat-core
Version:
AI 流式聊天业务核心TS模型封装及业务实现模块
186 lines (185 loc) • 8.23 kB
JavaScript
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;