使用OncoSense快速提取指南靶药信息
#coding
二月底时整理了靶向药的名称,当时就有一个想法:我现在有了靶药的名称,是不是就能按图索骥在指南里找到对应的用药信息了,利用LLM来达成量子速读。
介绍
OncoSense这个程序采用的是策略是:
- 将靶药名称库转换为向量数据库;
- 将输入的指南/文献向量化,与靶药向量库比较相似度,获得可能被提及的靶药,并将对应的块作为上下文;
- 使用LLM进行信息提取,获得这个指南/文献中对应的靶药信息。
OncoSense目前存在以下问题:
- 依赖于药物数据库,无法识别新药,需要及时更新数据库;
- 依赖于向量化的相似度阈值,当阈值较高或较低,匹配就可能错误,当前默认设定了一个测试相对稳定的阈值;
- 当更换了向量化模型,切记需要重新建立靶药向量库。
OncoSense使用3个模型,来自通义千问全家桶:
- text-embedding-v3:用于向量化(现在最新版本是v4,请注意如果更新向量模型,必须重置数据库);
- qwen2.5-vl-7b-instruct:用于OCR;
- qwen-max:用于提取并整理信息。
你也可以修改config为自己喜欢的模型。
安装
拉取github仓库,装上依赖库
git clone https://github.com/pzweuj/OncoSense.git
pip install -r requirements.txt
在config.py里配置自己的阿里云百炼API KEY
API_CONFIG = {
"dashscope_api_key": "your_api_key_here",
# ...
}
使用
在默认阈值和参数下,直接使用
python main.py input.pdf -o output.json
结果示例
OncoSense输出一个json格式的结果,你可以根据自己的需求二次提取并整理信息。
{
"extracted_drugs": [
{
"drug_name": "吉非替尼",
"english_name": "Gefitinib",
"targets": ["EGFR"],
"sensitivity_info": [
{
"mutation": "EGFR L858R",
"sensitivity": "敏感",
"evidence_level": "1A"
}
],
"page_numbers": [3, 7],
"confidence_score": 0.85
}
]
}
实际测试中,分析NCCN非小细胞指南 (2025.3),共计285页,耗时约9分钟,测试结果文件点击此处。
后记
应可封装出一个API,使用n8n、dify等工作流框架来调用,达成监控到一份新的指南文件,就及时提取出其中靶药信息。
叠甲
项目仅为研究使用,结果均由AI生成,需要人工仔细甄别。