书接上文
在上一篇文章,我们体验了腾讯云HAI + DeepSeek +腾讯云AI代码助手 :零门槛打造AI代码审计环境,通过将DeepSeek模型部署在腾讯云HAI上,用户不仅可以绕过官网访问限制,还能够利用腾讯云的强大算力来运行复杂的AI模型,如DeepSeek-R1 14B,极大地提升了工作效率并降低了成本。
这里,我们继续探索DeepSeek的强大代码能力,基于腾讯云HAI + DeepSeek 快速开发了一个中医辅助问诊系统,旨在帮助中医医生更高效、快速、准确地进行诊断和开药。
基于腾讯云HAI + DeepSeek 快速开发中医辅助问诊系统
在此,对于DeepSeek部署的过程就不过多赘述了,详细可参见我上面的文章,下面主要进行中医辅助问诊系统的开发实践环节。
系统设计
目前计划的是做出第一版的demo,提供给朋友辅助开药使用,所以暂时不需要数据库等等,主打的就是一个简化流程,确保医生能够通过最最简单的步骤快速输入患者症状,并即时获得诊断建议与治疗方案。
系统实现
前端界面实现
我们直接使用Deepseek来全程进行开发,我的想法是给一个输入框用于填写综合病症,给一些选择题用来帮助协助判断,当用户或者医生填写完提交之后,可以调用Deepseek的API来进行反馈一系列治疗建议。
首先给出Prompt如下:
请生成一套中医问诊系统,要求包含自述部分,其余部分可以用选择题的形式展示出来,然后再把这套系统生成html代码,当用户填写完整之后,可以调用Deepseek的api来对用户的回答进行综合分析,最终给出一段中医诊断及对应治疗方案。
Deepseek的最大优点就是其内置了思维链,我们可以清晰的看到它的推断过程:
在生成代码完毕后,我们可以看到右下角的【运行按钮】,点击即可在线进行查看。
基础框架还不错,但下面的辅助选项还是太少了,所以我们继续优化界面。
给出Prompt如下:
请你思考,平常中医的正常诊断除了查看脉诊信息、舌苔特征还需要诊断哪些内容?请你都作为选择题选项继续给出,并在原有的代码上进行优化完善。
优化后界面如下:
开头的输入框作为主诉,主要是让医生或者病人填入自己的主要症状。
分为望闻问切四个角度,每个角度下将常见的特征一一列出。
现在看上去差不多了,已经够用了,下面我们使用Python Flask框架来运行这个Web应用,为了足够新手,这里还是从基础环境开始讲起。
安装 Python 和 pip
首先,确保你的电脑上已安装 Python 3.6 或更高版本。可以通过以下命令检查 Python 版本:
python3 --version
如果未安装 Python,请从 Python 官方网站 下载并安装。
创建虚拟环境
为了避免依赖冲突,建议在虚拟环境中进行开发。使用以下命令创建并激活虚拟环境:
python3 -m venv smart_tcm_diagnosis
source smart_tcm_diagnosis/bin/activate # Linux/macOS
smart_tcm_diagnosis\Scripts\activate # Windows
安装依赖库
在虚拟环境中,使用 pip 安装所需的 Python 库:
pip install flask requests
- flask: Web 框架
- requests: 用于发送 HTTP 请求,调用 DeepSeek API
创建项目结构
app.py代码
from flask import Flask, request, render_template
import requests
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
app = Flask(__name__)
# DeepSeek API 配置
DEEPSEEK_API_URL = "https://api.deepseek.com/chat/completions" # 根据实际情况调整API地址
API_KEY = os.getenv("DEEPSEEK_API_KEY") # 从 .env 文件中读取 API 密钥
@app.route("/", methods=["GET", "POST"])
def index():
formData = {
'selfReport': '',
'medicalHistory': '',
'faceColor': '',
'tongueColor': '',
'tongueCoating': '',
'eyeLook': '',
'voiceQuality': '',
'breathSound': '',
'dietHabit': '',
'sleepQuality': '',
'moodStatus': '',
'bowelMovement': '',
'pulse': ''
}
chat_response = ""
if request.method == "POST":
# 获取用户输入并更新 formData
formData.update(request.form)
print("FormData:", formData)
# 构建请求消息
messageContent = f"""
你是一个资深中医专家,请根据以下问诊信息进行综合分析:
【主诉】{formData['selfReport']}
【既往史】{formData['medicalHistory']}
【面诊】面色{formData['faceColor']},眼神{formData['eyeLook']}
【闻诊】声音{formData['voiceQuality']},呼吸声{formData['breathSound']}
【问诊】饮食习惯{formData['dietHabit']},睡眠质量{formData['sleepQuality']},情绪状态{formData['moodStatus']},排泄情况{formData['bowelMovement']}
【舌诊】舌质{formData['tongueColor']},苔{formData['tongueCoating']}
【脉诊】脉{formData['pulse']}
请给出:1.中医辨证 2.治疗原则 3.方药建议 4.生活调养建议
"""
# 调用 DeepSeek API
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "你是一个资深中医专家。"},
{"role": "user", "content": messageContent}
],
"stream": False
}
print("Request Body:", data)
response = requests.post(DEEPSEEK_API_URL, headers=headers, json=data)
# 解析 API 响应
if response.status_code == 200:
api_response = response.json()
chat_response = api_response["choices"][0]["message"]["content"]
else:
chat_response = f"Error: Unable to get response from DeepSeek API. Status Code: {response.status_code}, Message: {response.text}"
return render_template("index.html", formData=formData, chat_response=chat_response)
if __name__ == "__main__":
app.run(debug=True)