检索与构建

检索与构建接入

将平台已有的公开反应用于文献核对、数据分析、模型训练或实验参考。网页、程序和 AI 助手使用同一套检索与构建能力。

研究人员:在网页查找

找相似反应、核对条件与出处,或描述需求后构建分析数据集。网页检索可直接使用。

脚本与自动化实验室:API

在分析或实验流程中查询已有记录,下载研究所需数据。实验室产生的新结果通过上传接口提交。

AI 助手:MCP 工具

在对话中查找反应、引用来源,或提出数据筛选方案,再按核对后的规则构建。

在程序或 AI 客户端中使用

可以检索什么

以下条件可以组合使用。MCP 与 API 返回相同的反应记录、原始内容和来源,外部大模型可直接读取并分析。

分子结构
按反应物、产物、催化剂等角色进行精确结构、子结构、SMARTS 或相似结构检索。
多物料与官能团
组合多个物料条件,指定必须包含或排除的片段,支持 AND / OR。默认由不同分子分别满足各个条件。
实验条件与结果
筛选温度、时间、压力、产率、ee 等数值范围,也可按催化剂、溶剂、气氛等字段的文字筛选。
键变化
按元素对检索断键、成键或键级变化,例如 C–N 断裂;结果同时说明原子映射的可用范围。
数据范围与字段完整性
限定一个数据集、检索原文关键词,或要求某个字段已填写或为空。字段名、单位和可用操作由工具提供。
search_reaction_records
{
  "query": {
    "component_constraints": [
      {
        "role": "reactant",
        "structure": "c1ccccc1",
        "mode": "substructure"
      }
    ],
    "condition_filters": [
      {
        "field": "temperature_C",
        "operator": "range",
        "minimum": 20,
        "maximum": 80
      }
    ],
    "page_size": 5
  }
}

数值使用检索字段规定的单位,例如温度 °C、时间 h、产率 %。已识别的原文单位会自动换算;未知单位不参与数值筛选。室温默认不计入温度范围,可明确启用室温假设。

让模型理解结果并引用来源

  1. 先调用 get_search_schema 了解参数,再用 get_field_catalog 确认字段;官能团编号由 get_functional_groups 提供。
  2. 调用 search_reaction_records 后,核对 applied_query、匹配数量 total 和索引覆盖情况 coverage;用 page / page_size 翻页,每页最多 100 条。
  3. 将结果的 id 传给 get_reaction 的 record_id,读取完整结构化记录和原始字段,核对反应步骤、物料、测量对象及出处后再解释。

当前范围为各公开数据集的最新已发布版本,且文件已完成索引。私密、草稿和已下线数据不返回。检索不能替代对一锅多步或测量归属的核对;暂不支持任意步骤内的嵌套条件或任意反应 SMARTS 检索;键变化条件仅适用于有原子映射的记录。未查到结果也可能是相关数据尚未完成索引。

让助手查找并引用已有反应

配置 iSynth 服务和访问凭证后,助手可先了解数据集与字段,再调用检索工具,并读取单条反应的原始数据与出处。只需 reactions:read 权限;无需在 iSynth 配置模型,也无需上传数据或创建构建任务。

连接到你的 AI 客户端

Streamable HTTP · Bearer

在支持远程 MCP 的客户端添加以下服务地址和 Authorization 请求头。客户端配置格式可能不同,下面提供常见的 mcpServers 示例。

https://your-isynth-host/api/mcp
{
  "mcpServers": {
    "isynth": {
      "url": "https://your-isynth-host/api/mcp",
      "headers": {
        "Authorization": "Bearer <ISYNTH_AUTOMATION_TOKEN>"
      }
    }
  }
}

将占位符替换为 iSynth MCP 访问凭证,不是模型 API Key。已有凭证不能再次读取,遗失时请撤销并新建。

get_search_schema → get_field_catalog
search_reaction_records → get_reaction

外部助手可直接组织检索条件。调用 plan_dataset 时使用你在 iSynth 中配置的模型;先核对返回的条件、字段与未解决要求,再调用 build_dataset。

记录怎样保存与检索

JSONL 是上传或导出的交换格式,每行表示一个反应。平台使用 PostgreSQL 保存完整 JSONB 记录,并建立物料、阶段、测量值和分子结构索引;原始文件另行保存。检索通过数据库筛选和结构匹配完成,不逐行读取下载文件。

新的反应只要完成解析并公开发布,就可使用已有的结构、温度、产率等条件检索。查询字段由规范和参数登记表定义,不由已有反应名称生成。新的条件类型需要登记;新增记录本身不需要修改检索程序。

