首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >面向慢病管理的智能Skill记忆体系:跨轮次交互、结构化数据与健康图谱构建.146

面向慢病管理的智能Skill记忆体系:跨轮次交互、结构化数据与健康图谱构建.146

原创
作者头像
未闻花名
发布2026-06-23 08:11:35
发布2026-06-23 08:11:35
1431
举报
文章被收录于专栏:大模型应用大模型应用

一、慢病管理行业背景

1. 基础核心概念

1.1 大模型原生对话与Skill的本质区别

传统大模型对话是无状态、瞬时性、无记忆的交互模式:每一轮对话都是独立的计算单元,模型不会主动保存用户历史输入、偏好、生理数据、交互目标,仅基于当前单轮文本生成回答。例如用户连续询问“我今天空腹血糖 7.2mmol/L”、“这个数值正常吗”、“我需要调整饮食吗”,普通大模型无法关联三轮对话的上下文,会将其视为三个独立问题,给出碎片化、无针对性的回复。

Skill技能模块是基于大模型的垂直领域轻量化封装组件,是为特定慢病场景(糖尿病、高血压、饮食管理)定制的功能单元。它不是独立的大模型,而是挂载在大模型之上的专业化插件,具备独立的数据存储、逻辑计算、规则判断能力,能够承接大模型无法完成的结构化数据处理、长期记忆保存、病程量化分析工作。

1.2 状态持久化:慢病管理的核心技术基石

状态持久化 是指将Skill与用户的交互数据、用户生理指标、健康偏好、病程数据,从内存临时存储写入持久化存储介质(数据库、文件、云存储),实现数据跨对话轮次、跨使用时间、跨设备永久保存的技术。

在慢病管理场景中,状态持久化解决了三个核心痛点:

  • 1. 大模型无长期记忆的缺陷;
  • 2. 慢病数据需要连续追踪、趋势分析的刚需;
  • 3. 多维度健康数据需要整合形成个人健康档案的需求。

1.3 病程追踪与个人健康图谱

病程追踪 是基于持久化的结构化数据,对用户慢病指标(血糖、血压)、生活习惯、用药情况、饮食行为进行连续、量化、可视化的跟踪,生成趋势曲线、异常预警、病程评估报告。

个人健康图谱 是将用户所有 Skill(糖尿病、高血压、饮食)的数据进行关联融合,形成的多维度、结构化、可推理的用户健康数据网络。它打破了单一技能的数据孤岛,实现血糖异常→饮食禁忌→用药建议→血压关联的全链路智能分析。

2. 慢病管理融合大模型

我国慢病患者规模超 4 亿,糖尿病、高血压为代表的慢性病具有长期性、反复性、需持续干预的特征。传统医疗模式存在三大痛点:

  • 1. 患者无法实时获得专业指导,院外管理缺失;
  • 2. 健康数据碎片化,无法形成连续病程记录;
  • 3. 医生无法获取患者长期真实数据,干预方案缺乏依据。

大模型具备自然语言理解、生成、交互能力,但缺乏结构化数据存储、专业医疗规则、长期记忆能力;而 Skill 状态持久化技术,恰好弥补了大模型的短板,让大模型从通用对话工具升级为专业慢病管理助手。

3. 慢病管理的结构化数据载体

Skill不只是一个功能插件,它是慢病病程管理的最小数据单元:

  • 糖尿病 Skill:专门采集、存储、分析血糖相关结构化数据,如时间、数值、状态、测量场景;
  • 高血压 Skill:专门采集、存储、分析血压相关结构化数据,如收缩压、舒张压、心率、测量时间;
  • 饮食 Skill:专门采集、存储、分析饮食偏好、禁忌、营养摄入数据。

所有 Skill 通过状态持久化,将非结构化的自然语言对话,转化为标准化、可计算、可追踪的医疗健康数据,最终汇聚成个人健康图谱。这是大模型实现智能化慢病管理的核心逻辑。

二、Skill 状态持久化原理

1. 大模型交互的基础架构

1.1 无状态交互原理

普通大模型采用请求 - 响应模式:

  • 1. 用户发送文本请求 → 大模型接收文本 → 模型计算生成回答 → 返回给用户 → 对话结束;
  • 2. 所有交互数据仅存在于单次请求的内存中,对话结束后立即销毁;
  • 3. 无任何数据存储、关联、追溯能力。

