← 返回内容列表

Biomni干了什么?怎么干的

Biomni干了什么?怎么干的

据论文描述,Biomni 不用依赖固定的工作流模板,就能围绕研究者提出的问题,自主拆解任务、调用工具,协助人们完成多样的生物医学研究,在遗传学、基因组学、药理学等生物医学任务中,展现出较强的泛化能力;在部分真实科研任务的表现接近人类专家,且用时更短。 真实场景案例研究进一步证明,Biomni 能够解读多模态数据集、优化蛋白质稳定性、协调湿实验室仪器操作,并生成可供实验验证的实验方案。

核心要点

Phase 1 论文选取:直接沿用预印本平台的原生分类(bioRxiv 有 25 个子领域),每个取最新 100 篇。选取优先级是时效性 > 主题覆盖 > 方法学论文优先。

Phase 2 AI 提取(最关键):PDF 解析后按章节分块,LLM 逐块处理提取四类实体——Task / Tool / Database / Software。文档里有可直接复制使用的 Prompt 模板,每类实体都有明确的 JSON Schema 字段定义。加了幻觉防护(URL 可访问性验证、包名 PyPI 交叉验证)和置信度标注。

Phase 3 去重聚合:三层匹配法——精确匹配 → Levenshtein 模糊匹配 → Embedding 语义匹配(>0.85 才标记为候选重复)。Biomni 从 ~1900 个原始任务精简到 150 个工具,这步是收敛的关键。

Phase 4 人工验证:五项验收清单——①名称清晰 ②完整文档 ③LLM 可读输出格式 ④通过测试用例 ⑤专业性门槛(<20 行代码能搞定的不收录)。领域专家 + 软件工程 Agent 协作实现。

Phase 5 环境构建

  • 工具统一封装为 def tool_name(query, params, data_dir) -> dict 接口,输出必须包含 LLM 可读的 log 字段
  • 数据库分两组:有 API 的走统一自然语言查询函数(LLM 内部解析 schema 生成查询);没 API 的下载到本地数据湖预处理为 DataFrame
  • Docker + Conda 容器化,版本全锁定

文档里还有成本估算(2500 篇论文 LLM 调用约 $300–800)和完整的项目目录结构模板,直接拿去就能跑。



文献驱动的工具环境构建流水线 五阶段流水线:论文选取 → AI提取 → 去重聚合 → 人工验证 → 环境构建 文献驱动的工具环境构建流水线 参照 Biomni-E1 方法论,可适配任意研究领域 Phase 1 论文选取 选取规则 · 来源平台:预印本平台(bioRxiv / arXiv / chemRxiv 等) · 子领域划分:直接沿用平台原生分类(如 bioRxiv 25 类) · 每类取最新 N 篇(Biomni 取 100 篇/类 = 2500 篇) · 选取标准:最新发表 > 引用量 > 主题覆盖度 Phase 2 AI 提取 提取规则(核心) 1. PDF 解析 → 按章节/字数分块(chunk) 2. LLM 逐块处理,提取四类实体: Task(任务) | Tool(工具) | Database(数据库) | Software(软件) 3. 每实体输出结构化 JSON:名称/类型/用途/URL/版本/输入输出格式 4. 重点关注"需要专业实现"的重复性任务,排除平凡操作 5. 跨块合并:同一论文内多次出现的实体去重合并 Phase 3 去重聚合 聚合规则 · 跨论文实体匹配:名称归一化 + 嵌入相似度 + 人工裁定 · 任务聚合:相似任务合并为一个通用任务描述 · 冗余消除:~1900 原始任务 → 人工审核 → 精选工具集 · 频次排序:出现频次高 + 领域覆盖广 = 优先级高 Phase 4 人工验证 五项验收清单 ① 名称清晰描述性 ② 完整文档 ③ LLM 可读的输出格式 ④ 通过测试用例 ⑤ 专业性门槛——简短代码可实现的不收录 · 领域专家 + 软件工程 Agent 协作实现每个工具 · 开发集迭代验证(~45 题) Phase 5 环境构建 → E1


