基于Springboot3+LangChain4J+Agent+MCP+RAG的AI Agent 智慧医院智能导诊就诊系统
Springboot3LangChain4JAgentMCPRAG地狱锤炼
项目简介:项目简介:基于医学知识库 RAG、向量检索、数据库驱动工具中心、Spring Boot + LangChain4j、Function Calling,实现文档切分与 Embedding 向量化、按库收窄的内存余弦 topK 检索、SSE 真流式多轮预问诊、数据库驱动 ReAct 分诊 Agent 多轮自主取证、工具注册表真开关与调用日志、科室医生查库核验、挂号乐观锁扣减、Agent 执行时间线与 AI 调用观测、就诊运营,覆盖从预问诊、智能分诊、在线挂号到接诊写病历与运营复盘的完整就诊闭环。
资料包含
完整源码 + SQL 脚本
喂饭学习教程
配套面试文档
环境安装文档
项目运行文档
项目详情
一、项目技术栈
前后端分离
后端:SpringBoot + LangChain4j + MyBatis + PageHelper + Hutool + Java JWT(Java 21 / Maven)
前端:Vue3 + Vite + Element-Plus + Vue-Router + Axios(SSE 流式对话、Agent 执行时间线、运营看板)
AI 技术:医学知识库 RAG(切分 + Embedding 向量检索)+ MySQL 向量表 + 数据库驱动工具中心(mcp_tool)+ 多步 ReAct 分诊 Agent + 预问诊多轮 SSE 对话 + AI 调用观测
数据库:MySQL 8
版本要求:JDK 21、MySQL 8、Node.js 18+、Maven 3.8+。模型调用走 OpenAI 兼容接口,需要对话与向量两类模型的 API Key,配置存在数据库、后台改完即生效。
二、项目功能描述
1. 管理员
- 用户管理、科室管理、医生管理与账号开通、排班与号源管理、患者档案、症状标签库维护。
- AI 模型配置(聊天 + 向量模型,支持连通性测试)与 Prompt 模板管理。
- 医学知识库:库分组、文档上传解析、切片查看、向量化与相似度检索。
- 工具中心:
mcp_tool工具注册、真启用开关、工具调用日志。 - 就诊运营看板:挂号量、号源使用率、分诊推荐命中率,按科室 / 医生 / 推荐科室三个维度汇总。
- 观测:Agent 执行时间线(运行 + 步骤)、AI 调用观测(ai_usage_log 统计与明细)。
2. 医生
- 门诊接诊:查看挂到自己名下的患者,开始接诊、完成就诊的就诊状态流转。
- 病历记录与书写:七个段落结构化录入,草稿可继续编辑,提交后正文锁定。
3. 患者
- 维护个人档案(性别、年龄、慢病史、过敏史)。
- 智能预问诊:与 AI 多轮对话描述症状,查看与删除历史会话。
- 智能分诊:发起分诊后由 Agent 多步取证,结果页展示推荐科室、医生、置信度、危急等级与推荐理由;命中危急征象直接提示前往急诊科。
- 预约挂号:按推荐科室/医生一键挂号,余号乐观锁扣减。
- 我的就诊:挂号单状态流转、查看医生提交的电子病历。
三、项目创新点
- 数据库驱动的 ReAct 分诊 Agent:模型不是被写死的流程串起来的,后端只把工具清单交给它并给一个循环上限,先调哪个工具、调几轮、何时收尾全由模型根据已返回的工具结果逐轮决定。一次分诊要调几次工具、调哪几个,每次跑出来都可能不同,全过程落
agent_run/agent_step,黑盒推理可解释、可复盘。 - 工具中心真实开关和数据:工具编码、说明、入参全部在
mcp_tool表里,运行时按status = '启用'现查现建工具池;管理员停用一个工具,模型下一次执行真的调不到它,而不是界面上有个开关、代码里不生效。工具调用成功失败都写mcp_tool_call_log,配合运行与步骤表可以完整回放一次执行。 - AI 输出先由代码核验再落库:模型只负责「选科室 + 写依据」。推荐的科室必须在
department表里真实存在,推荐的医生必须当天真的有可挂号排班,两项都由代码查库重算,页面上显示的每一个都不采信模型原话;危急征象拦截写死在代码里,只要症状标签工具返回is_red_flag = 是,结果直接转急诊科,不再走推荐普通门诊。 - 统一 AI 出口与调用观测:同步对话、SSE 流式、带工具 ReAct、向量化四类模型调用全部收敛到
HospitalAiService,每次调用写ai_usage_log(用途、Token、耗时、成败、错误翻译),观测页能按用途统计成功率与 Token 消耗,失败原因被统一翻译成可操作的中文提示。 - AI 配置全部数据库化:模型连接参数与 Prompt 模板都存在库里,管理员后台改完立即生效不需要重启;为此引的是
langchain4j-open-ai普通依赖而不是 spring-boot-starter,模型对象全部由工厂按库中配置用 builder 构建并按配置内容缓存,配置文件里不出现任何模型参数。 - 流式预问诊:预问诊对话走 SSE,模型每吐出一段增量文本后端就推一段、前端就渲染一段,第一个字在模型开口时就出现在屏幕上,而不是等整段生成完再逐字播放;业务校验在进入流式之前完成,失败时返回普通 JSON 而不是发一个空的事件流。
- 分诊推荐命中率闭环:分诊结果被患者拿去挂号后会置为「已挂号」,就诊运营看板按推荐科室统计「推荐了多少次、其中多少次真的转成挂号」。这个比例把「模型推荐得准不准」变成了一个可以看的数字,也是回头调 Prompt 与症状标签权重的依据。
- 排班日期一键顺延:排班是配置类基础数据,放一段时间日期整体落到过去,患者端按「今天起一周」查号源就会查不到。排班管理页提供「排班日期顺延」,按「今天 − 最早一条日期」整批平移,保住排班之间原有的先后间隔,余号一并复位成号源总数。已产生的挂号不受影响:就诊日期在挂号那一刻已快照进
registration.visit_date,排班只是配置,历史记在挂号单上。
四、关键页面截图











¥189¥399
🔥 限时优惠,已省 ¥210
不知道怎么学?点我
✓ 购买前请阅读须知
¥189¥399