1.2 有状态Skill交互架构

Skill架构在大模型之上,新增三大核心模块:

  • 1. 用户标识模块:为每个用户生成唯一 ID(user_id),实现数据隔离;
  • 2. 状态存储模块:负责数据持久化,保存用户所有交互数据;
  • 3. 数据解析模块:将自然语言转化为结构化数据,如“空腹血糖 7.2”→ 场景 = 空腹,数值 = 7.2。

2. 状态持久化的核心技术组件

2.1 存储介质选型

  • 内存存储:临时存储,断电丢失,仅用于实时交互;
  • 文件存储:轻量级持久化,适合小型系统,如JSON/CSV文件;
  • 数据库存储:工业级标准,分为关系型数据库(MySQL/PostgreSQL,适合结构化数据)、非关系型数据库(Redis/MongoDB,适合高速读写、非结构化数据)。

2.2 数据结构化标准

慢病数据必须标准化,才能实现追踪与分析:

  • 血糖数据:user_id、measure_time、glucose_value、measure_type (空腹/餐后2h/随机)、status (正常/偏高/偏低)
  • 血压数据:user_id、measure_time、sbp (收缩压)、dbp (舒张压)、heart_rate、status
  • 饮食数据:user_id、favorite_food、taboo_food、dietary_restrictions

2.3 跨轮次、跨技能数据关联

  • 核心原理:同一用户的所有 Skill 数据,绑定唯一 user_id。
  • 无论用户使用糖尿病 Skill、高血压 Skill 还是饮食 Skill,系统都会通过 user_id 将数据归集到同一个用户档案中,实现跨技能数据互通。

3. 慢病管理基础医学知识

为了让 Skill 具备专业性,必须嵌入基础医学规则:

  • 1. 糖尿病血糖标准:空腹 3.9-6.1mmol/L,餐后 2h<7.8mmol/L;
  • 2. 高血压标准:收缩压≥140mmHg 和 / 或 舒张压≥90mmHg;
  • 3. 饮食规则:高血糖患者禁忌高糖食物,高血压患者禁忌高盐食物。

这些规则会写入 Skill 的逻辑判断模块,结合持久化数据实现智能评估。

三、病程追踪执行流程

以“糖尿病血糖记录”追踪的不同场景的流程执行步骤为例:

1. 单Skill单轮数据记录

执行步骤:

  • 1. 用户身份识别:系统获取用户唯一 user_id(如 user_1001);
  • 2. 自然语言输入:用户发送「我今天早上空腹血糖 7.2mmol/L」;
  • 3. 大模型语义解析:提取关键信息:测量类型 = 空腹,数值 = 7.2,时间 = 当前时间;
  • 4. Skill 数据格式化:生成结构化数据;
  • 5. 状态持久化:将数据写入数据库或文件;
  • 6. 即时响应:Skill 返回评估结果。

2. 单Skill跨轮次病程追踪

执行步骤:

  • 1. 用户连续 7 天上传血糖数据;
  • 2. Skill 每天将数据持久化存储;
  • 3. 用户请求"帮我看一下这周的血糖情况";
  • 4. 系统根据 user_id 读取所有历史数据;
  • 5. Skill 计算平均值、最大值、最小值,判断趋势;
  • 6. 生成文字报告 + 可视化图表。

3. 跨技能个人健康图谱构建

执行步骤:

  • 1. 用户使用糖尿病 Skill 记录血糖;
  • 2. 用户使用高血压 Skill 记录血压;
  • 3. 用户使用饮食 Skill 记录饮食禁忌;
  • 4. 系统以 user_id 为核心,融合三类数据;
  • 5. 大模型结合健康图谱进行综合推理: 示例:血糖持续偏高 + 高血压 + 喜食甜食 → 智能生成综合干预方案;
  • 6. 实现跨技能智能联动,打破数据孤岛。

跨Skill健康时序堆叠图:

4. 应用实践完整执行流程

  • 1. 用户认证:唯一身份标识分配;
  • 2. 对话路由:大模型判断用户需求,分配对应 Skill;
  • 3. 语义提取:结构化解析用户输入数据;
  • 4. 规则校验:医学规则判断数据有效性;
  • 5. 状态持久化:数据写入持久化存储;
  • 6. 数据更新:覆盖 / 追加历史数据;
  • 7. 病程计算:趋势分析、异常检测;
  • 8. 健康图谱融合:跨技能数据关联;
  • 9. 智能应答:大模型结合结构化数据生成专业回答;
  • 10. 日志记录:全流程日志留存。