提取实体 Schema 与数据库接入规则 四类实体的 JSON Schema 结构和数据库的两种接入方式 四类实体的提取 Schema Task(任务) name: str — 任务名称(动词+宾语) description: str — 任务目标描述 category: str — 所属子领域 input_type: str — 输入数据类型 output_type: str — 输出数据类型 required_tools: [str] — 依赖工具 required_databases: [str] — 依赖数据库 frequency: int — 出现次数 difficulty: enum — easy/medium/hard Tool(工具) name: str — 工具正式名称 type: enum — wet_lab/ai_model/know_how description: str — 功能描述 url: str — 官方链接/GitHub version: str — 版本号 language: str — Python/R/Bash input_format: str — 输入格式 output_format: str — 输出格式 api_available: bool — 是否有API Database(数据库) name: str — 数据库名称 access_type: enum — api/local url: str — 访问地址 schema: str — 数据结构描述 data_type: str — 存储数据类型 query_method: str — 查询方式 size: str — 数据量级 Software(软件包) name: str — 包名(pip/conda 名) language: enum — Python/R/Bash install_cmd: str — 安装命令 version: str — 锁定版本 dependencies: [str] — 依赖列表 primary_use: str — 主要用途 frequency: int — 引用频次 数据库接入规则 Group 1: Web API 数据库 条件:有公开 REST/GraphQL API 实现:统一函数接口,接受自然语言查询 内部:LLM 解析 schema → 动态生成查询 示例:PDB / OpenTarget / ClinVar Group 2: 本地数据湖 条件:无 Web 界面 / 离线数据 实现:下载到本地,预处理为 DataFrame 格式:结构化 pandas DataFrame 示例:基因注释集 / 本地知识库


文献驱动的工具环境构建:完整规则方案

参照 Biomni-E1 方法论,适用于任意研究领域。核心思路:用 AI 从大量论文中提取任务、工具、数据库和软件,经人工验证后构建统一的智能体执行环境。

总览

论文选取 → AI 提取 → 去重聚合 → 人工验证 → 环境构建2500篇    四类实体    消除冗余    五项清单    E1环境

指标 Biomni 参考值 你的可调参数 论文总数 2,500 500–5,000(视领域规模) 子领域数 25(bioRxiv 原生分类) 10–30 每领域论文数 100 50–200 最终工具数 150 50–200 最终软件包数 105 50–150 最终数据库数 59 20–80

Phase 1:论文选取规则

1.1 来源平台选择

平台 适合领域 API bioRxiv 生物医学 有 (api.biorxiv.org) arXiv 物理/CS/数学/定量生物 有 (export.arxiv.org/api/query) chemRxiv 化学 有 medRxiv 医学 有 (api.biorxiv.org) SSRN 社会科学 部分

规则:优先选择有公开 API 的平台,便于批量获取元数据和全文。

1.2 子领域划分规则

规则 1-A:直接沿用平台原生分类

  • 不自行定义分类,直接使用平台已有的 subject categories
  • bioRxiv 有 25 个分类,arXiv 有约 170 个子分类
  • 如果平台分类过细,合并相邻子领域至 15–25 个

规则 1-B:自定义领域时的划分原则

  • 按研究方法分(实验/计算/理论)
  • 按研究对象分(分子/细胞/个体/群体)
  • 按应用场景分(诊断/治疗/药物/公共卫生)
  • 每个子领域应有足够论文量(≥50 篇/年)

1.3 论文选取标准

优先级排序(从高到低)

  1. 时效性:取最近 12–18 个月发表的论文(确保工具是最新的)
  2. 主题覆盖度:确保子领域内不同研究方向均有覆盖
  3. 可获取性:全文 PDF 可公开下载
  4. 方法学论文优先:Methods/Software 类论文 > 纯发现类论文
  5. 引用量(辅助):同领域内引用较高者优先

排除规则

  • 纯综述论文(无新方法/新工具)
  • 仅有摘要无全文的论文
  • 会议摘要/短通信

1.4 批量获取流程

1. 调用平台 API 获取每个子领域的论文列表
2. 按 publication date 降序排列
3. 每个领域取前 N 篇
4. 下载全文 PDF 到本地存储
5. 记录元数据(DOI、标题、作者、领域、日期、摘要)到 papers.jsonl

Phase 2:AI 提取规则(核心)

2.1 论文预处理

规则 2-A:PDF 解析

  • 使用 pymupdf 或 marker-pdf 将 PDF 转为纯文本
  • 保留章节结构(Title / Abstract / Introduction / Methods / Results / Discussion)
  • 提取表格内容为文本
  • 忽略图片(除非有 OCR 能力处理图注)

规则 2-B:分块策略

方案 A(章节分块):按论文章节自然分割
  → 每个章节为一个 chunk
  → 适合结构规范的论文

