跳转至

LLM 实验智能体

LLM 的价值不只是拥有化学知识,而是能否把知识变成可检验假设,并在实验否定它时改变行动。

在 ChemWorld 里,LLM 是一个反复使用实验工具的 Agent:它读取公开证据,选择一个合法操作,观察 结果,再决定下一步。

任务 + 实验历史 + 可用谱图
  → 模型给出结构化决策
  → 校验 Action
  → 执行环境步骤
  → 返回公开观测与实验记忆
  → 下一次决策

环境本身不依赖在线 API。没有密钥时,经典算法、Student Lab、stub 和 replay 都可以离线运行。

LLM 在实验循环中的角色

LLM 可以承担假设生成、计划、公开证据解释、工具调用和跨实验记忆。不同 scaffold 应被当作不同 方法条件,而不是笼统称为“同一个模型”:

条件 决策结构
Direct 只读取当前公开状态并选择 Action
Memory 同时读取压缩实验历史
Retrieval 主动请求谱图、材料资料或历史记录
Planner–Executor 规划目标与单步执行分离
World-model assisted 使用显式局部模型或 belief 支持判断

一次模型决策包含什么

每次逻辑决策只执行一个最终 Action,并可以同时记录:

  • 支撑动作的公开 evidence;
  • 对当前仪器或谱图结果的 interpretation;
  • 可被后续实验检验的 hypothesis;
  • uncertainty;
  • 一段简短、面向审计的 rationale。

模型只看到 task prompt、合法动作、公开历史和当前披露策略允许的谱图。隐藏状态、机理参数与 private salt 不进入 prompt。系统也不请求或保存私有逐字思维链。

逐步决策与整段计划

  • 逐操作自适应:每执行一个 operation 都重新读取最新结果,适合研究闭环调整。
  • 整段计划:开局生成完整 recipe,适合作为低调用成本或 open-loop 对照。

调用次数多不等于真的发生了适应。轨迹还要显示:新证据是否改变了假设、谱图解释或后续动作。

让模型按需读取谱图

披露模式 模型可以获得什么 适合回答的问题
raw 降采样原始曲线 模型能否直接读取原始信号
unassigned 曲线与未指认峰 默认研究条件
assigned 曲线与允许披露的峰指认 教学或信息上限
masked 不提供谱图通道 配对因果消融

Agent Observatory 会先给模型一个谱图目录;只有模型明确请求某个 spectrum_request_id,下一次 调用才会携带对应曲线或峰表。这样可以区分“网页上显示了谱图”和“模型实际用到了谱图”。

若要主张模型从谱图中获益,应在相同任务、世界、预算和模型 seed 下比较可见/屏蔽条件,并保留 模型引用的峰、动作变化与最终效果。

材料信息也要形成对照条件

条件 模型知道什么
opaque 只看到稳定类别 ID
descriptor 获得公开、可追溯的有限描述符
named/retrieval 可以读取材料名称或经批准的资料
oracle 研究上限条件;不属于正式公开 Agent 输入

材料名称可能带来强先验。若要证明模型使用了实验而非名称记忆,应在保持世界和预算一致时遮蔽、 重映射或冲突化公开信息,并观察假设、测量和 Action 是否相应改变。

用因果消融判断“是否真的使用了证据”

解释文本提到某个峰,不足以证明它影响决策。更可靠的设计是配对改变信息条件:

  • assigned ↔ masked 谱图;
  • 有记忆 ↔ 无记忆;
  • named material ↔ opaque material;
  • retrieval ↔ 相同 token 预算下的直接决策。

评价应检查后续 Action、测量选择、最终结果和失败类型,而不只给自然语言解释打分。

开放与闭源模型承担不同角色

Frontier API 可以作为能力上界探针,开放权重模型支持可复现实验,化学专用模型检验领域先验,未来 的 ChemWorld-trained 模型则检验交互预训练价值。正式比较需要分别报告模型身份、权重可得性、 scaffold、信息条件和资源,不能把它们合并成“LLM”一行。

技术配置:连接在线模型

这里有两条独立的模型接入路径:

路径 当前 provider 用途
Task Lab / Agent Observatory DeepSeek API 本地交互、演示和自定义开发评测
冻结正式 campaign runner Codex subscription 当前双旗舰 S0 正式结果

下面的环境变量只配置 Task Lab,不会把正式 campaign 切换为 DeepSeek,也不会复现已经冻结的 Codex subscription 结果。正式 runner、模型与资源合同见旗舰实验

$env:DEEPSEEK_API_KEY = "<your-api-key>"
$env:DEEPSEEK_MODEL = "<provider-model-id>"
python -m apps.task_lab.server --port 8876
export DEEPSEEK_API_KEY="..."
export DEEPSEEK_MODEL="<provider-model-id>"
python -m apps.task_lab.server --port 8876

模型 ID 与可用参数可能随 provider 变化,请使用 provider 当前支持的标识。密钥只通过进程环境变量 或本地忽略文件传入,不进入浏览器、prompt artifact、trajectory 或结果文件。

把请求成本算清楚

provider 超时、空响应、JSON 修复和重试都是真实消耗。正式运行至少记录:

  • provider、模型 ID、客户端版本和请求参数;
  • prompt、工具 schema 与披露策略摘要;
  • 输入 cache-hit/cache-miss token 与输出 token;
  • 请求、失败、重试和修复次数;
  • 冻结价格快照与折算费用;
  • 运行时间、轨迹摘要和 prompt hash。

一个 environment operation 最终只能对应一个逻辑决策,但为了得到这个决策产生的所有 provider 请求都应进入资源账本。

不联网也能测试 Harness

ToolUsingLLMStubAgent 用确定性规则检查 tool use、validator、memory 与 replay 管线; LLMReplayAgent(method id llm_replay)重放已经保存的 Action trace; LLMCompletionReplayAgent(method id llm_completion_replay)则重放 recipe planner 的缓存 JSON completion。 两者处于不同抽象层,不共享方法身份。

python examples/demo_llm_replay_harness.py

它们适合测试工程链路,但不能代表在线 LLM 的性能。

当前做到哪一步

在线客户端、逐操作 trace、按需谱图、token/费用账本和失败保留规则已经实现。双旗舰静态 campaign 已留下真实 Codex subscription provider 轨迹;这支持冻结范围内的正式描述性结果, 不构成跨模型排名或“模型学会化学机理”的结论。机制适应的正式跨方法 provider 矩阵仍未执行。

界面操作见打开可视化实验室,方法比较口径见 设计公平评测