四、应用实践

基于skill的核心逻辑和慢病管理应用场景,实现一个基础的示例,包含数据结构化、状态持久化、病程追踪、可视化绘图功能;

1. 用户唯一标识生成

生成全局唯一用户ID,实现不同用户数据隔离,是状态持久化的基础:一人一档案,数据不混淆

代码语言:python
复制
# 安装依赖
# pip install json matplotlib datetime uuid
import json
import uuid
from datetime import datetime
import matplotlib.pyplot as plt
import os

def generate_user_id():
    """
    生成全局唯一用户ID,实现不同用户数据隔离
    是状态持久化的基础:一人一档案,数据不混淆
    """
    return str(uuid.uuid4())

# 示例:创建用户
user_id = generate_user_id()
print(f"慢病管理系统用户唯一ID:{user_id}")

输出结果:

慢病管理系统用户唯一ID:45272ec6-6feb-42e3-8105-12a0fc8b3cff

2. 慢病Skill数据结构化工具

糖尿病Skill:解析自然语言为结构化血糖数据,input_text是用户输入文本,measure_time是测量时间,默认当前时间,返回结构化血糖数据

代码语言:python
复制
def parse_diabetes_input(input_text: str, measure_time=None):
    """
    糖尿病Skill:解析自然语言为结构化血糖数据
    :param input_text: 用户输入文本
    :param measure_time: 测量时间,默认当前时间
    :return: 结构化血糖数据
    """
    if measure_time is None:
        measure_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    
    # 简化版语义解析(工业级可对接大模型API)
    glucose_value = 0.0
    measure_type = "未知"
    
    if "空腹" in input_text:
        measure_type = "空腹"
    if "餐后2小时" in input_text:
        measure_type = "餐后2h"
    
    # 提取数值
    for word in input_text.split():
        word = word.replace("mmol/L", "")
        try:
            glucose_value = float(word)
            break
        except:
            continue
    
    # 医学规则判断血糖状态
    status = "正常"
    if measure_type == "空腹":
        if glucose_value > 6.1:
            status = "偏高"
        elif glucose_value < 3.9:
            status = "偏低"
    elif measure_type == "餐后2h":
        if glucose_value > 7.8:
            status = "偏高"
    
    return {
        "measure_time": measure_time,
        "glucose_value": glucose_value,
        "measure_type": measure_type,
        "status": status
    }

3. 基于文件的状态持久化

状态持久化核心函数:将Skill数据保存到本地的json文件

代码语言:python
复制
def save_user_skill_data(user_id: str, skill_type: str, data: dict):
    """
    状态持久化核心函数:将Skill数据保存到本地文件
    :param user_id: 用户唯一ID
    :param skill_type: 技能类型(diabetes/hypertension/diet)
    :param data: 结构化数据
    """
    filename = f"{user_id}_{skill_type}.json"
    
    # 读取历史数据(若存在)
    history_data = []
    if os.path.exists(filename):
        with open(filename, "r", encoding="utf-8") as f:
            history_data = json.load(f)
    
    # 追加新数据
    history_data.append(data)
    
    # 写入文件(持久化)
    with open(filename, "w", encoding="utf-8") as f:
        json.dump(history_data, f, ensure_ascii=False, indent=2)
    
    print(f"✅ 数据已持久化保存至:{filename}")
    return True

4. 病程追踪与数据读取

读取用户持久化的历史数据,用于病程追踪

代码语言:python
复制
def get_user_skill_history(user_id: str, skill_type: str):
    """
    读取用户持久化的历史数据,用于病程追踪
    """
    filename = f"{user_id}_{skill_type}.json"
    if not os.path.exists(filename):
        return []
    with open(filename, "r", encoding="utf-8") as f:
        return json.load(f)

