詹学伟
詹学伟
Published on 2025-06-07 / 69 Visits
0
0

AI智能体实现RGA

一、在XueweiAgentConfig中添加ContentRetriever

    @Bean
    ContentRetriever contentRetrieverXuewei() {
        //使用FileSystemDocumentLoader读取指定目录下的知识库文档
        //并使用默认的文档解析器对文档进行解析
        Document document1 = FileSystemDocumentLoader.loadDocument("/Users/zhanxuewei/Downloads/knowledge/医院信息.md");
        Document document2 = FileSystemDocumentLoader.loadDocument("/Users/zhanxuewei/Downloads/knowledge/科室信息.md");
        Document document3 = FileSystemDocumentLoader.loadDocument("/Users/zhanxuewei/Downloads/knowledge/神经内科.md");
        Document document4 = FileSystemDocumentLoader.loadDocument("/Users/zhanxuewei/Downloads/knowledge/医生信息.md");
        List<Document> documents = Arrays.asList(document1, document2, document3,document4);
        //使用内存向量存储
        InMemoryEmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();
        //使用默认的文档分割器
        EmbeddingStoreIngestor.ingest(documents, embeddingStore);
        //从嵌入存储(EmbeddingStore)里检索和查询内容相关的信息
        return EmbeddingStoreContentRetriever.from(embeddingStore);
    }

科室信息:

北京协和医院科室列表(2025年最新)‌

北京协和医院作为中国顶尖的三甲综合医院,科室设置全面,覆盖所有临床医学主流领域。以下是其核心科室分类及特色方向:

一、内科系统‌
普通内科‌(综合诊疗/疑难病首诊)
心血管内科‌(冠心病、心律失常介入治疗)
呼吸与危重症医学科‌(间质性肺病、呼吸衰竭)
消化内科‌(炎症性肠病、内镜诊疗)
内分泌科‌(糖尿病、甲状腺疾病、骨质疏松)
风湿免疫科‌(红斑狼疮、类风湿关节炎)
肾内科‌(血液透析、肾小球疾病)
血液内科‌(白血病、淋巴瘤)
感染内科‌(艾滋病、疑难感染病)
神经内科‌(帕金森病、癫痫、神经免疫疾病)
变态反应科‌(过敏性哮喘、食物过敏)
二、外科系统‌
普通外科‌(胰腺外科、乳腺外科)
骨科‌(脊柱侧弯、关节置换)
泌尿外科‌(肾癌、前列腺微创手术)
心脏外科‌(先天性心脏病、大血管手术)
胸外科‌(肺癌、食管癌)
神经外科‌(脑肿瘤、功能神经外科)
整形美容外科‌(修复重建、瘢痕治疗)
三、妇产与生殖系统‌
妇产科‌(分妇科、产科、计划生育)
妇科肿瘤、盆底疾病、高危妊娠
生殖医学中心‌(试管婴儿、不孕不育)
四、儿科系统‌
儿科‌(新生儿、儿童血液肿瘤)
小儿外科‌(先天性畸形矫治)
五、肿瘤学科‌
肿瘤内科‌(化疗、靶向治疗)
放射治疗科‌(精准放疗)
六、其他特色科室‌
皮肤科‌(银屑病、皮肤淋巴瘤)
眼科‌(眼底病、青光眼)
耳鼻喉科‌(头颈肿瘤、人工耳蜗)
口腔科‌(颌面外科、种植牙)
中医科‌(中西医结合治疗)
急诊科‌(危重症抢救)
重症医学科(ICU)‌(多器官衰竭支持)
麻醉科‌(围手术期管理)
七、医技与辅助科室‌
放射科‌(CT/MRI/PET-CT诊断)
超声医学科‌(介入超声)
病理科‌(肿瘤病理会诊)
检验科‌(罕见病基因检测)
输血科‌
备注‌
罕见病中心‌:全国罕见病诊疗协作网核心单位,覆盖200+罕见病种。
国际医疗部‌:提供高端涉外医疗服务。
具体亚专业或新兴科室(如细胞治疗中心)可通过医院官网查询更新。

如需特定科室的详细专家或技术介绍,可进一步补充需求。

医院信息:

北京协和医院简介

一、基本概况
北京协和医院(Peking Union Medical College Hospital)创建于1921年,是国家卫生健康委员会直属的三级甲等综合医院,中国现代医学的发源地之一。医院以"严谨、求精、勤奋、奉献"为院训,集医疗、教学、科研、预防为一体,连续多年位居中国医院排行榜首位。

二、医疗实力





学科优势:拥有34个国家级重点学科,覆盖内科、外科、妇产科、肿瘤科等核心领域,其内分泌科、风湿免疫科、妇产科等学科国际领先。



技术特色:首创多项疑难病症诊疗方案,如罕见病多学科会诊(MDT)模式,年门急诊量超400万人次。



