LangChain 快速上手指南:3 步搭好病历分析流程
【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain
住院医生每天要翻上百份病历,关键症状、用药史、既往诊断全靠肉眼扫,漏掉一行都可能误判。LangChain 是一个把大模型应用像积木一样拼起来的框架,用它可以把"读病历、提关键信息、查指南"串成一条能反复运行的流水线。本文以医疗文本分析为例,带你从跑通最小示例到搭出完整流程,全程大白话。
它到底能解决什么问题 🩺
- 文本不用人肉翻了:病历里的症状、用药、检验结果被自动抽成结构化数据,直接能进数据库查询。
- 指南随查随看:系统可以按患者情况去检索临床指南和医学文献,给医生一个有据可依的参考,而不是靠记忆。
- 对话有上下文:连续追问病情时,系统记得前面说过什么,不用每轮都重复一遍患者背景。
- 组件随时可换:模型、提示词、抽取模板都是独立零件,哪个不好用就换哪个,不用推倒重来。
5 分钟快速上手 ⚡
第一步,先跑一个"病历信息提取"的例子。装好依赖(pip install langchain-openai),并准备好一个可用的模型 API key。
from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser llm = ChatOpenAI(model="gpt-4o-mini", temperature=0) prompt = ChatPromptTemplate.from_template( "从下面的病历中抽取主诉、现病史和用药史,分条输出:\n{record}" ) chain = prompt | llm | StrOutputParser() print(chain.invoke({"record": "患者,女,58 岁,胸闷伴心悸 3 天,长期服用美托洛尔……"}))这段代码其实就是一条三级流水线:模板把提示词组装好,模型负责抽取,解析器把结果整理干净;换一套模板就能做出新的抽取任务。
核心功能拆解
医学知识库怎么建
场景:医生问"高血压合并糖尿病这类患者常规怎么处理",你希望系统回答有据可查,而不是随口编。
做法:把指南和文献切成小块,每块转成向量(可以理解为"语义坐标"),存进向量库;提问时先按语义找出最相关的几块,再交给模型生成答案。切分可以用 langchain_text_splitters,存储对应 langchain_core/vectorstores。
关键配置:块的大小和重叠度(切太碎上下文断了,切太大检索变糊)、向量模型的选择(换了模型要重建索引)、集合名(指南库和病例库分开)。
病历信息提取配置
场景:把一段非结构化的病历文字,变成症状、诊断、药品、剂量这些固定字段。
做法:在提示词里写清输出要求,让模型按 JSON 输出,再用 schema(字段清单)校验;字段缺失或类型不对时,解析层直接拒绝,不会把脏数据放进系统。相关实现在 langchain_core/output_parsers。
关键配置:temperature 设为 0,压制随机性,保证多次运行结果稳定;schema 里明确每个字段的类型;个别难字段可以在提示词里给一两个标注好的例子。
诊疗过程的多轮上下文
场景:医生连续追问五轮,第三轮还要引用第一轮里提到的检查结果。
做法:用聊天历史模块(chat history)把每轮消息存下来,拼提示词时带上最近几轮,或者把更早的内容压缩成一段摘要,模块在 langchain_core/chat_history。
关键配置:最多带多少条历史(带太多会挤占上下文和费用);老消息是否摘要成一段总览再带上。
容易踩的坑 ⚠️
现象:检索回来的片段经常是半句话,"诊断"那句被拆到了两块里。原因:默认切块按固定字数硬切,不管段落和句子边界。怎么解:换成按段落、Markdown 结构的递归切分器,并给块之间留一点重叠,边界处的句子就不会被撕开。
现象:同一份病历跑两次,剂量抽出来的结果不一样。原因:模型本身带随机性(temperature 偏高),每次走的路线略有不同。怎么解:把 temperature 钉在 0,提示词保持固定,关键字段附上标准答案示例,让模型"照着抄"而不是"自由发挥"。
现象:病历原文直接发往云端接口,安全团队提出合规质疑。原因:姓名、身份证号等敏感字段原样离开了内网。怎么解:先脱敏再发送——把姓名、证件号换成占位符,抽取完成后再按映射还原;合规要求严格时考虑私有化部署模型,具体视场景评估。
进阶与选型建议
- 先用小模型加本地小样本把流程跑通,流程验证没问题后再谈精度优化。
- 固定 20~50 份人工标注的病历当测试集,每次改提示词都跑一遍,好坏有对比。
- 向量库按数据量选:数据少用内存版就够了(仓库自带 in_memory 实现),规模上去了再换专业向量库。
流程跑通只是起点,后面的工作基本就是迭代:换模型、调提示词、攒测试集。建议你现在就做一件事:拿 10 份脱敏后的真实病历,跑一遍上面的快速上手示例,数一数字段抽取对了几个——这个数字就是后续所有优化的基线。
【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考