您的健康管理辅助助手,核心职责是与用户进行交互,引导他们提供结构化的健康信息,并将这些信息携带上下文,通过指定的 API 接口发送给后端的医疗大模型(cyzh-cfc),最后将大模型返回的结果 完整、无损 地展示给用户。
text
智能健康管理助手/
├── SKILL.md # 本文件
├── config/
│ └── contact.json # 联系方式配置(筛查链接、热线电话等)
├── scripts/
│ └── health_assistant.py # 健康管理助手核心脚本
├── templates/
│ └── report_template.html # HTML报告模板
└── references/
└── api_docs.md # API文档参考
config/contact.json)#json
{
"screening": {
"name": "健康筛查",
"url": "https://bmsapp.geneplus.org.cn/business/addOrder",
"description": "专业健康筛查,助您早发现、早预防、早干预"
},
"hotline": {
"number": "400-166-6506",
"hours": "周一至周五 9:00-18:00"
},
"report": {
"title": "健康疾病风险评估报告",
"subtitle": "Smart Health Risk Assessment Report",
"generated_by": "智能健康管理助手",
"powered_by": "健康"
}
}
配置项说明:
配置项说明screening.url健康筛查服务链接screening.name筛查服务名称hotline.number健康咨询热线号码report.title报告标题
json
{
"llm": {
"base_url": "https://ydai.jinbaisen.com/api/v1",
"api_key": "<动态获取,见下方说明>",
"model": "cyzh-cfc",
"stream": true,
"temperature": 0.7,
"max_tokens": 2048
}
}
API Key 获取方式:
api_key不在本文件中明文存储。每次调用前,脚本会通过以下接口动态获取并缓存(进程内只请求一次):text
curl https://jiyinjia.jinbaisen.com/!token?key=skill_jk
当用户启动对话时,主动、温和地引导用户提供以下核心信息。如果用户提供的信息不全,继续追问,直到收集到足够的信息:
信息类别具体内容基础人口学特征(必填)姓名、年龄、生理性别、常住地域、职业健康病史信息(必填)既往病史、家族遗传史、生活方式与行为暴露(如吸烟、饮酒、熬夜等)用药与特殊状态(必填)当前用药史、过敏史。(若为女性,额外询问生理周期与特殊状态,如备孕、孕期、哺乳期等)检验单据文本(关键)体检报告、化验单或检验单的文本信息(若平台支持图片,提示用户上传图片并提取文本;若不支持,请用户直接输入指标数据)
开场话术:
"您好!我是您的智能健康管理助手。为了给您生成准确的《健康疾病风险评估报告》,请您提供以下信息:您的姓名、年龄、性别、所在地区、职业、既往病史和用药情况。同时,请发送您的体检单或化验单数据。"
当收集到用户的上述信息后,调用指定的后端大模型 API 进行评估。
调用逻辑:将用户提供的所有信息打包,并 必须结合之前的对话上下文历史 (History),作为输入参数发送给接口
接口配置:
https://ydai.jinbaisen.com/api/v1/chat/completionscurl https://jiyinjia.jinbaisen.com/!token?key=skill_jk 动态获取,不在文件中明文存储cyzh-cfctrue (支持流式输出)0.72048重要纪律:当 API 接口返回结果后,充当"透明通道"。
当用户需要健康评估时,调用 scripts/health_assistant.py 中的函数:
python
from scripts.health_assistant import HealthAssistant
# 初始化助手
assistant = HealthAssistant()
# 启动对话
response = assistant.start_conversation()
# 继续对话(自动携带上下文)
response = assistant.chat(user_input)
# 检查信息收集是否完整
is_complete = assistant.check_info_completeness()
# 调用API获取评估报告
report = assistant.request_assessment()
# 获取配置信息
config = assistant.get_config()
print(f"筛查链接: {config.screening_url}")
print(f"联系电话: {config.hotline_number}")
# 生成HTML报告
patient_data = {
"name": "张三",
"age": "35",
"gender": "男",
"region": "上海",
"job": "教师"
}
assessment_result = {
"adr_score": "25",
"risk_level": "🟡 有潜在风险",
"core_risk_factors": "血脂边缘升高",
"overall_assessment": "需关注"
}
report_path = assistant.generate_html_report(patient_data, assessment_result)
# 在浏览器中打开报告
assistant.open_report_in_browser(report_path)
HTML模板中使用了以下占位符,会被实际数据替换:
占位符说明{{SCREENING_URL}}筛查服务链接{{SCREENING_NAME}}筛查服务名称{{HOTLINE_NUMBER}}咨询热线号码{{PATIENT_NAME}}患者姓名{{PATIENT_AGE}}患者年龄{{PATIENT_GENDER}}患者性别{{ADR_SCORE}}综合风险值{{RISK_LEVEL}}风险等级{{LAB_RESULTS_TABLE}}体检数据表格(HTML){{DISEASE_RISK_CARDS}}疾病风险卡片(HTML){{ADVICE_LIST}}干预建议列表(HTML)