方案 B(定长分块):每 30004000 tokens 为一个 chunk
  → 重叠 200 tokens 防止截断
  → 适合超长论文或无清晰结构的论文

2.2 LLM 提取 Prompt 设计

这是整个流程的核心。以下是可直接使用的 Prompt 模板:

系统 Prompt

你是一个专业的[研究领域]文献分析专家。你的任务是阅读论文文本,
从中提取完成该研究所需的四类可操作实体:

1. Task(任务):论文中描述的、需要专业工具或流程才能完成的研究任务
2. Tool(工具):用于完成任务的专用工具、算法、模型或实验方案
3. Database(数据库):论文中查询、下载或使用的公开数据资源
4. Software(软件):论文中使用的软件包、库、框架

提取原则:
- 只提取"需要专业实现"的任务,排除简单操作(如"画散点图")
- 同一实体在论文中多次出现只记录一次
- 尽可能提取工具的名称、URL、版本号等具体信息
- 任务要关注"重复出现的、需要专业知识的"操作
- 输出必须是严格 JSON 格式

用户 Prompt(逐块处理)

请分析以下论文文本片段,提取任务、工具、数据库和软件。

论文标题:{title}
所属领域:{category}
当前块编号:{chunk_index}/{total_chunks}

---论文文本---
{chunk_text}
---文本结束---

请按以下 JSON Schema 输出(如果没有发现某类实体,返回空数组):

{
  "tasks": [
    {
      "name": "任务名称(动词+宾语格式,如&#39;单细胞RNA-seq注释&#39;)",
      "description": "任务目标描述",
      "input_type": "输入数据类型",
      "output_type": "输出数据类型",
      "required_tools": ["依赖的工具名称"],
      "required_databases": ["依赖的数据库"],
      "difficulty": "easy/medium/hard"
    }
  ],
  "tools": [
    {
      "name": "工具正式名称",
      "type": "wet_lab | ai_model | know_how | algorithm",
      "description": "功能描述",
      "url": "官方链接或GitHub地址",
      "version": "版本号(如提及)",
      "language": "Python/R/Bash/Other",
      "input_format": "输入格式",
      "output_format": "输出格式",
      "api_available": true/false
    }
  ],
  "databases": [
    {
      "name": "数据库名称",
      "access_type": "api | local | unknown",
      "url": "访问地址",
      "schema": "数据结构描述",
      "data_type": "存储数据类型",
      "query_method": "查询方式(REST API/SQL/下载等)",
      "size": "数据量级(如提及)"
    }
  ],
  "software": [
    {
      "name": "软件包名(pip/conda/install 名称)",
      "language": "Python/R/Bash",
      "install_cmd": "安装命令(如能确定)",
      "version": "版本号",
      "dependencies": ["依赖的其他包"],
      "primary_use": "主要用途"
    }
  ]
}

2.3 逐篇处理流程

对每篇论文 paper:
  1. 解析 PDF → 全文文本
  2. 按策略分块 → chunks[]3. 对每个 chunk:
     a. 构造 prompt(含论文上下文)
     b. 调用 LLM 提取
     c. 解析 JSON 输出
     d. 追加到该论文的 extraction_results[]4. 论文内去重:合并同一论文中跨块重复的实体
  5. 附加论文元数据(DOI、领域、日期)
  6. 输出到 extractions/{doi}.json

2.4 质量控制规则

规则 2-C:置信度标注

  • 对每个提取的实体,要求 LLM 同时输出 confidence 字段(0.0–1.0)
  • 置信度 < 0.5 的实体标记为 needs_review

规则 2-D:幻觉防护

  • 工具 URL 需验证可访问性(HTTP HEAD 请求)
  • 软件包名需验证是否存在于 PyPI/CRAN/Bioconductor
  • 数据库名称需与已知数据库列表交叉验证
  • 无法验证的标记为 unverified

规则 2-E:处理异常

  • JSON 解析失败 → 重试一次,仍失败则记录错误跳过该块
  • LLM 返回空结果 → 记录但不报错(某些块可能确实无工具信息)
  • 超长论文(>30 页)→ 增加分块数,减小单块大小

Phase 3:去重与聚合规则

3.1 实体匹配策略

三层匹配法(从粗到细)

Layer 1: 精确匹配
  → 名称完全一致(忽略大小写、空格、连字符)
  → 例: "scanpy" = "ScanPy" = "scan-py"