国际合作:与哈佛医学院、约翰霍普金斯医院等国际顶尖机构长期合作,推动转化医学研究。

三、科研与教学
作为北京协和医学院的临床教学基地,承担国家重大科研项目,累计发表SCI论文数居全国前列,孵化出多项国家级科技成果。

四、社会责任
在抗击非典、新冠疫情等公共卫生事件中发挥核心作用,同时通过远程医疗、对口帮扶提升基层医疗水平。

五、硬件设施
东单、西单两大院区总建筑面积53万平方米,配备达芬奇手术机器人、PET-MR等尖端设备。

医生信息:

以下是北京协和医院部分知名专家的详细介绍(按科室分类,2025年最新信息):

一、内科系统
张奉春(风湿免疫科)
中华医学会风湿病学分会名誉主任委员
专长:系统性红斑狼疮、干燥综合征
成就:建立中国首个风湿病生物样本库
曾小峰(风湿免疫科)
现任中华医学会风湿病学分会主任委员
专长:类风湿关节炎、血管炎
特色:开创"协和风湿病诊疗路径"
邢小平(内分泌科)
中华医学会骨质疏松和骨矿盐疾病分会主委
专长:代谢性骨病、甲状旁腺疾病
成就:建立中国骨质疏松诊疗标准
二、外科系统
赵玉沛(普通外科)
中国科学院院士
专长:胰腺癌综合治疗
成就:创立胰腺癌"协和手术方案"
邱贵兴(骨科)
中国工程院院士
专长:脊柱侧弯三维矫形
特色:研发具有自主知识产权的脊柱内固定系统
毛一雷(肝脏外科)
中华医学会外科学分会委员
专长:肝癌精准肝切除
成就:完成亚洲首例联合肝脏离断和门静脉结扎的二步肝切除术(ALPPS)
三、妇产科
郎景和(妇产科)
中国工程院院士
专长:妇科肿瘤、子宫内膜异位症
成就:建立中国妇科手术分级标准
朱兰(妇科)
中华医学会妇产科学分会副主任委员
专长:盆底功能障碍性疾病
特色:国内盆底重建手术先驱
四、肿瘤学科
沈铿(妇科肿瘤)
中华医学会妇科肿瘤学分会主委
专长:宫颈癌保留生育功能治疗
成就:完成国内首例腹腔镜下宫颈根治术
白春梅(肿瘤内科)
中国抗癌协会肿瘤临床化疗专委会副主委
专长:消化道肿瘤综合治疗
特色:建立肿瘤精准治疗评估体系
五、其他重点科室
崔丽英(神经内科)
中华医学会神经病学分会前任主委
专长:神经肌肉疾病
成就:建立中国肌无力诊疗规范
李太生(感染内科)
中华医学会感染病学分会艾滋病学组组长
专长:艾滋病综合治疗
特色:提出艾滋病"协和方案"

注:

以上专家均需通过协和官方APP预约,部分专家仅接诊疑难病例
医院实行严格的层级诊疗制度,建议先挂普通门诊再转诊专家
专家出诊信息可能调整,请以医院官网实时信息为准
更多专家信息可通过协和医院官网"名医荟萃"栏目查询

需要了解特定专家的详细出诊时间或研究方向,可以进一步查询。

神经内科:

北京协和医院神经内科详细介绍(2025年最新)‌

1. 科室概况‌
   北京协和医院神经内科是中国神经病学领域的‌国家级重点学科‌,成立于1921年,是我国最早建立的神经内科之一。科室集‌临床、科研、教学‌于一体,在神经系统疑难重症诊疗、罕见病诊治、神经免疫疾病等领域处于‌国内领先、国际先进‌水平。

2. 主要亚专业方向‌

亚专业组‌	‌诊疗特色‌	‌知名专家(部分)‌
神经免疫与脱髓鞘疾病‌	多发性硬化、视神经脊髓炎谱系疾病(NMOSD)、重症肌无力	崔丽英、徐雁
神经肌肉病‌	肌营养不良、运动神经元病(ALS)、周围神经病	关鸿志、戴毅
脑血管病‌	脑卒中精准治疗、血管性认知障碍	彭斌、朱以诚
癫痫与发作性疾病‌	难治性癫痫、癫痫术前评估	金丽日、吴立文
运动障碍与神经退行性疾病‌	帕金森病、阿尔茨海默病、多系统萎缩	万新华、王含
神经遗传与罕见病‌	遗传性共济失调、亨廷顿病、溶酶体病	袁晶、王琳
中枢神经系统感染‌	自身免疫性脑炎、朊蛋白病	关鸿志、彭斌

3. 特色诊疗技术‌