自定义参数目前在对应阶段或物料的 JSONB 中筛选。登记并不自动建立每个数值的专用索引;常用参数可依据查询性能增设可重建的索引,无需更改原始数据。

按键变化检索

例如检索 C–N 断裂:网页在“结构与官能团”下添加键变化;MCP 或 API 使用下面的条件。可选择断键、成键或键级变化,并与分子结构、实验条件组合。

{
  "bond_changes": [
    {
      "change": "broken",
      "elements": [
        "C",
        "N"
      ]
    }
  ]
}

依据原始 SMILES 中两侧一致的原子映射编号比较连接关系,只比较两侧均出现的原子。缺少副产物、没有映射或映射有冲突时,不据此推断断键。结果提供 bond_change_coverage;这表示投料到最终产物的净变化,不表示机理或一锅反应的全部中间步骤。

自定义参数检索

补充条件保存在 parameters 中。已登记的参数可按数值、文字或是否填写筛选;用 get_parameter_catalog 查看名称、单位和支持的操作。同组条件匹配同一个阶段,避免混用不同步骤的条件。

上传自定义字段不会自动加入下拉列表。审核登记时明确英文标识、含义、数值/文字/布尔类型及单位。页面使用登记表的中文或英文名称显示,同一参数的标识不随语言变化。

quantity 类型可记录单值、区间或单侧界限,按原文选择写法;不需要为每种写法登记一个新字段。原始记录使用 lower/upper,查询边界使用 minimum/maximum。

原文参数值的写法
30 Hz{"value":30,"unit":"Hz"}
20–40 Hz{"lower":20,"upper":40,"unit":"Hz"}
<30 Hz{"value":30,"unit":"Hz","qualifier":"<"}

数值参数:单值等于使用 value,例如 30 Hz;范围使用 minimum 和 maximum,可只填一侧。范围按相交匹配,20–40 Hz 会匹配 30 Hz 或 35–50 Hz。单值等于 30 Hz 不匹配 20–40 Hz、约 30 Hz 或小于 30 Hz。文字参数使用等于或包含;布尔参数使用 true 或 false。

{
  "parameter_filters": [
    {
      "parameter": "conditions.milling_frequency",
      "operator": "equals",
      "value": 30
    }
  ]
}
{
  "parameter_filters": [
    {
      "parameter": "conditions.milling_frequency",
      "operator": "range",
      "minimum": 20,
      "maximum": 40
    }
  ]
}

示例筛选 20–40 Hz 的球磨频率。未登记参数仍保留在完整记录中。新增检索参数由维护者审核登记,已有兼容记录无需重新上传。结果中的 parameter_coverage 说明事实数据是否齐备。

字段用途后续阶段
parameters补充结构化参数,如研磨球直径。贡献者可以直接添加名称和值。按参数名沿用或更新;null 清除该参数。

例如 parameters 中的 milling_ball_diameter: {value: 0.5, unit: "cm"} 可以按 4–6 mm 检索。新记录统一使用 parameters;登记后即可按其类型与单位检索。

null 表示停止沿用此前的已知值,不表示 0,也不推断反应停止。省略字段则表示本阶段没有报告变化。登记需提供稳定名称、科学含义、类型、位置、单位换算及示例,由维护者审核发布;当前没有开放自助登记接口。

python isynth_mcp_client.py parameters
python isynth_mcp_client.py validate parameter-upload.json
python isynth_mcp_client.py upload parameter-upload.json
# After parsing, review and publication:
python isynth_mcp_client.py search parameter-query.json
查看参数登记表

按任务选择权限

创建 API Key

查询已有反应选择 reactions:read;需要规划、构建和下载构建结果时,再添加 construction:write。API 与 MCP 共用这些权限。

接口与 MCP 工具对照
任务HTTP APIMCP
检索规范与示例GET /api/automation/v1/search/schemaget_search_schema
参数登记表GET /api/reactions/parameter-catalogget_parameter_catalog
了解数据集GET /api/automation/v1/datasetslist_reaction_datasets
查询反应POST /api/automation/v1/searchsearch_reaction_records
读取单条记录GET /api/automation/v1/reactions/{record_id}get_reaction
生成筛选方案POST /api/automation/v1/planplan_dataset
构建与查看结果POST /api/automation/v1/runs · GET /api/automation/v1/runs/{run_id}build_dataset · get_build

实验室需要把新结果提交到平台时,请查看 程序与 AI 上传指南。