从原始实验数据到药物发现参考数据集
pKa 是分子得到或失去一个质子时所对应的 pH。它决定了药物如何溶解、如何穿过细胞膜以及如何与靶点结合,因此是药物研发人员最先测定的性质之一。
对仪器来说,测定 pKa 是例行工作;但要把原始记录变成可信的参考值,却需要专业功夫。训练有素的分析人员要校正电极读数,在整个 pH 范围内拟合紫外光谱,把甲醇–水体系中的测量结果外推回纯水,并判断哪些测定值得信任。一次又一次地做下来,既耗时又需要格外细心。
于是我们把分析工作交给了 Eigent 中的 Gemini 4 Carbon。一份任务说明加上 97 个原始仪器文件——所有计算结果都已清空,没有互联网,没有任何提示——最终换来了一套覆盖 35 个类药化合物的完整 pKa 参考数据集。99.7% 的单项测量结果正确:这是迄今为止我们在这项任务上测试过的所有模型中的最高分。
工作流一览
一份任务说明,就让它从原始文件一路做到完整的参考数据集。每个阶段都留下了我们可以检查的成果。
| 阶段 | 做了什么 | 产出了什么 |
|---|---|---|
| 解码 | 弄清仪器未公开文档的文件格式及其电极校准 | 每个读数的 pH 和校正后 pH |
| 拟合 | 在整个 pH 范围内同时在多个波长上拟合紫外光谱 | 291 次滴定各自的 pKa |
| 外推 | 把甲醇–水体系的结果外推回纯水 | 97 次测定各自的水相 pKa |
| 判断 | 依据证据采纳或排除测定——沉淀、光谱有误、不符合物理规律的斜率 | 仅基于可信测定的化合物平均值 |
| 交付 | 写出答案以及生成答案的脚本 | 参考数据集和一个 Python 分析脚本 |
| 检查 | 为答案评分,并确认运行全程离线 | 各层级的结果,以及一份审计记录 |
下面介绍 Gemini 4 Carbon 是如何完成的——包括它在哪些地方失分,以及原因。
它交付了什么
- 一套完整的 pKa 参考数据集——包含每次滴定的 pKa 和甲醇含量、每次测定的水相 pKa,以及每个化合物的平均值、标准差和采纳测定列表。
- 以代码形式呈现的分析——一个 Python 脚本,可从原始文件重建整份答案。重新运行它,就能逐字节地得到相同的答案。
- 一份书面方法总结——读数如何校准、光谱如何拟合、测定如何外推,以及哪些测定被排除及其原因。
运行环境
- Eigent 1.0.7,在单个会话中使用 Single Agent 模式,模型为 Gemini 4 Carbon。
- 一个本地文件夹,其中只包含来自一台自动滴定仪的原始仪器文件、一份附结构的化合物列表、甲醇–水混合体系的物理常数,以及一个装有常用科学计算库和 RDKit 的 Python 环境。
- 离线,独立完成。 任务说明禁止使用互联网,运行期间也没有人回答问题。每一个判断——信任哪次测定、遵循哪项设置——都由智能体自己做出。
- 只有原始信号。 仪器软件计算出的所有数值都已清空,因此文件中没有任何地方直接给出答案。
- 没有方法提示。 任务说明只描述了测量内容和需要报告的结果,而没有说明如何分析。选择用哪种物理化学方法,本身就是任务的一部分。
Gemini 4 Carbon 如何工作
Gemini 4 Carbon 以单个智能体的方式在终端中逐步完成任务,全程无需人工输入。这次运行分为五个阶段。
-
熟悉情况。 它读取了化合物列表和校准常数,解析了所有测定类型的仪器 XML,并发布了第一条状态更新:"now analyzing instrument recordings, medium composition, and electrode/UV equations."
-
逆向解析仪器。 它弄清了滴定仪如何把电极毫伏读数换算为 pH,以及四参数电极校准如何将其映射为真实的氢离子浓度。它根据加液体积推导出一个组成常数背后的代数关系——
a = 1 + b·(0.2 + 0.025/V)——与文件中的数值吻合到 3 × 10⁻⁵。随后,它梳理了全部 97 个文件中分析人员的设置:pH 和波长窗口、浊度限值以及转变的数量。 -
构建并测试分析流程。 它建立了多波长光谱拟合,先在一个化合物上试验,再应用到全部 291 次滴定。它直接用单一形态的吸收平台区检验了自己的稀释校正,并用 RDKit 将每个化合物归类为酸、碱或两性电解质。它还找出了分析人员手动覆盖设置的每一次扫描——并遵循了这些选择。
-
像实验室科学家一样做质量控制。 它的第二条状态更新:"now examining edge cases, turbid sweeps, multiprotic zwitterions, and outlier runs." 它发现的问题包括:
- C21_4——该化合物已从水中析出沉淀。这次测定的光谱与其他测定的匹配度只有 0.20,因此它没有把这次测定计入化合物平均值。
- C27_1——一个吸光度偏低、光谱有误的样品瓶,是通过分别拟合两个紫外吸收带发现的。
- C29_2——外推斜率不符合物理规律(+200,而同组的其他测定分别为 +98 和 +114),因此它排除了这次测定。
- 500 nm 处出现负吸光度——追查到的原因是参比光谱中有一个气泡。
它梳理了实验室的实验时间线以及 2022 年 1–2 月的重测记录,以弄清为什么某些化合物有额外的测定。它还用独立证据检验了自己的方法:在 15 个同时在水中直接测定过的化合物上,比较了加权外推和不加权外推。加权版本的误差更低——0.0604 对 0.0623——所以它保留了加权版本。
-
交付。 它写了一个 451 行的分析脚本,运行该脚本,并验证了输出的 schema、类型和取值范围。
总计:76 次模型调用和 85 条终端命令,没有失败的调用,也没有任何人工输入。
结果
文件夹中出现了两样东西:参考数据集——291 次滴定、97 次测定和 35 个化合物——以及生成它的脚本。Gemini 4 Carbon 的最终消息总结了所用方法——介质组成与电极校准、多波长紫外拟合、水相外推以及测定筛选——并列出了它排除的每一次测定及其原因。
得分情况
我们在智能体的文件夹之外,将答案与参考数据集进行比对评分。评分非常严格:每次滴定、每次测定和每个化合物都是一项独立的通过/不通过检查。一次滴定只有在其 pKa 落在参考拟合的统计不确定度之内且甲醇含量正确时才算通过。一次测定只有在其三次滴定全部通过时才算通过,一个化合物只有在其使用的每次测定都通过时才算通过,因此一个错误可能会层层传导。
| 层级 | 正确数 |
|---|---|
| 滴定 | 290 / 291 |
| 测定 | 91 / 97 |
| 化合物 | 32 / 35 |
也就是说,99.7% 的单项测量结果正确,每一项都在参考拟合的统计容差之内。
我们还通过 Dev mode 中的工具调用审计了这次运行本身。在 Eigent 1.0.7 中,Single Agent 会话始终带有网页搜索、浏览器和网页抓取工具,所以这项检查很重要:任何查过外部资料的运行都不算数。
| 检查项 | 我们的发现 |
|---|---|
| 没有使用外部数据 | 没有网页搜索、浏览器或网页抓取调用。85 条终端命令中,没有一条访问网络、调用软件包安装器或触及任务文件夹之外的任何路径。 |
| 没有改动输入 | 输入数据与原始文件逐字节一致。 |
| 答案出自它自己的分析 | 重新运行该脚本可以逐字节地重现答案。 |
它在哪些地方失分,以及原因
Gemini 4 Carbon 并没有通过所有检查。所有失分都源自两项方法选择:
- 外推如何加权。 它按测量不确定度对甲醇–水外推进行了加权,这一选择与参考惯例不同。这导致 5 次测定和 3 个化合物失分。Gemini 4 Carbon 是基于证据做出这一选择的——在水中测定的化合物上,加权拟合的误差更低——而且任务说明并没有指定方法。
- 使用哪种 pH 标度。 它把分析人员记录的 pH 窗口应用在了与参考不同的 pH 标度上。这导致 1 次滴定和 1 次测定失分。
这两点都不是分析本身的缺陷,而是领域专家能够识别的惯例——正是实验室通常会写进操作说明里的那类内部规定。
这也只是一次运行的结果。在如此困难的任务上,得分可能因运行而异。
我们的收获
- 原始数据让智能体无从取巧。 厂商软件计算出的数值被清空后,每个值都必须从信号中得出——智能体也必须展示自己的推导过程。
- 描述测量,而不是方法。 Gemini 4 Carbon 自己选择了物理化学方法,并用数据中的证据为每个选择提供依据。
- 代码就是交付物。 一个能重建答案的脚本,是科学家可以重新运行、阅读和审查的东西。
- 失分源于惯例,而非错误。 在失分之处,它做出的都是站得住脚的选择,而这些选择本可以由实验室的内部规定来确定。
原始仪器文件不必排队等待分析。把它们交给 Eigent 中的 Gemini 4 Carbon——然后审查它的推理过程,而不只是结果。
鸣谢:使用 Gemini 4 Carbon 和 Eigent 制作。音乐:"Dance With You",Everet Almond。



