搜索类似于 ClinicalTrials.gov 的临床试验数据库。每当用户询问临床试验、药物试验、适应症、靶点等信息时使用此技能。
临床试验搜索技能是一项面向实际任务的技能,主要用于这种技能将自然语言问题转换成结构化的API查询, 并使用临床试验数据库, 然后以可读格式呈现结果;Workfl。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
该技能将自然语言问题转换为针对临床试验数据库的结构化 API 查询,并以可读格式呈现结果。
scripts/search.py从用户问题中识别以下类型的实体:
| 字段 | 类型 | 描述 | 示例 |
|---|---|---|---|
nctid |
List[str] |
NCT 标识符 | ["NCT04280783"] |
acronym |
List[str] |
试验缩写 | ["KEYNOTE-590"] |
company |
List[str] |
申办方公司名称 | ["Pfizer", "Roche"] |
indication |
List[str] |
疾病 / 适应症 | ["lung cancer", "NSCLC"] |
phase |
List[str] |
试验阶段 | ["Preclinical", "I", "II", "III", "IV", "Others"] |
target |
dict |
生物学靶点 | {"logic": "or", "data": ["PD-1", "VEGF"]} |
drug_name |
dict |
药物名称 | {"logic": "or", "data": ["pembrolizumab"]} |
drug_modality |
dict |
药物模态 | {"logic": "or", "data": ["Vaccine", "mRNA"]} |
drug_feature |
dict |
药物特性 | {"logic": "or", "data": ["Biologic", "Non-NME"]} |
location |
dict |
试验所在地 | {"logic": "or", "data": ["China", "United States", "Japan"]} |
has_result_summary |
bool |
仅返回含结果摘要的试验 | true |
official_data |
bool |
仅返回官方数据源 | false |
page_num |
int |
页码索引(从 0 开始) | 0 |
page_size |
int |
每页结果数(1–200) | 10 |
字典字段格式:
{"logic": "or", "data": ["value1", "value2"]}
logic 控制多个值的组合方式:"or"(任一匹配即可)或 "and"(全部必须匹配)。默认为 "or",除非用户明确要求所有条件同时生效。data 是待匹配的关键词字符串列表。类型规则:
indication、acronym、company、nctid、phase → 普通 List[str]
target、drug_name、drug_modality、drug_feature、location、route_of_administration → 含 logic 和 data 字段的 dict
默认 page_num: 0, page_size: 10,除非用户另行指定
优先使用英文关键词(数据库索引基于英文);对非英文术语进行翻译
drug_modality 必须严格使用以下集合中的字符串:
[ "Steroids", "Vaccine", "Antisense RNA", "Antibody-Drug Conjugates, ADCs", "Unknown", "Protein Degrader", "Monoclonal Antibodies", "mRNA", "Others", "Cell-based Therapies", "Imaging Agents", "Gene Therapy", "miRNA", "Polypeptide", "Recombinant Proteins", "Small Molecule", "siRNA/RNAi", "Trispecific Antibodies", "Polyclonal Antibodies", "Bi-specific Antibodies", "Glycoconjugates", "Radiopharmaceutical", "Nucleic Acid-based", "Carbohydrates" ]
drug_feature 必须严格使用以下集合中的字符串:
[ "505b2", "Bacterial Product", "Biologic", "Biosimilar", "Device", "Fixed-Dose Combination", "Immuno-Oncology", "New Molecular Entity (NME)", "Non-NME", "Precision Medicine", "Reformulation", "Specialty Drug", "Viral" ]
python scripts/search.py --params ''
或使用参数文件:
python scripts/search.py --params-file /tmp/query.json
添加 --raw 参数可获取未经格式化的原始 JSON 响应。
响应包含:
total_count — 匹配试验总数results — 当前页的结果,每项包含 NCT ID、标题、阶段、状态、适应症、药物、申办方等信息若结果超过 100 条,提示用户缩小查询范围。若未返回任何结果,在放弃前应用下方的回退策略。
若未返回任何结果,在放弃前应用下方的回退策略。 当初始查询返回零结果或结果质量较差时,请**按顺序**尝试以下策略:
临床试验注册库中存储的药物名称可能存在不一致性(如 INN 名称 vs 商品名、含/不含连字符、部分代码等)。将 drug_name.data 扩展为多个变体,合并进单个 or 查询中。
{
"drug_name": {"logic": "or", "data": ["SHR-A1904", "SHR A1904", "A1904", "SHR1904"]},
"page_num": 0,
"page_size": 50
}
若已知试验缩写,也可尝试替换为缩写形式:
{
"acronym": ["KEYNOTE-590", "KEYNOTE590", "KN590"],
"page_num": 0,
"page_size": 10
}
常见变体模式:
SHR-A1904 → SHR A1904、SHRA19049MW-2821 → MW-2821、9MW2821data 数组中同时尝试 INN 名称和内部代码当药物名称匹配不可靠时,以申办方公司为锚点拉取宽泛结果集,再在本地按适应症、阶段或模态进行过滤。
{
"company": ["Roche", "Roche Inc"],
"page_num": 0,
"page_size": 200
}
获取结果后,应用本地过滤器:
phase in ["II", "III"]indication contains "breast cancer"drug_name matches known code pattern当药物代码模糊不清,或需检索某家公司全部试验组合时,适用此策略。
当药物名称与申办方均无法返回结果时,改用生物学靶点与适应症组合搜索,再在客户端按申办方或药物代码模式进一步筛选。
{
"target": {"logic": "or", "data": ["CLDN18.2", "Nectin-4", "HER2"]},
"indication": ["gastric cancer", "breast cancer"],
"page_num": 0,
"page_size": 200
}
获取结果后,按以下条件过滤:
"Hengrui")SHR、9MW、A166 开头)Recruiting、Active, not recruiting)注意: 若 API 支持正则表达式,则可直接在
drug_name.data中传入类似(SHR|9MW|A166)的模式,从而在一次调用中扩大匹配范围。
若以上所有策略仍无结果,则按以下顺序逐项移除过滤条件:
has_result_summary(大量试验尚未发布结果)phase 过滤条件location 过滤条件indication(例如 "NSCLC" → "lung cancer" → "cancer")drug_modality 或 drug_feature 约束每次放宽后重新执行查询,一旦出现结果即停止。
初始查询是否返回结果?
├── 是 → 呈现结果
└── 否 → 策略 1:扩展 drug_name / acronym 变体
└── 仍无结果 → 策略 2:以 sponsor 为锚点 + 本地过滤
└── 仍无结果 → 策略 3:广义 target/indication 搜索
└── 仍无结果 → 策略 4:逐步放宽过滤条件
任意步骤触发 HTTP 429 错误?
└── 整个流程暂停 15 秒 → 从中断处恢复当前策略
(为避免触发 429,每次请求之间至少间隔 5 秒)
用户:“查找已公布结果的、针对肺癌的 PD-1 抗体 III 期临床试验”
{
"target": {"logic": "or", "data": ["PD-1"]},
"drug_modality": {"logic": "or", "data": ["Monoclonal Antibodies"]},
"indication": ["lung cancer"],
"phase": ["III"],
"has_result_summary": true,
"page_num": 0,
"page_size": 10
}
用户:“查询 NCT04280783”
{
"nctid": ["NCT04280783"],
"page_num": 0,
"page_size": 1
}
用户:“罗氏(Roche)在中国开展的双特异性抗体临床试验”
{
"company": ["Roche"],
"location": {"logic": "or", "data": ["China"]},
"drug_modality": {"logic": "or", "data": ["Bi-specific Antibodies"]},
"page_num": 0,
"page_size": 10
}
用户:“结直肠癌口服小分子 KRAS G12C 抑制剂”
{
"target": {"logic": "or", "data": ["KRAS G12C"]},
"drug_modality": {"logic": "or", "data": ["Small Molecule"]},
"indication": ["colorectal cancer"],
"page_num": 0,
"page_size": 10
}
requests 库(pip install requests)NOAH_API_TOKEN — API 认证令牌(必需)https://www.noah.bio/api/),不连接任何第三方服务。NOAH_API_TOKEN。请将其存储于系统环境或本地 .env 文件中,切勿在命令、聊天记录或打包文件中明文嵌入。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.6万人学习
共89课时 | 133.4万人学习
共49课时 | 82.2万人学习