crystelf-plugin/lib/ai/tools/findAnswerTool.js
2025-12-14 10:26:26 +08:00

87 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import BaseTool from './baseTool.js';
/**
* 找到答案工具 - 用于标记AI是否找到了足够的信息来回答用户
*/
class FindAnswerTool extends BaseTool {
constructor() {
super(
'found_answer',
'当你已经收集到足够信息可以回答用户问题时使用此工具',
{
type: 'object',
properties: {
answer_summary: {
type: 'string',
description: '简要总结你找到的关键信息,这将传递给下一阶段'
},
confidence: {
type: 'number',
description: '回答的信心程度(0-1)1表示非常确信',
minimum: 0,
maximum: 1,
default: 0.8
}
},
required: ['answer_summary']
}
);
}
async execute(params, context) {
const { answer_summary, confidence = 0.8 } = params;
logger.info(`[crystelf-ai] AI找到答案 - 信心度: ${confidence}, 摘要: ${answer_summary}`);
return {
success: true,
message: `已找到答案信息: ${answer_summary}`,
foundAnswer: true,
answerSummary: answer_summary,
confidence
};
}
}
/**
* 信息不足工具 - 用于标记AI认为信息不足
*/
class NotEnoughInfoTool extends BaseTool {
constructor() {
super(
'not_enough_info',
'当你认为收集的信息不足以回答用户问题时使用此工具',
{
type: 'object',
properties: {
reason: {
type: 'string',
description: '说明为什么信息不足,缺少什么关键信息'
},
tried_methods: {
type: 'array',
items: { type: 'string' },
description: '已经尝试过的搜索方法'
}
},
required: ['reason']
}
);
}
async execute(params, context) {
const { reason, tried_methods = [] } = params;
logger.info(`[crystelf-ai] AI认为信息不足 - 原因: ${reason}`);
return {
success: true,
message: `信息不足: ${reason}`,
foundAnswer: false,
reason,
triedMethods: tried_methods
};
}
}
export { FindAnswerTool, NotEnoughInfoTool };