Layer 2: 模糊匹配
  → Levenshtein 距离 ≤ 2(处理拼写变体)
  → 包含关系("Seurat v5""Seurat")
  → 示例: "Cell Ranger" = "cellranger" = "CellRanger"

Layer 3: 语义匹配
  → 生成实体名称的 embedding(text-embedding 模型)
  → 余弦相似度 > 0.85 → 标记为候选重复
  → 人工裁定最终是否合并

3.2 任务聚合规则

规则 3-A:任务合并

  • 语义相似度 > 0.8 的任务合并为一个通用任务
  • 保留最具描述性的 name 和 description
  • 合并 input_type/output_type(取并集)
  • frequency 字段累加

规则 3-B:任务分级

frequency >= 50(在 ≥2% 论文中出现)→ 高频任务,优先实现
frequency >= 10                      → 中频任务,备选实现
frequency < 10                        → 低频任务,记录不实现

3.3 工具/软件去重规则

规则 3-C:工具合并

  • 同名不同版本 → 合并为一个工具,version 取最新
  • 同名不同 URL → 保留官方/GitHub 链接
  • 别名映射:建立别名表(如 "BLAST" = "NCBI BLAST" = "blastn")

规则 3-D:软件包去重

  • 同名不同语言 → 分别保留(如 Python 的 requests 和 R 的 httr)
  • 同名不同安装方式 → 合并,记录多种安装命令
  • 检查依赖冲突:标记有已知版本冲突的包对

Phase 4:人工验证规则

4.1 五项验收清单

每个候选工具必须通过以下全部五项检查才能收录:

# 检查项 标准 不通过处理 ① 名称清晰 有描述性正式名称,非缩写无歧义 拒绝或要求重命名 ② 完整文档 有功能描述、输入输出格式、使用说明 补充文档后重审 ③ LLM 可读输出 输出格式为结构化文本/JSON/表格,非原始二进制 设计适配器转换 ④ 通过测试用例 至少 1 个端到端测试用例通过 修复后重试 ⑤ 专业性门槛 不能用 <20 行简单代码实现 拒绝(太简单不值得封装)

4.2 专业性门槛细则

收录标准(满足任一)

  • 涉及复杂算法实现(如基因组比对、蛋白质折叠预测)
  • 需要领域专业知识(如湿实验 protocol 设计)
  • 需要专用 AI 模型(如 ADMET 预测、单细胞注释)
  • 需要访问特定数据库且查询逻辑复杂
  • 工作流涉及多步骤编排

拒绝标准

  • 简单数据库查询(SELECT * FROM ...)
  • 基本数据可视化(画柱状图、折线图)
  • 通用文本处理(正则匹配、字符串清洗)
  • 简单统计计算(均值、标准差)

4.3 验证工作流

对每个候选工具 tool:
  1. 领域专家审核:
     - 检查 ①②(名称+文档)
     - 评估 ⑤(专业性)
  2. 软件工程 Agent 实现:
     - 封装为统一函数接口
     - 编写测试用例
     - 确保 ③(LLM 可读输出)
  3. 运行测试:
     - 执行测试用例
     - 验证 ④ 通过
  4. 全部通过 → 收录到 E1 环境
     任一不通过 → 标记问题,退回修改或拒绝

4.4 开发集迭代验证

  • 构建 30–50 题的开发集(dev set),覆盖主要任务类型
  • 用开发集驱动工具接口的迭代优化
  • 每轮迭代后统计通过率,直到 > 90%

Phase 5:环境构建规则

5.1 工具封装规范

每个工具必须封装为统一接口:

# 工具接口模板
def tool_name(
    query: str,           # 自然语言输入
    params: dict = None,  # 可选参数
    data_dir: str = None  # 数据目录
) -> dict:
    """
    Tool: 工具名称
    Description: 功能描述
    Input: 输入格式说明
    Output: 输出格式说明

    Args:
        query: 用户的自然语言查询
        params: 可选参数字典
        data_dir: 数据存储目录

    Returns:
        dict: {
            "result": 结果内容,
            "log": 详细研究日志(LLM 可读),
            "status": "success" | "error",
            "metadata": {...}
        }
    """# 实现return {"result": result,
        "log": detailed_log,  # 关键:LLM 可读的详细日志"status": "success","metadata": {...}
    }

关键规则

  • 输出必须包含 log 字段——这是给 Agent 的 LLM 看的"研究日志"
  • 日志要详细描述执行了什么操作、产生了什么中间结果
  • 状态码必须明确(success/error)
  • 错误时返回可读的错误信息,而非堆栈跟踪

