优化了一下

This commit is contained in:
gaoao-3 2025-01-02 11:05:00 +08:00
parent 5162fe2936
commit e0d252aa75
3 changed files with 22 additions and 53 deletions

View file

@ -23,33 +23,29 @@ export class UrlExtractionTool extends AbstractTool {
type: 'string',
description: 'The message containing URLs to be extracted.',
},
appendContent: {
type: 'boolean',
description: 'Whether to append the extracted content to the original message. Defaults to true.',
},
},
required: ['message'],
};
// 工具描述
description = 'Extracts URLs from a given message and optionally retrieves the content of those URLs, appending it to the original message.';
description = 'Extracts URLs from a given message and retrieves the content of those URLs. Returns the extracted content to the AI.'; // 更新描述
/**
* 工具执行函数
* @param {Object} opt - 工具参数
* @param {Object} ai - AI对象 (未使用)
* @returns {Promise<{message: string, extractedContent: string}>} - 包含处理后的消息和提取内容的JSON对象
* @returns {Promise<string>} - 提取的URL内容
*/
func = async function (opt, ai) {
let { message, appendContent = true } = opt;
let { message } = opt;
if (!message) {
return 'The message parameter is required.';
}
try {
const result = await processMessageWithUrls(message, appendContent);
logger.mark(`[URL Extraction] Processed message: ${result.message}, Extracted content: ${result.extractedContent}`);
return result;
const result = await processMessageWithUrls(message);
logger.mark(`[URL Extraction] Processed message: ${message}, Extracted content: ${result}`);
return result; // 直接返回提取的内容
} catch (error) {
logger.error(`[URL Extraction] URL extraction failed: ${error.message}`);
return `URL extraction failed, please check the logs. ${error.message}`;
@ -137,17 +133,15 @@ async function extractUrlContent(url) {
/**
* 处理消息中的URL并提取内容
* @param {string} message 用户消息
* @param {boolean} appendContent 是否将提取的内容附加到消息中默认为true
* @returns {Promise<{message: string, extractedContent: string}>} 处理后的消息和提取的内容
* @returns {Promise<string>} 提取的URL内容
*/
async function processMessageWithUrls(message, appendContent = true) {
async function processMessageWithUrls(message) {
const urls = extractUrls(message);
if (urls.length === 0) {
return { message, extractedContent: '' };
return ''; // 没有 URL 则返回空字符串
}
logger.mark(`[URL处理]从消息中提取到${urls.length}个URL`);
let processedMessage = message;
let extractedContent = '';
// 使用 Promise.all 并发处理多个 URL
@ -174,11 +168,8 @@ async function processMessageWithUrls(message, appendContent = true) {
if (item) {
const urlContent = `\n\n提取的URL内容(${item.url}):\n内容: ${item.content}`;
extractedContent += urlContent;
if (appendContent) {
processedMessage += urlContent;
}
}
});
return { message: processedMessage, extractedContent };
return extractedContent; // 返回提取的内容字符串
}