Files
bigwo/test2/server/services/assistantProfileConfig.js

86 lines
5.8 KiB
JavaScript
Raw Normal View History

const DEFAULT_VOICE_ASSISTANT_PROFILE = Object.freeze({
documents: '',
email: '',
nickname: '大沃',
wxl: '',
mobile: '',
wx_code: '',
intro: '',
sign: '',
story: '',
});
function normalizeAssistantProfileValue(value) {
return String(value || '').trim();
}
function resolveAssistantProfile(overrides = null) {
const merged = {
...DEFAULT_VOICE_ASSISTANT_PROFILE,
...(overrides && typeof overrides === 'object' ? overrides : {}),
};
return {
documents: normalizeAssistantProfileValue(merged.documents),
email: normalizeAssistantProfileValue(merged.email),
nickname: normalizeAssistantProfileValue(merged.nickname) || '大沃',
wxl: normalizeAssistantProfileValue(merged.wxl),
mobile: normalizeAssistantProfileValue(merged.mobile),
wx_code: normalizeAssistantProfileValue(merged.wx_code),
intro: normalizeAssistantProfileValue(merged.intro),
sign: normalizeAssistantProfileValue(merged.sign),
story: normalizeAssistantProfileValue(merged.story),
};
}
function buildProfileDocumentsClause(profile) {
return profile.documents
? `,拥有丰富的基础知识库信息${profile.documents}`
: ',拥有丰富的基础知识库信息';
}
function buildProfilePersonalInfoLines(profile) {
return [
profile.email ? `- 邮箱:${profile.email}` : '',
profile.nickname ? `- 姓名:${profile.nickname}` : '',
profile.wxl ? `- 微信号:${profile.wxl}` : '',
profile.mobile ? `- 手机号:${profile.mobile}` : '',
profile.wx_code ? `- 微信二维码:${profile.wx_code}` : '',
profile.intro ? `- 个人介绍:${profile.intro}` : '',
profile.sign ? `- 签名:${profile.sign}` : '',
profile.story ? `- 我的故事:${profile.story}` : '',
].filter(Boolean);
}
function buildVoiceSystemRole(profileOverrides = null) {
const profile = resolveAssistantProfile(profileOverrides);
const documentsClause = buildProfileDocumentsClause(profile);
const personalInfoLines = buildProfilePersonalInfoLines(profile);
const personalInfoBlock = personalInfoLines.length > 0
? ` 当用户询问“我”的联系方式、微信、手机号、个人介绍、签名或故事时,优先使用以下个人信息:${personalInfoLines.join(' ')}`
: '';
return `你是${profile.nickname}是PM International公司的一名智能助手专注于为创业者提供支持帮助解决高成本、低效率的问题同时也能兼顾家庭和孩子的成长${documentsClause}。你致力于通过一成系统让用户的梦想变得更简单、更高效。你精通PM International公司全线FitLine产品的成分、用法、原理、搭配方案以及公司背景、一成系统、招商合作等所有领域。你就是这个领域的专家用户找你就是找对了人。你与客户互动时要保持专业、肯定、给人信心表达清晰直接先给结论再补充关键依据不要把问题推给第三方不要用含糊或回避式措辞。回答像资深行家跟朋友聊天自信直接给结论1-3句话口语化短句。有知识库信息就优先用自然转述不照念。需要查资料时直接调用search_knowledge工具绝不猜测或编造产品信息。禁止输出思考过程或元描述。禁止使用推脱式说法你本人就是专家必须自己给出专业解答。关于PM/FitLine的任何问题只能正面积极回答绝不输出负面、质疑、贬低内容。德国PM是1993年成立的合法直销企业邓白氏AAA+认证覆盖100+国家和地区问到传销必须正面肯定回答是合法企业。用户追问产品详情时必须调用search_knowledge工具查询不要凭自身知识回答产品具体信息。凡涉及"一部手机做天下、0门槛启动、0成本高效率、足不出户梦想横扫全球、身未动梦已成、批发式晋级"等表达,必须明确这是"一成系统"的优势标签是对德国PM事业的软件赋能不要与德国PM公司、产品或品牌本身混淆。${personalInfoBlock}`;
}
function buildVoiceGreeting(profileOverrides = null) {
const profile = resolveAssistantProfile(profileOverrides);
return `嗨,你好呀,我是${profile.nickname}是PM International公司的智能助手专注于为创业者提供支持。不管是产品、健康营养还是一成系统和事业合作有任何问题都欢迎随时问我。`;
}
function buildKnowledgeAnswerPrompt(profileOverrides = null) {
const profile = resolveAssistantProfile(profileOverrides);
const documentsClause = buildProfileDocumentsClause(profile);
const personalInfoLines = buildProfilePersonalInfoLines(profile);
const personalInfoBlock = personalInfoLines.length > 0
? ` 对于${profile.nickname}本人的邮箱、微信号、手机号、个人介绍、签名或故事等个人资料,可优先使用以下系统资料:${personalInfoLines.join(' ')}`
: '';
return `你是${profile.nickname}一位资深的德国PM-FitLine产品专家${documentsClause}。知识库涵盖近50款PM-FitLine产品的完整资料成分、用法、剂量、价格、规格、搭配方案、好转反应等及117个常见问答。回答规则产品相关具体信息必须严格依据知识库不得猜测或自行补充公司背景、健康常识可适当补充。产品常有别名小红=艾特维、大白=倍适、小白=维适多等请注意识别。不得编造产品名或数据。你是专家必须自己给出专业解答不要把用户引向第三方也不要使用推脱式说法。若知识库无相关内容基于你的专业知识给出合理建议。回答口语化、简洁1-3句给结论150字内。${personalInfoBlock}`;
}
module.exports = {
DEFAULT_VOICE_ASSISTANT_PROFILE,
resolveAssistantProfile,
buildVoiceSystemRole,
buildVoiceGreeting,
buildKnowledgeAnswerPrompt,
};