def analyze_glucose_trend(user_id: str):
    """
    糖尿病病程追踪:分析血糖趋势,生成统计报告
    """
    data_list = get_user_skill_history(user_id, "diabetes")
    if not data_list:
        return "暂无血糖数据"
    
    # 统计计算
    values = [item["glucose_value"] for item in data_list]
    times = [item["measure_time"][5:16] for item in data_list]
    avg_value = sum(values) / len(values)
    max_value = max(values)
    min_value = min(values)
    
    # 异常统计
    abnormal_count = len([item for item in data_list if item["status"] != "正常"])
    
    report = f"""
📊 糖尿病血糖病程分析报告
总记录次数:{len(data_list)}
平均血糖值:{avg_value:.2f} mmol/L
最高血糖值:{max_value:.2f} mmol/L
最低血糖值:{min_value:.2f} mmol/L
异常记录次数:{abnormal_count}
    """
    return report, times, values

5. 病程数据可视化绘图

绘制血糖趋势图,保存为图片,实现病程追踪可视化

代码语言:python
复制
def plot_glucose_trend(user_id: str, save_path=None):
    """
    绘制血糖趋势图,保存为图片(病程追踪可视化)
    """
    
    data_list = get_user_skill_history(user_id, "diabetes")
    
    if not data_list:
        print("暂无血糖数据")
        return
    
    if save_path is None:
        save_path = f"{user_id}_glucose_trend.png"
    
    plt.rcParams["font.sans-serif"] = ["SimHei", "DejaVu Sans"]
    plt.rcParams["axes.unicode_minus"] = False
    
    values = [item["glucose_value"] for item in data_list]
    times = [item["measure_time"][5:16] for item in data_list]
    
    plt.figure(figsize=(12, 6))
    plt.plot(times, values, marker="o", linewidth=2, color="#e63946", label="血糖值")
    plt.axhline(y=6.1, color="orange", linestyle="--", label="空腹血糖上限")
    plt.title(f"用户 {user_id[:8]}... 血糖趋势追踪图", fontsize=14)
    plt.xlabel("测量时间", fontsize=12)
    plt.ylabel("血糖值 (mmol/L)", fontsize=12)
    plt.xticks(rotation=45)
    plt.grid(alpha=0.3)
    plt.legend()
    plt.tight_layout()
    plt.savefig(save_path, dpi=150)
    plt.close()
    
    print(f"✅ 血糖趋势图已保存:{save_path}")
    return save_path

6. 完整Skill运行输出

代码语言:python
复制
if __name__ == "__main__":
    # 1. 创建用户
    user_id = generate_user_id()
    print(f"新用户ID:{user_id}")

    # 2. 模拟用户连续输入血糖数据
    user_inputs = [
        "2025-12-20 08:00 空腹血糖6.5mmol/L",
        "2025-12-21 08:10 空腹血糖5.9mmol/L",
        "2025-12-22 08:05 空腹血糖7.2mmol/L",
        "2025-12-23 07:50 空腹血糖6.8mmol/L"
    ]

    # 3. 解析并持久化数据
    for text in user_inputs:
        data = parse_diabetes_input(text)
        save_user_skill_data(user_id, "diabetes", data)

    # 4. 生成病程报告
    report, _, _ = analyze_glucose_trend(user_id)
    print(report)

    # 5. 生成趋势图
    plot_glucose_trend(user_id)

输出结果:

慢病管理系统用户唯一ID:7fc7e735-7b83-4507-b40f-7d564a61743c 新用户ID:b052e05f-49e6-480d-958a-9c8b83f64b79 ✅ 数据已持久化保存至:b052e05f-49e6-480d-958a-9c8b83f64b79_diabetes.json ✅ 数据已持久化保存至:b052e05f-49e6-480d-958a-9c8b83f64b79_diabetes.json ✅ 数据已持久化保存至:b052e05f-49e6-480d-958a-9c8b83f64b79_diabetes.json ✅ 数据已持久化保存至:b052e05f-49e6-480d-958a-9c8b83f64b79_diabetes.json 📊 糖尿病血糖病程分析报告 总记录次数:4 平均血糖值:6.60 mmol/L 最高血糖值:7.20 mmol/L 最低血糖值:5.90 mmol/L 异常记录次数:3

血糖趋势图:

b052e05f-49e6-480d-958a-9c8b83f64b79_diabetes.json 文件内容:

