跳到主要内容

后端设计

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个工具。
  • 通用提示词:可处理日常、预警、报警三种场景,通过传入场景类型参数区分,输出可以是对话文本或结构化指令。