mirror of
https://github.com/Jerryplusy/crystelf-plugin.git
synced 2026-01-29 01:07:27 +00:00
98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
import BaseTool from './baseTool.js';
|
||
|
||
/**
|
||
* 找到答案工具 - 结束ReAct循环
|
||
*/
|
||
class FindAnswerTool extends BaseTool {
|
||
constructor() {
|
||
super(
|
||
'find_answer',
|
||
'当你已经收集到足够信息并准备给出最终回答时使用此工具',
|
||
{
|
||
type: 'object',
|
||
properties: {
|
||
confidence: {
|
||
type: 'number',
|
||
description: '回答的信心程度(0-1),1表示非常确信',
|
||
minimum: 0,
|
||
maximum: 1
|
||
},
|
||
summary: {
|
||
type: 'string',
|
||
description: '简要总结你收集到的关键信息'
|
||
},
|
||
ready_to_respond: {
|
||
type: 'boolean',
|
||
description: '是否准备好给出最终回答',
|
||
default: true
|
||
}
|
||
},
|
||
required: ['confidence', 'summary']
|
||
}
|
||
);
|
||
}
|
||
|
||
async execute(params, context) {
|
||
const { confidence, summary, ready_to_respond = true } = params;
|
||
|
||
logger.info(`[crystelf-ai] AI决定结束循环 - 信心度: ${confidence}, 摘要: ${summary}`);
|
||
|
||
return {
|
||
success: true,
|
||
message: `已收集足够信息,准备回答`,
|
||
shouldEnd: true,
|
||
confidence,
|
||
summary,
|
||
readyToRespond: ready_to_respond
|
||
};
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 需要更多信息工具 - 继续ReAct循环
|
||
*/
|
||
class NeedMoreInfoTool extends BaseTool {
|
||
constructor() {
|
||
super(
|
||
'need_more_info',
|
||
'当你需要更多信息才能给出满意回答时使用此工具',
|
||
{
|
||
type: 'object',
|
||
properties: {
|
||
missing_info: {
|
||
type: 'string',
|
||
description: '描述还缺少什么关键信息'
|
||
},
|
||
next_action_plan: {
|
||
type: 'string',
|
||
description: '下一步计划采取什么行动获取信息'
|
||
},
|
||
urgency: {
|
||
type: 'string',
|
||
enum: ['low', 'medium', 'high'],
|
||
description: '获取这些信息的紧急程度',
|
||
default: 'medium'
|
||
}
|
||
},
|
||
required: ['missing_info', 'next_action_plan']
|
||
}
|
||
);
|
||
}
|
||
|
||
async execute(params, context) {
|
||
const { missing_info, next_action_plan, urgency = 'medium' } = params;
|
||
|
||
logger.info(`[crystelf-ai] AI需要更多信息 - 缺失: ${missing_info}, 计划: ${next_action_plan}`);
|
||
|
||
return {
|
||
success: true,
|
||
message: `需要更多信息: ${missing_info}`,
|
||
shouldEnd: false,
|
||
missingInfo: missing_info,
|
||
nextPlan: next_action_plan,
|
||
urgency
|
||
};
|
||
}
|
||
}
|
||
|
||
export { FindAnswerTool, NeedMoreInfoTool }; |