This commit is contained in:
vastxie
2024-07-07 13:09:08 +08:00
parent 086e5aed3c
commit 4fef3663e4
1131 changed files with 11143 additions and 10769 deletions

View File

@@ -1,41 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileNetwork = void 0;
const axios_1 = require("axios");
function formatSearchData(searchData, question) {
const formatStr = searchData.results.map(({ title, body, href }) => `'${title}' : ${body} ; (${href})`).join('\n\n');
const currentDate = new Date().toISOString().split('T')[0];
const instructions = '你的任务是优先利用网络搜索结果来回答问题,并使用提问时的语言风格进行回复。你应该提供一个全面而有条理的回答,在每条答案后面明确指出来源于哪个链接,使用 [[数字](链接)] 格式进行标注。以下是搜索结果:';
return `${instructions}\n今天是${currentDate}\n${formatStr}`;
}
async function compileNetwork(question) {
const currentDate = new Date().toISOString().split('T')[0];
console.log(`Current date: ${currentDate}`);
console.log(`开始对问题“${question}”进行网络编译`);
const datedQuestion = `${currentDate} ${question}`;
let searchData = { results: [] };
try {
const url = ``;
console.log(`正在向搜索API发送请求URL为${url}`);
const responseData = await axios_1.default.get(url);
searchData = responseData.data;
console.log(`已成功接收问题“${question}”的搜索结果,结果数量:${searchData.results.length}`);
searchData.results.forEach((result, index) => {
console.log(`结果 ${index + 1}: 标题: ${result.title}, 链接: ${result.href}, 摘要: ${result.body.substring(0, 100)}...`);
});
}
catch (error) {
console.log(`在对问题“${question}”进行网络编译时出错:`, error);
}
let formattedData = "";
if (searchData.results.length === 0) {
console.log(`未找到问题“${question}”的搜索结果,将返回原问题`);
return question;
}
else {
formattedData = formatSearchData(searchData, question);
console.log(`格式化后的搜索结果为:\n${formattedData}`);
return formattedData;
}
}
exports.compileNetwork = compileNetwork;

11
dist/common/utils/fromatUrl.js vendored Normal file
View File

@@ -0,0 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatUrl = void 0;
function formatUrl(url) {
let formattedUrl = url.replace(/\s+/g, '');
if (formattedUrl.endsWith('/')) {
formattedUrl = formattedUrl.slice(0, -1);
}
return formattedUrl;
}
exports.formatUrl = formatUrl;

View File