5.2 数据库接入规则

Group 1:Web API 数据库

条件:有公开 REST/GraphQL API 的数据库
实现方式:
  - 每个数据库一个统一函数
  - 函数接受自然语言查询
  - 内部流程:
      1. LLM 解析查询意图
      2. LLM 根据数据库 schema 生成查询语句
      3. 执行查询
      4. 格式化结果为 LLM 可读文本
  - 示例:PDB / OpenTarget / ClinVar / KEGG

Group 2:本地数据湖

条件:无 Web 界面 / 需要离线访问的数据库
实现方式:
  - 下载到本地 data lake 目录
  - 预处理为结构化 pandas DataFrame
  - 存储为 .parquet 或 .h5 格式(高效查询)
  - 提供 query 函数支持过滤/搜索
  - 示例:基因注释集 / 蛋白相互作用网络 / 本地知识库

5.3 软件包管理

规则 5-A:容器化环境

# 基础镜像
FROM continuumio/miniconda3:latest

# 创建 conda 环境
RUN conda create -n env python=3.11 r-base -y

# 安装 Python 包
RUN pip install scanpy anndata biopython ...

# 安装 R 包
RUN R -e "install.packages(c(&#39;Seurat&#39;, &#39;ggplot2&#39;, ...))"

# 安装系统工具
RUN apt-get install -y samtools bedtools ...

# 安装 CLI 工具
RUN conda install -c bioconda cellranger ...

规则 5-B:版本锁定

  • 所有包锁定版本号(package==1.2.3)
  • 生成 requirements.txt + environment.yml
  • 记录每个包的版本选择理由

规则 5-C:依赖冲突处理

  • Python/R 混合环境用 conda 管理
  • 冲突包使用虚拟环境隔离
  • 提供环境验证脚本(setup.sh)

5.4 检索系统构建

为 Agent 配备工具检索能力:

对用户查询 query:
  1. 将 query 和所有工具的 description 生成 embedding
  2. 计算余弦相似度
  3. 取 Top-K(如 K=10)最相关的工具
  4. 将工具的完整文档注入 Agent 上下文
  5. Agent 基于文档选择并调用工具

附录 A:技术栈推荐

Markdown 表格
组件 推荐方案 备注
PDF 解析 pymupdf / marker-pdf marker-pdf 支持 OCR
LLM Claude 3.5 Sonnet / GPT-4o 长上下文+结构化输出
分块 langchain TextSplitter 支持递归分块
Embedding text-embedding-3-large 用于去重和检索
向量数据库 FAISS / Chroma 存储工具/任务
embedding 执行环境 Docker + Conda
多语言支持 数据格式 JSONL(提取结果)+ Parquet(数据湖) 高效存储
工作流编排 自定义 Python 脚本 简单可控



附录 B:成本估算

以 2500 篇论文为例:

Markdown 表格
项目 估算
论文 PDF 下载 ~50GB 存储
LLM 提取调用 7500 次, 平均 3 块/篇, 300–800∣
Embedding生成 10000次, 300–800
Embedding 生成 ~10000 次,~300–800∣
Embedding生成 10000次, 5 人工验证 2–4 人周 环境构建 1–2 人月



附录 C:完整项目结构

project/
├── data/
│   ├── papers/              # 原始 PDF
│   ├── extractions/        # AI 提取结果 JSONL
│   ├── aggregated/         # 去重聚合后的实体
│   └── data_lake/          # 本地数据库(Group 2)
├── src/
│   ├── fetch_papers.py     # Phase 1: 论文获取
│   ├── extract.py          # Phase 2: AI 提取
│   ├── deduplicate.py      # Phase 3: 去重聚合
│   ├── validate.py         # Phase 4: 验证框架
│   └── build_env.py        # Phase 5: 环境构建
├── tools/                  # 封装好的工具
│   ├── genomics/
│   ├── proteomics/
│   └── ...
├── tests/                  # 测试用例
├── docker/
│   ├── Dockerfile
│   ├── requirements.txt
│   └── environment.yml
└── config/
    ├── categories.json     # 子领域配置
    ├── prompts/            # LLM Prompt 模板
    └── tool_registry.json  # 工具注册表

评论 (0)

加载评论中…

Biomni干了什么?怎么干的 - 用可视化演示,真正搞懂 AI 与编程 | 必学必会