ChatGPT 新增 Health 能力,符合条件的美国用户可以安全连接医疗记录与 Apple Health,用自己的健康数据获得更个性化的解读。这项变化的重点不只是“多了一个数据源”,而是健康问答开始从通用知识检索转向结合个人时间序列、临床记录和上下文的分析。
从通用回答到个人健康上下文
没有个人数据时,模型只能回答“成年人通常需要多少睡眠”之类的通用问题。接入 Apple Health 后,问题可以变得更具体:过去四周睡眠时长是否下降、静息心率变化是否与运动量相关、哪些指标值得在下次就诊时主动提及。
医疗记录补充了另一类上下文,例如既往诊断、检查结果、用药和就诊时间线。两类数据结合后,系统有机会把孤立数字放进更完整的背景中,而不是只解释某一次测量结果。
但这里必须划清边界:个性化洞察不等于诊断。模型可以帮助整理趋势、解释术语和生成就诊问题,却不应替代医生判断。胸痛、呼吸困难、意识异常等急性症状也不适合等待聊天系统分析,应直接联系当地急救服务。
真正困难的是数据语义,而不只是连接
健康数据来自不同设备、医疗机构和记录系统,同一个指标可能使用不同单位、采样频率与参考范围。工程上至少要处理以下问题:
- 单位统一:血糖可能使用
mg/dL或mmol/L,体温可能使用摄氏度或华氏度。 - 时间对齐:可穿戴设备按分钟采样,化验结果可能数月才出现一次,不能直接比较采样密度。
- 来源标记:患者手动输入、设备测量和实验室结果的可信度与用途不同。
- 缺失数据:没有记录不代表指标为零,也不代表行为没有发生。
- 参考范围:化验单上的范围可能因实验室、年龄和具体情况而变化。
因此,一个可靠的健康助手应该在输出中保留日期、单位与来源,并明确指出数据不足之处。任何把缺失值自动补成正常值的处理,都会制造危险的确定性。
可以这样实践:先生成最小化的健康摘要
下面是一个可运行的本地示例。它不调用 ChatGPT Health,也不代表其内部接口;假设你已经从获授权的数据源取得结构化指标,希望在发送给任何模型前完成字段筛选和趋势计算。示例只使用合成数据,避免把真实健康信息写进测试代码。
将以下内容保存为 health_summary.py,然后运行 python health_summary.py:
from datetime import date
from statistics import mean
records = [
{"date": "2025-01-01", "steps": 7200, "sleep_hours": 7.4, "resting_hr": 61},
{"date": "2025-01-02", "steps": 8100, "sleep_hours": 7.1, "resting_hr": 62},
{"date": "2025-01-03", "steps": 4300, "sleep_hours": 6.2, "resting_hr": 65},
{"date": "2025-01-04", "steps": 3900, "sleep_hours": 5.9, "resting_hr": 67},
{"date": "2025-01-05", "steps": 6800, "sleep_hours": 6.8, "resting_hr": 63},
]
required = {"date", "steps", "sleep_hours", "resting_hr"}
for index, record in enumerate(records):
missing = required - record.keys()
if missing:
raise ValueError(f"record {index} missing fields: {sorted(missing)}")
date.fromisoformat(record["date"])
summary = {
"period": {
"start": records[0]["date"],
"end": records[-1]["date"],
},
"averages": {
"steps_per_day": round(mean(r["steps"] for r in records)),
"sleep_hours": round(mean(r["sleep_hours"] for r in records), 1),
"resting_heart_rate_bpm": round(mean(r["resting_hr"] for r in records), 1),
},
"provenance": "synthetic wearable-style sample",
"limitations": [
"Five days of data cannot establish a clinical trend.",
"No symptoms, medications, diagnoses, or device quality metadata included.",
],
}
print(summary)
这个处理步骤体现了两个重要原则:只发送回答问题所必需的数据,并把局限性与结果放在一起。实际系统还应在服务端校验单位、时区、来源和授权范围,日志中则应避免记录原始医疗内容。
如果要让模型整理数据,可以使用约束明确的提示词:
你是健康信息整理助手,不提供诊断,也不调整药物。
请根据下面的聚合数据:
1. 描述可观察到的变化,不推断因果关系;
2. 标明数据周期、单位和来源;
3. 列出缺失信息与不确定性;
4. 生成三个可在下次就诊时询问医生的问题;
5. 若信息不足,请直接说明,不要补造数值。
健康摘要:<粘贴去标识化后的 JSON>
上线前要检查什么
医疗数据连接应采用最小权限:用户只为当前用途授权必要的数据类型,并且能够查看、撤销连接和删除数据。访问令牌应加密保存、设置合理有效期,并与应用日志和分析系统隔离。开发与演示环境应使用合成数据,而不是真实患者记录。
还要保留可追溯性。展示结论时,应让用户知道它基于哪段时间、哪些指标以及哪个来源。多来源数据发生冲突时,系统应显示冲突,而不是静默选择一个值。
采用这类能力时,可以用一份简短清单收尾:
- 确认用户属于当前开放范围,并获得清晰、可撤销的授权。
- 只读取完成问题所需的数据,避免默认导入完整病史。
- 保留时间、单位、来源与参考范围。
- 将趋势描述和医学诊断明确分开。
- 对急症提示、数据缺失和来源冲突设计专门流程。
- 用合成数据测试提示词、日志、导出和删除机制。
ChatGPT Health 展示了健康助手从“知道医学知识”走向“理解个人上下文”的方向。它能否真正可靠,取决于连接之外的工程细节:数据语义、授权边界、可追溯性,以及系统是否愿意在证据不足时明确说“不确定”。