@@ -1,43 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getClientIp = void 0;
function getClientIp(request) {
let ipAddress = '';
const headerList = [
'X-Client-IP',
'X-Real-IP',
'X-Forwarded-For',
'CF-Connecting-IP',
'True-Client-IP',
'X-Cluster-Client-IP',
'Proxy-Client-IP',
'WL-Proxy-Client-IP',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
];
for (const header of headerList) {
const value = request.headers[header];
if (value && typeof value === 'string') {
const ips = value.split(',');
ipAddress = ips[0].trim();
break;
}
function getFirstValidIp(ipString) {
const ips = ipString.split(',').map(ip => ip.trim());
return ips.find(ip => isValidIp(ip)) || '';
}
function isValidIp(ip) {
return /^\d{1,3}(\.\d{1,3}){3}$/.test(ip) || /^::ffff:\d{1,3}(\.\d{1,3}){3}$/.test(ip);
}
function getClientIp(req) {
const forwardedFor = req.header('x-forwarded-for');
let clientIp = forwardedFor ? getFirstValidIp(forwardedFor) : '';
if (!clientIp) {
clientIp = req.connection.remoteAddress || req.socket.remoteAddress || '';
}
if (!ipAddress) {
ipAddress = request.connection.remoteAddress || '';
if (clientIp.startsWith('::ffff:')) {
clientIp = clientIp.substring(7);
}
if (ipAddress && ipAddress.includes('::')) {
const isLocal = /^(::1|fe80(:1)?::1(%.*)?)$/i.test(ipAddress);
if (isLocal) {
ipAddress = '';
}
else if (ipAddress.includes('::ffff:')) {
ipAddress = ipAddress.split(':').pop() || '';
}
}
if (!ipAddress || !/\d+\.\d+\.\d+\.\d+/.test(ipAddress)) {
ipAddress = '';
}
return ipAddress;
return clientIp;
}
exports.getClientIp = getClientIp;

31
dist/common/utils/getTokenCount.js vendored Normal file
View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTokenCount = void 0;
const tiktoken_1 = require("@dqbd/tiktoken");
const getTokenCount = async (input) => {
let text = '';
if (Array.isArray(input)) {
text = input.reduce((pre, cur) => {
if (Array.isArray(cur.content)) {
const contentText = cur.content
.filter((item) => item.type === 'text')
.map((item) => item.text)
.join(' ');
return pre + contentText;
}
else {
return pre + (cur.content || '');
}
}, '');
}
else if (typeof input === 'string') {
text = input;
}
else if (input) {
text = String(input);
}
text = text.replace(/<\|endoftext\|>/g, '');
const tokenizer = (0, tiktoken_1.get_encoding)('cl100k_base');
return tokenizer.encode(text).length;
};
exports.getTokenCount = getTokenCount;

43
dist/common/utils/handleError.js vendored Normal file
View File

@@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleError = void 0;
const axios_1 = require("axios");
function handleError(error) {
let message = '发生未知错误,请稍后再试';
if (axios_1.default.isAxiosError(error) && error.response) {
switch (error.response.status) {
case 400:
message =
'发生错误400 Bad Request - 请求因格式错误无法被服务器处理。';
break;
case 401:
message = '发生错误401 Unauthorized - 请求要求进行身份验证。';
break;
case 403:
message = '发生错误403 Forbidden - 服务器拒绝执行请求。';
break;
case 404:
message = '发生错误404 Not Found - 请求的资源无法在服务器上找到。';
break;
case 500:
message =
'发生错误500 Internal Server Error - 服务器内部错误,无法完成请求。';
break;
case 502:
message =
'发生错误502 Bad Gateway - 作为网关或代理工作的服务器从上游服务器收到无效响应。';
break;
case 503:
message =
'发生错误503 Service Unavailable - 服务器暂时处于超负载或维护状态,无法处理请求。';
break;
default:
break;
}
}
else {
message = error.message || message;
}
return message;
}
exports.handleError = handleError;

View File

@@ -14,25 +14,26 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./date"), exports);
__exportStar(require("./createRandomCode"), exports);
__exportStar(require("./tools"), exports);
__exportStar(require("./createRandomInviteCode"), exports);
__exportStar(require("./maskEmail"), exports);
__exportStar(require("./createRandomUid"), exports);
__exportStar(require("./generateCrami"), exports);
__exportStar(require("./base"), exports);
__exportStar(require("./hideString"), exports);
__exportStar(require("./createOrderId"), exports);
__exportStar(require("./createRandomCode"), exports);
__exportStar(require("./createRandomInviteCode"), exports);
__exportStar(require("./createRandomNonceStr"), exports);
__exportStar(require("./createRandomUid"), exports);
__exportStar(require("./date"), exports);
__exportStar(require("./encrypt"), exports);
__exportStar(require("./fromatUrl"), exports);
__exportStar(require("./generateCrami"), exports);
__exportStar(require("./getClientIp"), exports);
__exportStar(require("./getDiffArray"), exports);
__exportStar(require("./getRandomItem"), exports);
__exportStar(require("./getClientIp"), exports);
__exportStar(require("./maskIpAddress"), exports);
__exportStar(require("./maskCrami"), exports);
__exportStar(require("./selectKeyWithWeight"), exports);
__exportStar(require("./createOrderId"), exports);
__exportStar(require("./createRandomNonceStr"), exports);
__exportStar(require("./utcformatTime"), exports);
__exportStar(require("./removeSpecialCharacters"), exports);
__exportStar(require("./encrypt"), exports);
__exportStar(require("./compileNetwork"), exports);
__exportStar(require("./getRandomItemFromArray"), exports);
__exportStar(require("./getTokenCount"), exports);
__exportStar(require("./handleError"), exports);
__exportStar(require("./hideString"), exports);
__exportStar(require("./maskCrami"), exports);
__exportStar(require("./maskEmail"), exports);
__exportStar(require("./maskIpAddress"), exports);
__exportStar(require("./removeSpecialCharacters"), exports);
__exportStar(require("./tools"), exports);
__exportStar(require("./utcformatTime"), exports);

View File

@@ -1,17 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.selectKeyWithWeight = void 0;
function selectKeyWithWeight(data) {
if (data.length === 0)
return undefined;
const totalWeight = data.reduce((sum, item) => sum + item.weight, 0);
let randomWeight = Math.random() * totalWeight;
for (const item of data) {
randomWeight -= item.weight;
if (randomWeight < 0) {
return item;
}
}
return data[data.length - 1];
}
exports.selectKeyWithWeight = selectKeyWithWeight;