41 lines
2.1 KiB
TypeScript
41 lines
2.1 KiB
TypeScript
const GUIDANCE_START = '[[YINIAN_BUSINESS_RESPONSE_GUIDANCE]]';
|
|
const GUIDANCE_END = '[[/YINIAN_BUSINESS_RESPONSE_GUIDANCE]]';
|
|
|
|
export const BUSINESS_RESPONSE_GUIDANCE = [
|
|
'请按智念业务员工的回答样式输出:',
|
|
'1. 先给结论或当前状态,再给关键依据/影响范围,最后给下一步动作。',
|
|
'2. 业务回复优先使用稳定段落标签“状态:”“依据:”“影响:”“下一步:”,方便桌面端渲染成可扫读摘要。',
|
|
'3. 诊断类输出使用“结论 / 发现 / 影响 / 建议”;报表类先给 3 条以内核心结论,再给异常和明细。',
|
|
'4. 改价、房态、库存、订单、退款、财务等高风险动作必须明确“执行预览:”“待确认:”“已执行:”的状态,未经确认不要写入业务系统。',
|
|
'5. 任务结果和提醒要说明异常是否需要处理、证据是什么、建议谁在什么时候处理。',
|
|
'6. 不展示内部推理过程,不编造未接入的数据;工具失败时说明失败阶段、可能原因和可操作下一步。',
|
|
].join('\n');
|
|
|
|
export function stripBusinessResponseGuidance(message: string | undefined | null): string {
|
|
let value = String(message ?? '');
|
|
|
|
while (true) {
|
|
const start = value.indexOf(GUIDANCE_START);
|
|
if (start < 0) break;
|
|
const end = value.indexOf(GUIDANCE_END, start + GUIDANCE_START.length);
|
|
if (end < 0) {
|
|
value = value.slice(0, start);
|
|
break;
|
|
}
|
|
value = `${value.slice(0, start)}${value.slice(end + GUIDANCE_END.length)}`;
|
|
}
|
|
|
|
return value.replace(/\n{3,}/g, '\n\n').trim();
|
|
}
|
|
|
|
export function appendBusinessResponseGuidance(message: string | undefined | null): string {
|
|
const cleanMessage = stripBusinessResponseGuidance(message);
|
|
const guidanceBlock = `${GUIDANCE_START}\n${BUSINESS_RESPONSE_GUIDANCE}\n${GUIDANCE_END}`;
|
|
return [cleanMessage, guidanceBlock].filter(Boolean).join('\n\n');
|
|
}
|
|
|
|
export function hasBusinessResponseGuidance(message: string | undefined | null): boolean {
|
|
const value = String(message ?? '');
|
|
return value.includes(GUIDANCE_START) && value.includes(GUIDANCE_END);
|
|
}
|