关于 tooluniverse-organic-chemistry
面向有机化学问题求解的推理指南,涵盖反应与逆合成、光谱解析和立体化学,强调从机理和结构证据逐步推导。还介绍用 ToolUniverse 反应预测和分析工具交叉核验。
主要功能
- 01按反应位点与电子流推理
- 02结合条件判断反应类型与产物
- 03从产物进行逆合成分析
- 04综合分子式与光谱解析结构
- 05用 ToolUniverse 工具交叉核验
适用场景
- 01预测有机反应产物
- 02规划候选合成路线
- 03根据 IR 和 NMR 推断结构
- 04核对燃烧分析与不饱和度
MCP 相关
指南提及通过 MCP 或 SDK 使用分子式分析和不饱和度计算工具,并可用 RXNChemistry 工具交叉核验反应预测与逆合成。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-organic-chemistry安装后在 Claude Code 中输入/tooluniverse-organic-chemistry确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/chemistry_facts.pycrystal_validator.pydegrees_of_unsaturation.pymolecular_complexity.pymolecular_formula.pysmiles_verifier.pystereochem_tracker.py详细介绍
有机化学推理指南
本指南讲解的是如何思考有机化学问题,而不是应该记住什么。
1. 预测反应产物——推理过程
不要根据名称反应进行模式匹配,而要从基本原理出发推理:
第 1 步——找出反应性最强的位置
观察每个分子,并思考:电子密度在哪里?
- 富电子位点(亲核试剂):N、O、S 上的孤对电子;π 键(C=C、芳香环);碳负离子;烯醇盐
- 缺电子位点(亲电试剂):与电负性原子相连的碳(C=O、C-X);碳正离子;具有空轨道的原子
反应会发生在亲核性最强的位点与亲电性最强的位点相遇之处。
第 2 步——这是哪种成键/断键方式?
三种基本类别:
- 离子反应(极性反应):电子成对移动。一种物质提供电子,另一种接受电子。溶液化学中最常见。
- 自由基反应:电子逐个移动。留意:加热 + 过氧化物、紫外光(hv)、NBS 或自由基引发剂。
- 周环反应:电子在协同的环状过渡态中移动。留意:没有其他试剂时的加热或光照、二烯 + 亲二烯体、σ 迁移反应。
第 3 步——电子如何流动?
从亲核试剂向亲电试剂画箭头。思考:
- 哪个原子的轨道重叠最佳?
- 是否必须进行背面进攻(SN2),还是亲核试剂可以从任一面靠近(SN1)?
- 对 C=C 的加成:哪个碳原子与亲电试剂结合?(马氏规则 = 形成取代程度更高的碳正离子中间体;反马氏规则 = 自由基反应或硼氢化)
- 对 C=O 的加成:亲核试剂进攻碳原子(Bürgi-Dunitz 角约为 107 度)。
- 对 E2 消除:碱的体积决定区域选择性。位阻大的碱(KOtBu、LDA、DBU)倾向于生成霍夫曼产物(取代程度较低的烯烃),因为它们会夺取位阻较小的质子。体积小的碱(NaOEt、KOH、NaOMe)倾向于生成扎伊采夫产物(取代程度较高、稳定性更高的烯烃)。预测区域选择性前,务必先检查碱的体积。
- 对多步合成中的离子追踪:每一步都写出完整的离子方程式。追踪每种阳离子和阴离子在各步转化中的变化——识别哪些物质溶解、哪些沉淀、形成了哪些络合物,以及哪些物质仍留在溶液中。每一步都要确认:所有离子都追踪到了吗?质量守恒吗?使用溶解度规则(Ksp)和络合物稳定常数(Kf)预测哪些物种会留存。
第 4 步——反应的驱动力是什么?
每个反应都需要热力学上的理由才能进行:
- 离去基团离去:良好的离去基团(I > Br > Cl > F;甲磺酸酯、三氟甲磺酸酯)在离去后能稳定自身
- 环张力释放:环氧化物开环、环丙烷开环
- 芳香性增加:互变异构为芳香形式、消除形成共轭体系
- 形成强键:C-O、C-F、H-O 键很强;形成这些键的反应更有利
- 气体逸出:CO2、N2 或 H2O 的逸出推动平衡正向移动
第 5 步——检查产物是否合理
给出答案前:
- 所有原子的价态都正确吗?(C=4、N=3、O=2、H=1、卤素=1)
- 分子式守恒吗?数清两侧的每个原子。
- 产物在热力学上合理吗?(不要无故提出反芳香性产物或张力较大的小环)
- 不饱和度是否合理?(DoU = (2C + 2 + N - H - X) / 2;苯环 = 4 DoU)
命名反应决策树
根据试剂/条件识别反应类型,然后应用其产物拓扑:
| 试剂/条件模式 | 反应类型 | 产物逻辑 |
|---|---|---|
| RMgBr(或 RLi)+ ArX + Pd 或 Ni 催化剂 | Kumada 偶联 | R 替换 Ar 上的 X;过量 RMgBr 会替换所有 X |
| Ph3P=CHR + 醛/酮 | Wittig 反应 | C=C 替换 C=O;非稳定叶立德 → Z-烯烃;稳定叶立德(酯/CN)→ E-烯烃 |
| 亚砜 + 强亲电试剂(Tf2O、Ac2O) | Pummerer 重排 | S 的氧化态降低;α-碳与亲核试剂/离去基团形成新键 |
| 烯丙基乙烯基醚受热(或 1,5-二烯-3-醇 + 碱) | [3,3]-σ迁移反应(oxy-Cope/Claisen) | 重新画出六元椅式过渡态;在 1,6 位形成新的 σ 键;旧的 3,4 键断裂 |
| 二烯 + 亲二烯体,受热 | Diels-Alder 反应 | [4+2] 环加成;立体化学遵循 endo 规则;顺式亲二烯体取代基保持顺式 |
| ArX + 过量有机金属试剂(无催化剂) | 亲核芳香取代或苯炔反应 | 每个 X 都被亲核试剂替换;根据当量数确定取代程度 |
逆合成分析
从产物出发反向推断起始原料,识别关键键的形成方式:
-
Robinson 成环反应(产物为稠合或带取代基的 2-环己烯酮体系):
- 断开烯酮羰基 α 位的 C-C 键 → 得到两个片段:1,3-二羰基化合物 + 甲基乙烯基酮(或等效的 Michael 受体)
- 1,3-二羰基化合物(例如 2-甲基-6-氧代环己烷甲酸乙酯)是起始原料
- 反应机理:Michael 加成,然后发生分子内羟醛缩合
-
分子内羟醛反应(开放链底物在 KOH/碱作用下形成稠环):
- 产物为稠合双环烯酮 → 起始原料为 1,5-二酮(或 1,n-二酮)
- 碳原子计数规则:产物环大小 = 两个羰基之间的碳原子数 + 1
- 例如:用 KOH 制备六氢萘-2-酮 → 起始原料应为 2-(3-氧代戊基)环己酮,而不是丁基链
-
一般断键启发法——识别新键,再选择合适的反应:
- 新的 C-C 键:羟醛反应、Claisen 反应、Michael 加成、Wittig 反应、Grignard 反应、Diels-Alder 反应
- 新的 C-O 键:环氧化、水合、氧化
- 新的 C-N 键:还原胺化、Gabriel 合成、酰胺偶联
基于 ML 的反应/逆合成预测(用于交叉验证,而非替代)
RXNChemistry_predict_reaction(正向预测:从反应物预测最可能的
产物,使用 IBM RXN for Chemistry ML 模型)和 RXNChemistry_predict_retrosynthesis
(从目标产物预测候选合成路线)可用于交叉验证基于基本原理推导的
答案,尤其适用于上述命名反应决策树以外的反应。请先按照本技能中的
步骤推理反应机理——这些工具用于检查提出的产物/路线是否合理,而不是替代理解
产物形成的原因。
需要 RXN4CHEMISTRY_API_KEY——已进行实时验证:未设置密钥时,这两个
工具都不会出现在 tu list 中,也不会加载(与 ToolUniverse 中其他位置的
Addgene/USPTO 有相同的刻意密钥门控模式);设置密钥以启用工具,不要将它们缺失
视为错误。这两项操作都是异步的(通过 poll_interval/max_wait_time 参数轮询),
因为底层模型以排队任务的方式运行,而不是同步 API 调用。
产物预测策略(分步进行)
- 反应位点:标记所有反应物中的每个亲核中心和亲电中心
- 反应类型:将试剂/条件模式与上述决策树进行匹配
- 键的变化:明确列出哪些键断裂、哪些键形成(逐一写出)
- 区域化学:Markovnikov(阳离子稳定性)与 anti-Markovnikov(自由基/BH3);对于 ArX,每个离去基团都是独立的反应位点
- 立体化学:Wittig 的 E/Z 由叶立德类型决定;SN2 发生构型反转;[3,3] 为同面-同面(椅式过渡态);Pummerer 保留硫的连接关系
- 命名产物:将最终结构转换为 IUPAC 名称;对于联芳基体系,按系统规则计算苯基数量(例如,三个相连的苯基 = terphenyl,而不是 triphenylbenzene)
根据反应确定结构
- 当烃在“常规条件”下与 Br2 反应(无 UV、无催化剂)时:这是离子型加成(加到张力环或 C=C 上),而非自由基取代
- 如果产物中每个发生反应的碳原子恰好对应 1 个 Br:考虑张力环丙烷开环或跨 C=C 加成
- Br2 会使张力三元环发生离子型开环,而非自由基取代
- 当金属溶解在其自身高价盐的溶液中时,产物为中间氧化态(归中反应),而非金属置换
燃烧分析策略
- 首选:使用
MolecularFormula_analyze工具(通过 MCP/SDK),并设置sample_g、CO2_g、H2O_g和molar_mass参数。备用方案:直接运行molecular_formula.py。 - 首选:使用带有
formula参数的DegreesOfUnsaturation_calculate工具。备用方案:运行degrees_of_unsaturation.py --formula <result>。 - 将 DoU 与任何官能团测试结果(Br2 褪色、KMnO4 等)结合,以缩小结构范围
2. 光谱解析——解题策略
不要查阅化学位移表。请改用以下系统方法:
从分子式开始
如果已知分子式,先计算不饱和度。这能立即告诉你:
- DoU = 0:无环、无双键(饱和、开链)
- DoU = 1:一个环或一个双键
- DoU = 4:几乎可以确定有一个苯环(3 个双键 + 1 个环)
- DoU = 2:可能是一个三键、两个双键,或一个环 + 一个双键
仅凭这一个数值,就能在查看任何光谱之前排除大量结构类别。
IR:先找明显的峰
不要试图指认每个峰。请先问三个问题:
- 在 2500-3500 附近是否有宽吸收峰? 如果有:可能是 O-H(非常宽)或 N-H(较尖锐;伯胺有时会出现两个峰)。
- 在 1650-1750 附近是否有强而尖锐的峰? 如果有:可能是 C=O。其具体位置可判断类型(酯 ~1735、酮 ~1715、酸 ~1710、酰胺 ~1680)。
- 在 2100-2300 附近是否有峰? 如果有:可能是三键(C-三键-C 或 C-三键-N)或累积双键。
只要能回答这三个问题,就能识别主要官能团。其他信息都只是辅助确认。
1H NMR:每个信号提供三项信息
每个信号都能告诉你三件事——请充分利用:
- 化学位移(位置):该质子受到多大程度的去屏蔽?靠近电负性原子的质子会向低场移动(ppm 较高)。芳香质子为 6.5-8.5 ppm;烷基质子为 0.8-1.7 ppm;与 C=O 相邻的质子为 2.0-2.7 ppm。
- 多重性(裂分模式):该质子有几个相邻质子?n 个相邻质子 = n+1 个峰。三重峰表示有 2 个相邻 H;四重峰表示有 3 个相邻 H。这能反映连接关系。
- 积分(面积):该信号代表多少个质子?比例比绝对数值更重要。对于 C3 化合物,3:2:1 的积分比强烈暗示存在 CH3、CH2、CH。
13C NMR:统计对称性
- 统计不同碳信号的数量,并与分子式比较。
- 信号数少于碳原子数 = 分子具有对称性(存在等价碳)。
- 羰基碳出现在 160 ppm 以上。芳香族/烯烃碳:100-160 ppm。sp3 碳:0-90 ppm。
组合策略
没有任何一种谱图能单独给出答案。要综合分析:
- 分子式给出 DoU(结构约束)
- IR 确定官能团类别(C=O?O-H?N-H?)
- 13C 告诉你有多少种独特的碳环境
- 1H 告诉你连接关系(通过裂分)和氢原子数(通过积分)
- 提出一个与所有数据都一致的结构
- 验证:你提出的结构能否预测每个观测到的信号?
3. 立体化学——如何进行三维思考
找出立体中心
立体中心是一个连接着四种不同取代基的碳原子。找出它们的方法:
- 查看分子中的每个 sp3 碳
- 检查:连接在它上面的四个基团是否各不相同?(沿每条路径向外追踪——如果两条路径在任何一点变得相同,这两个基团就相同)
- 环上的碳也要计算——如果沿环朝相反方向延伸的两条“环路径”在任何一点不同,它们就是不同的取代基
确定 R/S
- 按 CIP 优先级为四个取代基排序(原子序数越大,优先级越高)
- 若优先级相同:沿链移至下一个原子,再次比较
- 调整分子方向,使最低优先级的基团(#4)背向你
- 按 1-2-3 的优先级顺序观察:顺时针 = R,逆时针 = S
- 速记:如果图中 #4 已经背向你,直接读取排列即可。如果 #4 朝向你,则读取排列后将答案反转。
预测反应的立体化学结果
思考反应机理:
- SN2:立体中心发生构型反转(背面进攻)。总是如此。
- SN1:外消旋化(平面的碳正离子中间体受到两面进攻)。预计比例约为 50:50,或略有偏向。
- E2:需要反式共平面几何构型(H 与离去基团相隔 180 度)。这会限制形成的烯烃几何构型。
- 烯烃加成:同面加成(硼氢化、催化加氢)与反面加成(溴加成、环氧化后开环)
- 带有 α-立体中心的羰基加成:Felkin-Anh 模型——亲核试剂从与 α-碳上最大取代基相反的一侧进攻
立体异构体之间的关系
- 对映异构体:不能重叠的镜像。除旋光性外,物理性质相同。
- 非对映异构体:不是镜像的立体异构体。物理性质不同——可以分离。
- 内消旋化合物:具有立体中心,但整体因内部镜面对称面而不具手性。
4. 打包脚本
这些可直接运行的脚本位于 skills/tooluniverse-organic-chemistry/scripts/。
请通过 Bash 工具使用它们,无需手动计算——它们会验证输入并打印校验信息。
chemistry_facts.py — 化学与物理事实参考
用于查询容易记错的事实。请查询此脚本,而不是猜测。
包含三个类别:allotropes、point_group、common_reagents。不添加额外参数运行,即可列出某个类别中的所有条目。
python chemistry_facts.py --type allotropes --element P
python chemistry_facts.py --type point_group --molecule "benzene"
python chemistry_facts.py --type common_reagents --reagent "LiAlH4"
python chemistry_facts.py --type allotropes # list all elements
**覆盖范围:**P、C、S、O 的同素异形体。15 种分子的点群(水的 C2v 至 H2 的 D∞h)。24 种试剂(LiAlH4 至 DMDO),包含全名、功能、选择性、立体化学以及关键区别说明。
**使用时机:**任何关于同素异形体、分子对称性/点群或试剂选择性的问题。报告试剂信息前,务必先查询。
crystal_validator.py — 晶体结构密度验证器
首选:使用 CrystalStructure_validate 工具(通过 MCP/SDK),并提供晶胞参数(a、b、c、alpha、beta、gamma、Z、MW、density)。备用方案:直接运行 crystal_validator.py。
通过根据晶胞参数计算理论密度并与报告值比较,验证晶体结构数据。标记出可能表明已发表数据集中存在错误的不一致之处。
支持全部七种晶系(立方、四方、正交、六方、三方、单斜、三斜)。
python crystal_validator.py --a 5.43 --b 5.43 --c 5.43 --Z 8 --MW 28.085 --density 2.329
python crystal_validator.py --datasets datasets.json # batch mode: JSON array of datasets
角度默认为 90deg。输出:晶系、体积、计算密度、误差百分比、判定结果(OK/WARNING/MISMATCH)。 批处理模式可比较多个数据集以找出异常值。密度公式:d = (Z * MW) / (V * Na)。
使用场景: 晶体结构验证、密度一致性检查、查找错误数据集。
stereochem_tracker.py — 跟踪反应序列中的立体化学
跟踪一系列反应过程中立体中心的 R/S 构型,并预测每一步的立体化学结果。
python stereochem_tracker.py --start R --reactions "SN2, oxidation, SN1"
支持的反应: SN2(反转)、SN1(外消旋)、E2/E1(消除)、还原/氧化/氢化/硼氢化/环氧化(保持构型)、mitsunobu(反转)、double_inversion(保持构型)、racemization/epimerization/enolization(外消旋)。
使用场景: 跟踪多步合成中的手性,验证净构型保持或反转。
smiles_verifier.py — SMILES 分子性质验证器(不使用 RDKit)
首选:使用 SMILES_verify 工具(通过 MCP/SDK),并提供 smiles 和可选的约束参数(mw、heavy_atoms、valence_electrons、total_atoms、formal_charge)。备用方案:直接运行 smiles_verifier.py。
无需外部依赖即可解析 SMILES 字符串,并计算分子量、重原子数、价电子数、总原子数和形式电荷。随后可选择根据用户提供的约束进行检查。每次设计或给出 SMILES 答案时都要使用此工具。
python smiles_verifier.py --smiles "CC(C)(C(=N)N)N=NC(C)(C)C(=N)N" --mw 198.15 --heavy_atoms 14 --valence_electrons 80
约束标志: --mw(容差 0.5)、--heavy_atoms、--valence_electrons、--total_atoms、--formal_charge
使用场景: 报告 SMILES 答案前务必进行验证。可捕获分子量、原子数和电子数错误。
degrees_of_unsaturation.py — 不饱和度(DoU)计算器
首选:使用 DegreesOfUnsaturation_calculate 工具(通过 MCP/SDK),并提供 formula 或各原子数量参数。备用方案:直接运行 degrees_of_unsaturation.py。
根据分子式字符串或各原子数量计算 DoU = (2C + 2 + N − H − X) / 2。 支持所有卤素(F、Cl、Br、I),并注明 O 和 S 不影响 DoU。 输出完整计算过程、结构解释和往返验证。
python degrees_of_unsaturation.py --formula C6H6
python degrees_of_unsaturation.py --C 10 --H 14 --O 2 --N 1
输出:原子数量、逐步公式、结果、结构解释、非整数 DoU 警告。
molecular_formula.py — 燃烧分析与分子式分析
首选:使用 MolecularFormula_analyze 工具(通过 MCP/SDK),并提供燃烧分析或分子式参数。备用方案:直接运行 molecular_formula.py。
一个脚本包含两种模式。
模式 1:燃烧分析 — --sample_g、--CO2_g、--H2O_g、可选的 --molar_mass
模式 2:分子式分析 — --formula C6H6(分子量、DoU、元素组成)
python molecular_formula.py --sample_g 0.2 --CO2_g 0.4874 --H2O_g 0.1998 --molar_mass 78
python molecular_formula.py --formula C6H6
5. 计算流程
始终使用 Bash 工具将内容作为 Python 脚本执行——不要在脑中计算。优先使用捆绑脚本(molecular_formula.py、degrees_of_unsaturation.py),而不是从头编写代码。
关键公式(捆绑脚本未涵盖的情况,请编写并运行 Python):
- 燃烧分析:moles_C = CO2_g / 44.01;moles_H = H2O_g / 18.015 * 2;根据质量差求 moles_O。比值 → 最大公约数 → 实验式。倍数 = MM / 实验式_MM。
- 不饱和度:(2C + 2 + N - H - X) / 2。O 和 S 不影响计数。
- 限量试剂:对每种试剂计算 equiv = mass / (MW * stoich_coeff);equiv 最小的试剂为限量试剂;产率 = min_equiv * product_stoich * product_MW。
6. 何时推理,何时查找资料
对以下内容进行推理(不要查找资料):
- 反应产物和机理
- 光谱解析(综合已有数据)
- 立体化学结果
- 不饱和度
- 反应在热力学上是否有利
对以下内容使用捆绑脚本进行计算:
- 晶体结构密度验证:首选:
CrystalStructure_validate工具。备用:crystal_validator.py(绝不要手动计算晶胞体积) - 多步合成中的立体化学跟踪:
stereochem_tracker.py(跟踪 SN2、SN1 等反应过程中的 R/S) - 不饱和度:首选:
DegreesOfUnsaturation_calculate工具。备用:degrees_of_unsaturation.py - 燃烧分析和分子式分析:首选:
MolecularFormula_analyze工具。备用:molecular_formula.py - SMILES 验证(MW、重原子、价电子):首选:
SMILES_verify工具。备用:smiles_verifier.py(始终验证 SMILES 答案)
对以下内容使用工具查找资料:
- 元素的同素异形体(数量、名称、性质):
chemistry_facts.py --type allotropes --element X - 分子点群和对称元素:
chemistry_facts.py --type point_group --molecule "name" - 试剂的功能、选择性或关键区别:
chemistry_facts.py --type common_reagents --reagent "name" - 特定物理常数(沸点、pKa 值、溶解度):先使用
PubChem_get_CID_by_compound_name,再使用PubChem_get_compound_properties_by_CID - 系统命名法(IUPAC)名称 → 结构:
OPSIN_name_to_structure(参数name)——确定性解析器,可返回 SMILES/InChI/InChIKey,是将系统命名法名称(例如“2-acetoxybenzoic acid”)转换为结构的首选工具,之后可用SMILES_verify验证。商品名或俗名会返回parsed=false→ 改用PubChem_get_CID_by_compound_name。 - 化合物是否存在及其规范 SMILES/InChI:
PubChem_get_CID_by_compound_name或PubChem_get_compound_properties_by_CID - 类药性、生物活性数据、测定结果:
ChEMBL_get_molecule或ChEMBL_search_molecules - 代谢物通路和生物学背景:
HMDB_get_metabolite
晶体结构验证策略:
提取每组数据的晶胞参数、Z、MW 和密度。批量运行 crystal_validator.py --datasets datasets.json。百分比误差最大的就是错误所在。常见错误:Z 值错误、参数互换、角度转录错误。
根据约束进行分子设计(SMILES 设计):
- 从约束条件(MW、重原子、VE)出发,估算分子式
- 构建 SMILES,然后始终进行验证:
python smiles_verifier.py --smiles "..." --mw X --heavy_atoms Y --valence_electrons Z - 如果任何约束未通过,则修改并重新运行,直到全部通过
推理后验证模式:
- 对问题进行推理,得出一个初步答案
- 使用 PubChem 验证已知化合物;使用 Python 计算验证数值答案
- 对于数值答案:回答前始终使用脚本进行计算