关于 database-lookup
database-lookup 是一项用于查询和整合科学及公共数据库的 Agent Skills 技能。它可路由查询、统一结果格式并缓存响应,支持可复现的研究工作流。
主要功能
- 01查询 78+ 个科学及公共数据库
- 02按数据领域路由查询
- 03将响应统一为 DataFrame
- 04处理分页与 API 错误
- 05缓存结果以供离线分析
适用场景
- 01从 PubChem 或 ChEMBL 获取化合物数据
- 02在 UniProt 查询蛋白质信息
- 03搜索 ClinicalTrials.gov 上的研究
- 04整合多个研究数据库的数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ itallstartedwithaidea/ agent-skills --skill database-lookup安装后在 Claude Code 中输入/database-lookup确认已加载。
详细介绍
数据库查询
Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供
描述
Database Lookup 提供对 78 个以上科学和公共数据库的统一编程访问,涵盖化学(PubChem、ChEMBL)、生物学(UniProt、COSMIC、Ensembl)、临床(ClinicalTrials.gov、FDA)、经济学(FRED、World Bank)和知识产权(USPTO、EPO)。Agent 会构建 API 查询、处理分页、规范化响应,并缓存结果,以支持可复现的研究工作流。
科学研究日益依赖整合多个异构数据库中的数据。一个药物发现项目可能需要针对单个研究问题,查询 ChEMBL 获取生物活性数据、查询 UniProt 获取靶蛋白信息、查询 PubChem 获取化合物属性、查询 ClinicalTrials.gov 获取相关临床研究,并查询 FRED 获取医疗支出趋势。此技能将各 API 的差异抽象为统一的查询接口。
每个数据库连接器都会处理身份验证、速率限制、响应解析和错误恢复。无论源 API 使用何种格式(REST JSON、XML、CSV、SPARQL),结果都会规范化为一致的架构(包含类型化列的 DataFrame)。缓存可避免重复调用 API,并支持对先前检索的数据进行离线分析。
适用场景
- 从 PubChem 或 ChEMBL 检索化合物数据
- 查询 UniProt 中的蛋白质序列或注释
- 在 ClinicalTrials.gov 上搜索临床试验
- 从 FRED 或 World Bank 获取经济指标
- 查询 USPTO 中的专利信息
- 整合多个科学数据库中的数据
工作原理
graph TD
A[Research Query] --> B[Query Router]
B --> C{Database Selection}
C -->|Chemistry| D[PubChem / ChEMBL / DrugBank]
C -->|Biology| E[UniProt / Ensembl / COSMIC]
C -->|Clinical| F[ClinicalTrials.gov / FDA / OMIM]
C -->|Economics| G[FRED / World Bank / BLS]
C -->|Patents| H[USPTO / EPO / WIPO]
D --> I[API Request + Rate Limiting]
E --> I
F --> I
G --> I
H --> I
I --> J[Response Normalization]
J --> K[Cache Layer]
K --> L[Unified DataFrame Output]
查询路由器会根据查询类型和实体识别合适的数据库。所有响应都会经过规范化,生成列名和类型标准化的一致 DataFrame。
实现
import requests
import pandas as pd
from functools import lru_cache
from time import sleep
class DatabaseClient:
BASE_URLS = {
"pubchem": "https://pubchem.ncbi.nlm.nih.gov/rest/pug",
"chembl": "https://www.ebi.ac.uk/chembl/api/data",
"uniprot": "https://rest.uniprot.org/uniprotkb",
"clinicaltrials": "https://clinicaltrials.gov/api/v2/studies",
"fred": "https://api.stlouisfed.org/fred/series/observations",
}
def __init__(self, cache_dir: str = ".db_cache"):
self.session = requests.Session()
self.session.headers["User-Agent"] = "AgentSkills/1.0 (research)"
def pubchem_compound(self, name: str) -> dict:
url = f"{self.BASE_URLS['pubchem']}/compound/name/{name}/JSON"
resp = self._get(url)
props = resp["PC_Compounds"][0]["props"]
return {
"cid": resp["PC_Compounds"][0]["id"]["id"]["cid"],
"name": name,
"properties": {p["urn"]["label"]: p["value"] for p in props},
}
def chembl_target(self, uniprot_id: str) -> pd.DataFrame:
url = f"{self.BASE_URLS['chembl']}/target.json"
resp = self._get(url, params={
"target_components__accession": uniprot_id,
"limit": 100,
})
return pd.json_normalize(resp["targets"])
def uniprot_search(self, query: str, limit: int = 25) -> pd.DataFrame:
url = f"{self.BASE_URLS['uniprot']}/search"
resp = self._get(url, params={
"query": query,
"format": "json",
"size": limit,
"fields": "accession,id,protein_name,organism_name,length,sequence",
})
return pd.json_normalize(resp["results"])
def clinical_trials(self, condition: str, status: str = "RECRUITING") -> pd.DataFrame:
url = self.BASE_URLS["clinicaltrials"]
resp = self._get(url, params={
"query.cond": condition,
"filter.overallStatus": status,
"pageSize": 50,
})
return pd.json_normalize(resp["studies"])
def fred_series(self, series_id: str, api_key: str) -> pd.DataFrame:
url = self.BASE_URLS["fred"]
resp = self._get(url, params={
"series_id": series_id,
"api_key": api_key,
"file_type": "json",
})
df = pd.DataFrame(resp["observations"])
df["value"] = pd.to_numeric(df["value"], errors="coerce")
df["date"] = pd.to_datetime(df["date"])
return df
def _get(self, url: str, params: dict = None) -> dict:
sleep(0.25)
resp = self.session.get(url, params=params, timeout=30)
resp.raise_for_status()
return resp.json()
最佳实践
- 遵守速率限制:PubChem 为 5 req/s,ChEMBL 为 1 req/s,UniProt 为 3 req/s
- 在本地缓存所有 API 响应,以支持离线分析并减轻服务器负载
- 跨数据库联接前,先规范化标识符(CID、ChEMBL ID、UniProt 登录号)
- 对大型结果集进行分页处理,切勿假设所有结果都能在一次响应中返回
- 记录每次 API 查询以确保可复现性,包括时间戳和响应哈希
- 设置 User-Agent 标头,注明工具名称和联系信息
平台兼容性
| 平台 | 支持情况 | 备注 |
|---|---|---|
| Cursor | 完全支持 | Python + HTTP 客户端 |
| VS Code | 完全支持 | REST 客户端集成 |
| Windsurf | 完全支持 | API 查询支持 |
| Claude Code | 完全支持 | 数据库查询生成 |
| Cline | 完全支持 | API 集成 |
| aider | 部分支持 | 代码级支持 |
相关技能
关键词
database-lookup pubchem chembl uniprot clinical-trials fred scientific-databases api-integration data-retrieval
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT 许可证