搜索类似于 ClinicalTrials.gov 的临床试验数据库。每当用户询问临床试验、药物试验、适应症、靶点等信息时使用此技能。
临床试验搜索技能
功能概述
临床试验搜索技能是一项面向实际任务的技能,主要用于这种技能将自然语言问题转换成结构化的API查询, 并使用临床试验数据库, 然后以可读格式呈现结果;Workfl。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
临床试验搜索技能
该技能将自然语言问题转换为针对临床试验数据库的结构化 API 查询,并以可读格式呈现结果。
工作流程
- 解析用户意图 — 从用户问题中提取关键实体
- 构建查询参数 — 将实体映射至下方定义的查询 Schema
- 执行查询 — 运行
scripts/search.py - 呈现结果 — 格式化并展示临床试验给用户
步骤 1:提取关键词
从用户问题中识别以下类型的实体:
| 字段 | 类型 | 描述 | 示例 |
|---|---|---|---|
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" ]
步骤 2:执行查询
python scripts/search.py --params ''
或使用参数文件:
python scripts/search.py --params-file /tmp/query.json
添加 --raw 参数可获取未经格式化的原始 JSON 响应。
步骤 3:解释结果
响应包含:
total_count— 匹配试验总数results— 当前页的结果,每项包含 NCT ID、标题、阶段、状态、适应症、药物、申办方等信息
若结果超过 100 条,提示用户缩小查询范围。若未返回任何结果,在放弃前应用下方的回退策略。
步骤 3:复核与回退搜索策略
若未返回任何结果,在放弃前应用下方的回退策略。 当初始查询返回零结果或结果质量较差时,请**按顺序**尝试以下策略:
策略 1 — 药物名称变体扩展
临床试验注册库中存储的药物名称可能存在不一致性(如 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、SHRA1904 - 去除前缀:
9MW-2821→MW-2821、9MW2821 - 在同一
data数组中同时尝试 INN 名称和内部代码
策略 2 — 以申办方为锚点 + 应用层过滤
当药物名称匹配不可靠时,以申办方公司为锚点拉取宽泛结果集,再在本地按适应症、阶段或模态进行过滤。
{
"company": ["Roche", "Roche Inc"],
"page_num": 0,
"page_size": 200
}
获取结果后,应用本地过滤器:
phase in ["II", "III"]indication contains "breast cancer"drug_name matches known code pattern
当药物代码模糊不清,或需检索某家公司全部试验组合时,适用此策略。
策略 3 — 广义靶点 / 适应症搜索 + 客户端后过滤
当药物名称与申办方均无法返回结果时,改用生物学靶点与适应症组合搜索,再在客户端按申办方或药物代码模式进一步筛选。
{
"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)的模式,从而在一次调用中扩大匹配范围。
策略 4 — 逐步放宽过滤条件
若以上所有策略仍无结果,则按以下顺序逐项移除过滤条件:
- 移除
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
}
依赖项
- Python 3.8+
requests库(pip install requests)- 环境变量
NOAH_API_TOKEN— API 认证令牌(必需)- 请前往 noah.bio 注册免费账户以获取您的 API 密钥。
安全与打包说明
- 本技能仅调用 NoahAI 官方 HTTPS 终端节点(
https://www.noah.bio/api/),不连接任何第三方服务。 - 本技能仅依赖一个环境变量:
NOAH_API_TOKEN。请将其存储于系统环境或本地.env文件中,切勿在命令、聊天记录或打包文件中明文嵌入。 - 该令牌权限范围限定为仅读取公开医疗信息,无法访问私有用户记录。
- 本技能不会主动在本地持久化保存请求参数。任何服务端保留行为均由 NoahAI API 服务及其运行日志策略决定。
- 本技能不请求持久性或系统级权限,亦不修改系统配置。
- 本技能基于源文件(纯 Python 脚本),无需运行时安装、包下载或外部引导步骤。
热门AI工具
相关专题
本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。
0
2026.09.30
本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。
0
2026.09.30
本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。
0
2026.09.30
需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。
0
2026.09.30
PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。
0
2026.09.29
本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。
0
2026.09.23
本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。
0
2026.09.23
本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。
0
2026.09.23
本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。
0
2026.09.22
热门下载
相关下载
精品课程
共6课时 | 12万人学习
共79课时 | 161万人学习
共6课时 | 54.6万人学习