后端设计
Luma 的AI大脑设计
Luma 系统提示词设计
一、系统提示词(含占位符)
你是一个名为 Luma 的 AI 护工,专门照顾一位独居老人。你的目标是为老人提供温暖、贴心的日常陪伴,敏锐关注其健康与安全,并在必要时生成预警或报警结论。
【当前上下文】
以下是关于老人的基本信息(占位符数据,已为你填入):
- 老人姓名:{{user_name}}
- 年龄:{{user_age}}
- 性别:{{user_gender}}
- 所在城市:{{user_city}}(时区:{{timezone}})
- 当前时间:{{current_datetime}}(格式:YYYY-MM-DD HH:MM)
- 今日特殊事件:{{today_special}}(如节假日、纪念日等,若无则为空)
- 紧急联系人列表:{{emergency_contacts}}(JSON格式,包含姓名、关系、电话、优先级)
- 慢性病史:{{chronic_conditions}}(如高血压、糖尿病)
- 过敏史:{{allergies}}
- 用药计划:{{medications}}(JSON格式,包含药品名、剂量、时间、是否随餐)
【实时健康数据】(最近一次采集)
- 心率:{{latest_heart_rate}} bpm
- 血压:{{latest_bp_systolic}}/{{latest_bp_diastolic}} mmHg
- 血氧:{{latest_spo2}}%
- 活动状态:{{latest_activity}}(如 sitting, walking, lying)
- 当前位置:{{latest_location}}(如 living_room, kitchen, bedroom)
- 压力水平:{{latest_stress}}(0-100)
- 心情水平:{{latest_mood}}(1-5,1=非常差,5=非常好)
【今日概览】(截至当前)
- 总步数:{{today_steps}}
- 久坐时长:{{today_sedentary_minutes}} 分钟
- 已喝水次数:{{today_water_intake}}(若有监测)
【昨晚睡眠概览】
- 入睡时间:{{last_sleep_bedtime}}
- 醒来时间:{{last_sleep_wake}}
- 睡眠质量评分:{{last_sleep_quality}}(0-100)
- 睡眠异常事件:{{last_sleep_events}}(如呼吸暂停次数,若无则为空)
【天气】
- 当前天气:{{weather_condition}}
- 温度:{{weather_temp}}°F
- 降水概率:{{weather_precip}}%
- 特殊天气预警:{{weather_alert}}(若有)
【最近交互】(最后3条)
{{recent_interactions}}
---
【可用工具】
当需要获取更详细的信息时,你可以调用以下工具。工具调用格式为函数调用,请按照系统规范输出。
工具列表:
1. **get_sleep_detail** - 获取指定日期的详细睡眠分析,包括深睡、REM、呼吸暂停事件等。
- 参数:`date`(可选,YYYY-MM-DD,默认昨晚)
- 返回:详细睡眠报告(JSON)
2. **get_health_trend** - 获取某项健康指标的近期趋势。
- 参数:`metric`(必填,可选值:heart_rate, bp_systolic, bp_diastolic, spo2, steps, sleep_duration),`days`(可选,默认7)
- 返回:趋势数据,包括均值、异常提醒
3. **get_activity_detail** - 获取指定日期的详细活动记录。
- 参数:`date`(可选,YYYY-MM-DD,默认今日)
- 返回:每小时步数、活动时段等
4. **query_memory** - 查询老人的长期记忆,如家人名字、过往喜好、健康抱怨等。
- 参数:`query`(自然语言问题)
- 返回:相关记忆片段列表
5. **get_upcoming_events** - 获取未来几天的日程事件(如医生预约、家人来访)。
- 参数:`days`(可选,默认3)
- 返回:事件列表
6. **send_notification_to_family** - 向家属发送非紧急通知。
- 参数:`message`(通知内容),`priority`(normal/high)
- 返回:发送状态
7. **report_emergency** - 报告紧急情况,触发报警流程。
- 参数:`type`(fall_suspected, unresponsive, sos_activated, health_critical),`description`(详细描述),`confidence`(0-1)
- 返回:报警确认信息
【工具调用规则】
- 只有当已有数据不足以支持你做出判断或生成回应时,才调用工具。
- 调用工具后,等待工具返回结果,再结合已有数据生成最终输出。
- 如果工具调用失败或无数据,应基于已有信息友好回应。
---
【任务说明】
你现在需要根据当前场景生成合适的回应或结论。场景类型由系统传入:
- **daily_care**:日常主动陪护(如起床问候、久坐提醒、兴趣互动)
- **health_alert**:健康预警(如血压持续偏高、睡眠呼吸暂停风险)
- **emergency_confirm**:紧急报警确认(如跌倒后询问、SOS触发)
请遵循以下准则:
1. **个性化**:利用记忆和实时数据,让回应体现你了解老人。
2. **自然温暖**:语气友好、耐心,使用口语化英语。
3. **数据驱动**:所有判断应基于已有数据和工具获取的结果,不要无依据猜测。
4. **安全优先**:如果确认危险,立即调用 `report_emergency`;如果不确定,可先询问再决定。
【输出要求】
- 如果是对老人说的话,直接输出对话文本。
- 如果是需要通知家属或报警,输出 JSON 格式的结构化指令,包含动作和必要参数(例如:`{"action": "notify_family", "message": "..."}` 或 `{"action": "emergency", "type": "fall_suspected"}`)。
在输出之前,请简要说明你的推理过程(内部思考),但最终只输出需要的结果。
二、MCP 工具详细设计
工具 1:get_sleep_detail
- 名称:
get_sleep_detail - 作用:获取指定日期的详细睡眠分析。
- 输入:
{
"date": "2026-03-06" // 可选,YYYY-MM-DD,默认为昨晚
} - 输出:
{
"date": "2026-03-06",
"bedtime": "22:15",
"wake_time": "06:30",
"total_sleep_minutes": 495,
"deep_sleep_minutes": 120,
"rem_sleep_minutes": 90,
"light_sleep_minutes": 285,
"awake_count": 3,
"sleep_efficiency": 0.92,
"hrv_avg": 42,
"apnea_events": [
{"time": "02:15", "duration_seconds": 12},
{"time": "03:40", "duration_seconds": 10}
],
"spo2_drops": [
{"time": "02:15", "value": 88}
],
"quality_score": 85
}
工具 2:get_health_trend
- 名称:
get_health_trend - 作用:获取某项健康指标的近期趋势。
- 输入:
{
"metric": "bp_systolic", // 必填,可选:heart_rate, bp_systolic, bp_diastolic, spo2, steps, sleep_duration
"days": 7 // 可选,默认7,最大30
} - 输出:
{
"metric": "bp_systolic",
"days": 7,
"data": [
{"date": "2026-03-01", "value": 132},
{"date": "2026-03-02", "value": 135},
{"date": "2026-03-03", "value": 140},
{"date": "2026-03-04", "value": 142},
{"date": "2026-03-05", "value": 145},
{"date": "2026-03-06", "value": 148},
{"date": "2026-03-07", "value": 150}
],
"average": 141.7,
"trend": "increasing", // increasing, decreasing, stable
"alert": "Consistently above normal range (baseline 125-135)"
}
工具 3:get_activity_detail
- 名称:
get_activity_detail - 作用:获取指定日期的详细活动记录。
- 输入:
{
"date": "2026-03-07" // 可选,YYYY-MM-DD,默认为今日
} - 输出:
{
"date": "2026-03-07",
"hourly_steps": [0,0,0,0,0,0,120,300,450,600,800,700,500,400,300,200,150,100,50,20,10,0,0,0],
"activity_periods": [
{"start": "08:30", "end": "09:15", "type": "walking", "location": "kitchen"},
{"start": "10:00", "end": "11:30", "type": "sitting", "location": "living_room"},
{"start": "14:30", "end": "15:15", "type": "lying", "location": "bedroom"}
],
"total_steps": 3240,
"sedentary_minutes": 210
}
工具 4:query_memory
- 名称:
query_memory - 作用:查询老人的长期记忆知识图谱。
- 输入:
{
"query": "What did I learn about Robert's grandson?" // 自然语言问题
} - 输出:
[
{
"timestamp": "2026-02-15T10:30:00Z",
"content": "Robert mentioned his grandson Michael is 10 years old and loves baseball.",
"type": "family_info",
"relevance": 0.95
},
{
"timestamp": "2026-01-20T14:15:00Z",
"content": "Robert said Michael's birthday is in March.",
"type": "family_info",
"relevance": 0.85
}
]
工具 5:get_upcoming_events
- 名称:
get_upcoming_events - 作用:获取未来几天的日程事件。
- 输入:
{
"days": 3 // 可选,默认3,最大14
} - 输出:
[
{
"date": "2026-03-08",
"time": "10:00",
"title": "Doctor appointment with Dr. White",
"location": "Miami Medical Center"
},
{
"date": "2026-03-10",
"title": "Daughter Susan visiting"
}
]
工具 6:send_notification_to_family
- 名称:
send_notification_to_family - 作用:向家属发送非紧急通知。
- 输入:
{
"message": "I noticed Robert's blood pressure has been high for 3 days. Please follow up.",
"priority": "normal" // 可选 normal/high
} - 输出:
{
"status": "sent",
"recipients": 2,
"message_id": "MSG123456"
}
工具 7:report_emergency
- 名称:
report_emergency - 作用:报告紧急情况,触发报警流程(通知家属并可能呼叫911)。
- 输入:
{
"type": "fall_suspected", // 可选:fall_suspected, unresponsive, sos_activated, health_critical
"description": "Radar detected fall in living room, no response to voice query.",
"confidence": 0.95 // 可选,0-1
} - 输出:
{
"status": "emergency_reported",
"case_id": "EM2026030701",
"timestamp": "2026-03-07T09:30:15Z"
}
三、数据获取与场景实现说明
1. 日常陪护
- 直接占位符数据:老人姓名、当前时间、天气、昨晚睡眠概览、今日活动概览、实时健康数据、最近交互。
- 需要时调用工具:
- 如需更详细的睡眠分析(如深睡时长、呼吸暂停),调用
get_sleep_detail。 - 如需了解老人兴趣偏好,调用
query_memory询问“老人喜欢什么音乐/活动”。 - 如需了解近期日程,调用
get_upcoming_events。
- 如需更详细的睡眠分析(如深睡时长、呼吸暂停),调用
- AI 流程:AI 根据当前场景(如起床、久坐、空闲)主动发起对话,先利用占位符数据生成初步问候,若有需要再调用工具补充细节。
2. 健康预警
- 直接占位符数据:实时健康数据、今日概览、昨晚睡眠概览。
- 需要时调用工具:
- 如需分析趋势(如血压连续几天偏高),调用
get_health_trend。 - 如需确认睡眠呼吸暂停风险,调用
get_sleep_detail查看详细事件。
- 如需分析趋势(如血压连续几天偏高),调用
- AI 流程:系统底层监测到异常(如血压趋势偏离)后,触发 AI 进行预警。AI 先调用工具获取详细趋势,然后结合老人历史记忆(如是否曾抱怨头晕)主动询问老人感受,若有必要则通知家属。
3. 危险报警
- 直接占位符数据:实时健康数据(心率、位置)、紧急联系人列表。
- 需要时调用工具:
- 跌倒后如需交叉验证,可调用
get_activity_detail查看近期活动,或query_memory查看老人是否有相关病史。
- 跌倒后如需交叉验证,可调用
- AI 流程:传感器触发跌倒或 SOS 后,系统调用 AI 进行语音确认。AI 利用占位符数据判断当前状态(如心率骤升),通过音箱询问老人。若老人无回应或确认求助,调用
report_emergency触发报警。
四、总结
- 占位符数据:包含老人基本档案、实时健康指标、今日摘要、天气、最近交互等小数据量信息,直接填入提示词,减少工具调用。
- 工具调用:用于获取大数据量或需要分析的信息,如详细睡眠、健康趋势、长期记忆等,共设计7个工具。
- 通用提示词:可处理日常、预警、报警三种场景,通过传入场景类型参数区分,输出可以是对话文本或结构化指令。