782 字
4 分钟
AI模块设计:健康管理系统的智能核心
2025-04-27
无标签

1. 模块概述#

模块定位

AI模块是健康管理系统的智能核心,负责:

  • 与DeepSeek API交互
  • 生成个性化健康计划
  • 解析和格式化计划数据

2. 核心设计#

2.1 数据模型#

模型设计

AI模块主要包含两个核心类:

  • Plan类:用于存储解析后的计划数据
  • 解析函数:用于处理AI返回的计划文本
# response2plan.py
class Plan:
    def __init__(self, thing, description, day, start_date, end_date):
        self.thing = thing
        self.description = description
        self.day = day
        self.start_date = start_date
        self.end_date = end_date

def parse_plans(input_text):
    """
    将输入的计划文本解析为 Plan 模型实例
    """
    plans = []
    lines = input_text.strip().split("\n")
    for line in lines:
        if line.startswith("p"):
            # 提取用户 ID 和周几
            user_id, content = line.split(":", 1)
            day = int(user_id[1])  # 提取 p1, p2 中的数字作为周几
            parts = [part.strip() for part in content.split(";")]
            # 过滤掉空字符串
            parts = [part for part in parts if part]
            if len(parts) >= 4:
                # 提取计划内容
                start_time = datetime.strptime(parts[0].strip(), "%H:%M").time()
                end_time = datetime.strptime(parts[1].strip(), "%H:%M").time()
                thing = parts[2].strip()
                description = parts[3].strip()

                # 创建 Plan 实例
                plan = Plan(
                    thing=thing,
                    description=description,
                    day=day,
                    start_date=start_time,
                    end_date=end_time,
                )
                plans.append(plan)
    return plans

2.2 服务实现#

服务设计

AI服务主要提供:

  • 与DeepSeek API的交互
  • 计划生成
  • 结果格式化
# deepseek.py
def chat(user_id, information):
    """
    与DeepSeek API交互,生成健康计划
    """
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": prompt},
            {"role": "user", "content": f"User ID: {user_id}, Information: {information}"},
        ],
        stream=False,
        temperature=0.7
    )
    return response.choices[0].message.content

# 提示词构建
prompt1 = f"今天是{today}。"
prompt2 = "你是一个健康助手,下面我将给你用户的信息,你需要给出从今天开始一周的健康和饮食计划,要求有7天,每天有三个饮食规划和两个运动规划。要求标准化输出,其他额外内容不要。格式如下:"
prompt3 = "请按照以下格式提供计划回复:每个任务以分号 (;) 分隔,任务的格式如下:p<day>: <starttime>; <endtime>; <task_name>; <task_description>; - <day>: 任务的天数标识,例如 \"p1\" 表示第 1 天。- <starttime>: 任务的开始时间,例如 \"08:00\"。- <endtime>: 任务的结束时间,例如 \"10:00\"。- <task_name>: 任务的名称,例如 \"晨跑\"。- <task_description>: 任务的详细描述,例如 \"在公园跑步 5 公里\"。示例回复:p1: 08:00; 10:00; 晨跑; 在公园跑步 5 公里; p2: 14:00; 16:00; 阅读; 阅读一本书;"
prompt = prompt1 + prompt2 + prompt3

3. 工作流程#

工作流程
  1. 计划生成

    • 获取当前日期
    • 构建提示词
    • 调用DeepSeek API生成计划
  2. 计划解析

    • 接收AI返回的文本
    • 按行分割处理
    • 提取关键信息
    • 创建Plan对象

4. 总结#

关键收获
  • 掌握了AI计划生成的基本流程
  • 理解了计划文本的解析方法
  • 熟悉了与AI API的交互方式
注意事项
  1. API调用

    • 确保API密钥安全
    • 控制调用频率
    • 处理可能的错误响应
  2. 数据格式

    • 严格遵循约定的格式
    • 确保时间格式正确
    • 验证必要字段存在
NOTE

本模块展示了如何将AI技术整合到健康管理系统中,为开发者提供了一个完整的AI服务实现参考。建议开发者根据实际需求进行调整和优化。