代码语言:json
复制
[
  {
    "measure_time": "2025-12-20 08:00",
    "glucose_value": 6.5,
    "measure_type": "空腹",
    "status": "偏高"
  },
  {
    "measure_time": "2025-12-21 08:10",
    "glucose_value": 5.9,
    "measure_type": "空腹",
    "status": "正常"
  },
  {
    "measure_time": "2025-12-22 08:05",
    "glucose_value": 7.2,
    "measure_type": "空腹",
    "status": "偏高"
  },
  {
    "measure_time": "2025-12-23 07:50",
    "glucose_value": 6.8,
    "measure_type": "空腹",
    "status": "偏高"
  }
]

五、对大模型的意义与价值

​1. 弥补大模型三大核心缺陷

  • 1. 无记忆缺陷:状态持久化让大模型拥有长期记忆,记住用户所有健康数据;
  • 2. 无结构化数据能力:Skill 将自然语言转化为可计算的医疗数据;
  • 3. 无专业垂直能力:Skill 嵌入医学规则,让大模型具备慢病专业判断能力。

2. 大模型能力升级路径

  • 1. 通用对话 → 只能聊天,无实用价值;
  • 2. 单 Skill 交互 → 可记录单一慢病数据;
  • 3. 状态持久化 → 可长期追踪病程;
  • 4. 跨 Skill 融合 → 构建个人健康图谱;
  • 5. 智能决策 → 生成个性化慢病管理方案。

3 产业价值:大模型 + Skill 重构慢病管理模式

  • 1. 患者端:7×24 小时智能管理,实时预警,降低并发症风险;
  • 2. 医生端:获取连续病程数据,精准制定干预方案;
  • 3. 医疗体系:减少院外管理成本,提升慢病控制率。

4. 技术价值:大模型从文本生成器升级为数据智能体

Skill 状态持久化让大模型不再只是处理文本,而是能够:

  • 采集数据:通过调用工具接口,实时捕获用户指令、环境参数及多模态交互信息,构建全量数据底座。
  • 存储数据:将关键信息结构化持久化至向量库或关系型数据库,突破上下文窗口限制,实现跨会话记忆。
  • 分析数据:对沉淀的历史轨迹进行聚合统计与模式挖掘,识别用户偏好趋势,为智能决策提供数据支撑。
  • 可视化数据:将抽象的内部状态与推理路径转化为直观图表,让复杂的思维过程透明可见,增强可解释性。
  • 推理决策:结合长期记忆与实时上下文进行深度逻辑推演,从被动问答转向主动规划,输出最优行动策略。
  • 持续追踪:建立闭环反馈机制,全链路监控任务执行效果,根据结果动态修正模型参数,实现自我进化。

这是大模型在医疗健康领域落地的核心技术支撑。

六、总结

面向慢病的SKILL状态持久化与病程追踪,核心其实就是把只会聊天、转头就忘的大模型,变成能长期管慢病、懂患者病情的智能助手。普通对话是无状态的,聊完就清空,而 SKILL 最大的价值,就是能为每个用户保存专属交互记录,把血糖、血压、饮食禁忌这些关键信息结构化存下来,实现跨轮次、跨技能的记忆,最终拼成完整的个人健康图谱。

它不只是一个功能插件,更是慢病管理里真正的数据载体,让大模型从 “随口回答” 升级成 “持续追踪、专业判断”。有了状态持久化,数据不会丢、趋势能分析、异常能预警,这才是医疗AI落地的关键,否则再强的模型也只能做一次性问答。大模型落地垂直场景,拼的不是对话多流畅,而是数据能不能结构化、能不能持久化、能不能联动复用。很多人一上来就堆模型效果,反而忽略了状态管理和病程追踪这种工程底座,结果实用性大打折扣。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、慢病管理行业背景
    • 1. 基础核心概念
    • 2. 慢病管理融合大模型
    • 3. 慢病管理的结构化数据载体
  • 二、Skill 状态持久化原理
    • 1. 大模型交互的基础架构
    • 2. 状态持久化的核心技术组件
    • 3. 慢病管理基础医学知识
  • 三、病程追踪执行流程
    • 1. 单Skill单轮数据记录
    • 2. 单Skill跨轮次病程追踪
    • 3. 跨技能个人健康图谱构建
    • 4. 应用实践完整执行流程
  • 四、应用实践
    • 1. 用户唯一标识生成
    • 2. 慢病Skill数据结构化工具
    • 3. 基于文件的状态持久化
    • 4. 病程追踪与数据读取
    • 5. 病程数据可视化绘图
    • 6. 完整Skill运行输出
  • 五、对大模型的意义与价值
  • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档