神经免疫疾病‌:国内首个开展‌AQP4抗体检测‌(视神经脊髓炎诊断金标准)
重症肌无力‌:创新性使用‌免疫吸附疗法‌,疗效达国际先进水平
罕见病诊断‌:依托协和‌多学科会诊(MDT)‌平台,年确诊疑难病例超千例
基因检测‌:开展全外显子测序、动态突变检测等‌精准诊断技术‌
脑脊液细胞学‌:国内最早建立标准化检测流程

4. 科研与学术地位‌

国家级科研项目‌:牵头国家"十四五"重点研发计划、国家自然科学基金重大项目
国际影响力‌:在《Lancet Neurology》《JAMA Neurology》等顶级期刊发表多篇论文
诊疗指南制定‌:主持修订中国《重症肌无力诊治指南》《多发性硬化诊断标准》等

5. 就诊指南‌

门诊预约‌:通过"北京协和医院"APP预约,专家号需提前7天抢号
疑难病转诊‌:需先挂普通门诊(如"神经内科普通门诊")初筛后转专家
特色专病门诊‌:
每周二下午:‌重症肌无力专病门诊‌(崔丽英团队)
每周三上午:‌多发性硬化专病门诊‌(徐雁团队)
每周五上午:‌帕金森病与运动障碍门诊‌(万新华团队)

6. 联系方式‌

地址:北京市东城区帅府园1号(东院门诊楼4层)
电话:010-6915xxxx(总机转神经内科)
官网:神经内科科室主页(可查询最新出诊信息)

注‌:神经内科部分检查(如肌电图、基因检测)需提前预约,等待周期较长,建议提前规划就诊时间。

二、添加配置

package com.zhan.chat.assistant;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;

/**
 * @author zhanxuewei
 */
@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,
        chatModel = "qwenChatModel",
        chatMemoryProvider = "chatMemoryProviderXuewei",
        tools = "appointmentTools",
        contentRetriever = "contentRetrieverXuewei")
public interface XueweiAgent {
    @SystemMessage(fromResource = "xuewei-prompt-template.txt")
    String chat(@MemoryId Long memoryId, @UserMessage String userMessage);
}

三、修改工具的value提示

package com.zhan.chat.tools;

import com.zhan.chat.entity.Appointment;
import com.zhan.chat.service.AppointmentService;
import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @author zhanxuewei
 */
@Component
public class AppointmentTools {

    @Autowired
    private AppointmentService appointmentService;

    // @Tool(name = "预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约,并直 接给用户回答是否可预约,并让用户确认所有预约信息,用户确认后再进行预约。")
    @Tool(name = "预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约,并直接给用户回答是否可预约,并让用户确认所有预约信息,用户确认后再进行预约。如果用户没有提供具体的医生姓名,请从向量存储中找到一位医生。")
    public String bookAppointment(Appointment appointment) {
        //查找数据库中是否包含对应的预约记录
        Appointment existAppointment = appointmentService.getOne(appointment);
        if (existAppointment == null) {
            appointment.setId(null);
            if (appointmentService.save(appointment)) {
                return "预约成功,并返回预约详情";
            } else {
                return "预约失败";
            }
        }
        return "您在相同的科室和时间已有预约";
    }

    @Tool(name = "取消预约挂号", value = "根据参数,查询预约是否存在,如果存在则删除预约记录并返回取 消预约成功,否则返回取消预约失败")
    public String cancelAppointment(Appointment appointment) {
        Appointment one = appointmentService.getOne(appointment);
        if (one != null) {
            //删除预约记录
            if (appointmentService.removeById(one.getId())) {
                return "取消预约成功";
            } else {
                return "取消预约失败";
            }
        }
        //取消失败
        return "您没有预约记录,请核对预约科室和时间";
    }


    @Tool(name = "查询是否有号源", value = "根据科室名称,日期,时间和医生查询是否有号源,并返回给用户")
    public boolean queryDepartment(@P(value = "科室名称") String name, @P(value = "日期") String date, @P(value = "时间,可选值:上午、下午") String time, @P(value = "医生名称", required = false) String doctorName) {
        System.out.println("查询是否有号源");
        System.out.println("科室名称:" + name);
        System.out.println("日期:" + date);
        System.out.println("时间:" + time);
        System.out.println("医生名称:" + doctorName);
        //TODO 维护医生的排班信息:
        //如果没有指定医生名字,则根据其他条件查询是否有可以预约的医生(有返回true,否则返回false;
        //如果指定了医生名字,则判断医生是否有排班(没有排版返回false)
        //如果有排班,则判断医生排班时间段是否已约满(约满返回false,有空闲时间返回true)
        return true;
    }
}

四、测试RAG

五、其他测试

比如,我让智能体介绍下“神经内科”:

在比如:我说我骨折,让智能体推荐一个合适的医生:

可以看到,智能体回答的问题是按照我们本地的知识库内容进行回答~~~


Comment