AI+医疗应用教程:零基础用Flask对接大模型实现症状分诊
很多人搜索AI+医疗应用教程,是想知道怎么把大模型接进医疗场景里跑起来。
这篇文章就带零基础用户做一个最小可用的症状分诊Demo:用Python的Flask框架接收用户描述,调用大模型API返回分诊建议,并在页面上展示。
整个过程不需要GPU,一台普通云服务器或本地电脑就能跑。
需要提前说明:本文做的是技术演示,输出内容不能替代医生诊断,真实上线必须做隐私脱敏和合规评估。
先确认运行环境和前置条件
开始前需要准备三样东西:
一台能联网的电脑(Windows/macOS/Linux均可)、
Python 3.9以上版本、
以及一个大模型服务的API Key(例如OpenAI兼容接口或国产大模型平台,
以你实际选用的平台文档为准)。
检查Python版本:
python3 --version
预期看到 Python 3.9.x 或更高。
如果提示命令不存在,Windows可尝试 python --version,Linux则先安装python3和pip。
接着创建项目目录并安装依赖:
mkdir ai-medical-demo && cd ai-medical-demo
python3 -m venv venv
source venv/bin/activate # Windows用 venv\Scripts\activate
pip install flask requests python-dotenv
把API Key写进 .env 文件,不要硬编码到代码里:
API_KEY=你的密钥
API_BASE=https://你的服务商接口地址/v1/chat/completions
这里 API_BASE 必须换成你所用平台的完整请求地址,不同平台路径不同,以控制台文档为准。
编写分诊接口和页面
在项目目录新建 app.py,核心逻辑分两块:接收表单、调用模型。
下面是最小示例,模型地址和请求体按OpenAI兼容格式编写,如果你的平台格式不同,需要对照文档调整 messages 字段。
import os
import requests
from flask import Flask, request, render_template
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
SYSTEM_PROMPT = "你是一个医疗分诊助手,只根据用户描述给出可能的科室建议和就医紧急程度,必须声明不能替代医生诊断。"
@app.route("/", methods=["GET", "POST"])
def index():
answer = ""
if request.method == "POST":
symptom = request.form.get("symptom", "").strip()
if symptom:
resp = requests.post(
os.getenv("API_BASE"),
headers={"Authorization": f"Bearer {os.getenv('API_KEY')}"},
json={
"model": "你的模型名",
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": symptom}
]
},
timeout=30
)
data = resp.json()
answer = data["choices"][0]["message"]["content"]
return render_template("index.html", answer=answer)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
再建模板目录 templates/index.html,放一个最简单的表单和结果区:
{% if answer %}{{ answer }}{% endif %}
启动服务:
python app.py
浏览器访问 http://服务器IP:5000,输入“头痛两天,无发热”,能看到模型返回的科室建议和免责声明,就说明链路通了。
医疗场景必须注意的避坑点
第一,不要收集真实身份信息。
演示阶段只让用户填症状描述,不要加姓名、身份证、手机号字段;
如果后续要存日志,至少对文本做脱敏,并明确告知用户数据用途。
第二,接口超时和报错要兜底。
上面的 requests.post 设置了30秒超时,实际使用中建议用 try/except 捕获异常,返回“服务繁忙,请稍后再试”,而不是把原始错误堆栈暴露给用户。
第三,模型输出不能直接当诊断结论。
系统提示词里已经要求声明“不能替代医生诊断”,页面上也应固定展示这句提示。
涉及急症描述(如胸痛、呼吸困难)时,应引导用户立即拨打急救电话,而不是等待模型回复。
第四,API Key不要提交到代码仓库。.env 文件应加入 .gitignore,部署到服务器时通过环境变量注入。
验证效果和下一步扩展
验证分三步:先用正常症状描述测试返回格式是否稳定;
再输入空内容或超长文本,确认页面不报错;
最后断开网络或填错API Key,确认前端能显示友好提示。
如果要把这个Demo变成可对外访问的服务,可以用Nginx反向代理5000端口,并配置HTTPS。
命令示例:
sudo nginx -t && sudo systemctl reload nginx
修改Nginx配置后务必先执行 nginx -t 检查语法,通过再重载。
常见疑问
没有医疗背景能跟着做吗? 可以,本文只涉及接口调用和页面展示,不涉及医学判断逻辑,分诊建议完全由模型生成,你只需要保证提示词里写清免责声明。
调用模型需要付费吗? 各平台计费方式不同,有的提供免费额度,有的按token计费,具体以你选用平台的官方说明为准,本文不给出具体价格。
这个Demo能直接上线给患者用吗? 不建议。
真实医疗应用涉及资质、数据安全和隐私合规,本文Demo仅用于技术学习和内部验证,上线前需要咨询合规专业人士。
到这里,一个AI+医疗应用教程的最小闭环就完成了:环境准备、接口编写、避坑处理和结果验证。
你可以在此基础上增加科室映射表、对话历史或前端样式,但每次改动后都建议按上面的验证步骤重新跑一遍。