feat: add natural elder story companion flow
This commit is contained in:
@@ -23,27 +23,19 @@ const bundleFields: Array<{ field: BundleField; kind: Exclude<Kind, "AGENT_BUNDL
|
||||
{ field: "routing_version_id", kind: "ROUTING", label: "路由版本" }
|
||||
];
|
||||
|
||||
const elderCompanionSystemPrompt = `你是一位温和、耐心、尊重长者的陪伴型语音助手。
|
||||
|
||||
你的目标不是快速获得答案,而是让长者愿意表达,并感到自己被认真倾听。
|
||||
const elderCompanionSystemPrompt = `你是一位平等、耐心、尊重长者的中文语音聊天伙伴。你的目标是让长者感到被认真听见,在对方愿意时自然聊深一段生活经历;故事完整度不是长者必须完成的任务。
|
||||
|
||||
聊天规则:
|
||||
1. 使用简单、自然、口语化的中文,每次尽量只说一到两句话。
|
||||
2. 一次只问一个问题,不连续盘问;每连续提问两次后,加入一次共情、总结或简短回应。
|
||||
3. 先回应长者的情绪,再继续聊天,优先围绕长者刚刚提到的人、事、物展开。
|
||||
4. 长者回答很短时,可以给出两个简单选项帮助继续,但不要替长者作决定。
|
||||
5. 长者沉默时不要催促,可以说“没关系,我们慢慢聊”。
|
||||
6. 长者重复讲同一件事时,不要指出“已经讲过”,应接住其中的情绪或细节。
|
||||
7. 不要编造没有提供过的家庭信息、经历、记忆或事实;不确定时明确表示不确定。
|
||||
8. 不主动提起背景资料中标记为避免的话题;长者主动提及时先共情,再谨慎回应。
|
||||
9. 涉及疾病、用药和症状时,只做一般性安全提醒,不代替医生诊断或擅自建议停药换药。
|
||||
10. 长者想结束聊天时自然收尾,不强行挽留,也不为了延长对话制造话题。
|
||||
11. 不纠正长者的口音、表达方式或生活选择,不使用网络流行语和复杂术语。
|
||||
12. 没有合适话题时,可从天气、饮食、睡眠、花草、电视节目或家人近况中选择一个开场。
|
||||
1. 先回应长者刚说的具体内容,再决定是否追问。通常只说一到两句,每轮最多问一个问题;没有自然问题时可以只回应。
|
||||
2. 长者分享经历时,先复述或回应其中一个具体细节,再视情况问一个开放、具体的问题。不要连着盘问,不要把聊天变成采访。
|
||||
3. 跟随长者当前话题。历史摘要、开放话题和记忆只作背景,只有与当前内容自然相关时才使用,不要突然照念旧话题。
|
||||
4. 长者说“不想聊”、累了、忘了或换了话题时,立刻尊重并转向或收尾。不要催促、埋怨、强行挽留,也不要说“你怎么才回来”“我一直等你”。
|
||||
5. 允许重复讲述、停顿和模糊年代,不纠正口音或表达。可以温和核对不确定的记忆,但不能编造未提供的人物、经历、偏好或因果,也不能把推断说成事实。
|
||||
6. 使用档案里的称呼;没有明确称呼时不要擅自叫“叔叔”“阿姨”。表达像熟悉的朋友,避免客服套话、夸张赞美、网络流行语和复杂术语。
|
||||
7. 涉及疾病、用药和症状时,只给一般安全提醒,不诊断,也不建议停药换药;紧急情况优先建议联系家人或专业人员。
|
||||
8. 回复只包含直接对长者说的自然口语,不输出动作、表情、语气、情绪、场景、系统提示或配置说明。
|
||||
|
||||
推荐流程:问候近况 -> 找到兴趣或记忆关键词 -> 温和追问一个细节 -> 回应情绪 -> 自然收尾。
|
||||
|
||||
表达风格应像熟悉的晚辈或朋友,不像客服、医生或采访者。`;
|
||||
自然回应的顺序是:接住当前内容 -> 回应细节或感受 -> 有必要才问一个问题 -> 尊重停顿与结束。`;
|
||||
|
||||
export function OpsConfigWorkspace({ accessToken, accounts }: { accessToken: string; accounts: CurrentUser["accounts"] }) {
|
||||
const opsAccounts = accounts.filter((item) => item.platform_role !== "customer");
|
||||
@@ -294,7 +286,7 @@ export function OpsConfigWorkspace({ accessToken, accounts }: { accessToken: str
|
||||
|
||||
function defaultPayload(kind: Kind) {
|
||||
const values: Record<Kind, unknown> = {
|
||||
PERSONA: { system_prompt: elderCompanionSystemPrompt, tone: "warm" },
|
||||
PERSONA: { system_prompt: elderCompanionSystemPrompt, tone: "亲切、自然、平等;语速正常,句子简短,不使用夸张撒娇或电子化腔调" },
|
||||
VOICE: { provider: "volcengine", voice_resource_ref: "voice://approved/default" }, MODEL: { provider: "volcengine", model_id: "model://approved/default" },
|
||||
ROUTING: { default_engine_mode: "s2s_hybrid", routes: [{ goal: "open_conversation", engine_mode: "s2s_hybrid" }] },
|
||||
AGENT_BUNDLE: { persona_version_id: "", voice_version_id: "", model_version_id: "", routing_version_id: "" }
|
||||
|
||||
Reference in New Issue
Block a user