跳转至

跟着示例学习

示例按“先看懂一次实验,再逐步自动化”的顺序排列。第一次使用建议先运行手动事件序列,然后根据 目标进入 Agent API、Baseline、提交验证或 Notebook。

你想学习什么 从哪里开始
一条实验路线怎样执行 手动事件序列
Agent 怎样读取公开接口 Agent-Facing API
多种方法怎样比较 Baseline 对比
怎样生成可提交结果 验证与提交包示例
怎样完成系统课程 十二天教程

先选择学习路线

完整课程路线见 ChemWorld 教程课程地图。课程从环境 reset 和单步 action 开始,逐步进入 recipe、baseline、任务族、光谱、分离和 agent planning。

运行一条手动实验路线

最小示例:

import gymnasium as gym
import chemworld

env = gym.make("ChemWorld", task_id="reaction-to-purification", seed=1)
obs, info = env.reset(seed=1)

recipe = [
    {"operation": "add_solvent", "volume_L": 0.03, "solvent": 1},
    {"operation": "add_reagent", "amount_mol": 0.012},
    {"operation": "add_catalyst", "catalyst": 2, "catalyst_amount_mol": 0.0004},
    {
        "operation": "heat",
        "target_temperature_K": 350.0,
        "duration_s": 1200.0,
        "stirring_speed_rpm": 800.0,
    },
    {"operation": "quench"},
    {"operation": "terminate"},
    {"operation": "measure", "instrument": "final_assay"},
]

for action in recipe:
    obs, reward, terminated, truncated, info = env.step(action)
    print(action["operation"], reward, info.get("constraint_flags", {}))
    if terminated or truncated:
        break

如果 reward 始终为 0,应先检查任务阶段、前置条件和最终 measurement 是否真的触发评分。

让 Agent 使用公开接口

print(env.unwrapped.task_prompt()["text"])
env.unwrapped.available_actions()
env.unwrapped.action_schema("heat")
env.unwrapped.validate_action({"operation": "heat", "duration_s": 10.0})
env.unwrapped.observation_view("lab_report")
env.unwrapped.campaign_state()

也可以直接运行:

python examples/demo_agent_facing_api.py
python examples/demo_llm_replay_harness.py
python examples/demo_rl_vector_wrapper.py
python examples/demo_dataset_agent_trace_export.py
python examples/demo_submission_bundle.py

比较几个 Baseline

建议至少比较三类:

  • 随机合法动作 baseline;
  • 固定 recipe baseline;
  • 简单 optimizer 或 tool-agent baseline。

不要只报告平均 reward,也要报告 invalid action、safety、cost 和 selectivity flags。

验证轨迹与安装

chemworld verify --constitution --submission runs/<trajectory>.jsonl
chemworld evaluate --submission runs/<trajectory>.jsonl

这些命令会检查合同、回放和指标重算。运行 Agent 的完整公开入口见本地评测机, 不要依赖尚未发布的占位命令。

模拟教师端评测

本地评测机接收 agent、任务和 seeds,输出 trajectory、score 和 report。见 本地评测机

生成提交包

构建一个完整、可验证、可回放的 submission bundle:

chemworld submission example runs/example_submission \
  --task-id reaction-to-purification \
  --agent tool_using_llm_stub \
  --seeds 0
chemworld submission validate runs/example_submission
chemworld submission summarize runs/example_submission

该示例会生成 manifest、trajectory、results、explanations、dependency notes 和 README。 详情见 提交包

用 Notebook 逐步探索

Notebook 应保持短小:每个 notebook 聚焦一个概念,避免把全部任务、全部指标和全部 debug 信息塞进同一页。

运行端到端闭环 Notebook

仓库提供三份完整闭环 notebook,位置在 notebooks/end_to_end/

Notebook 任务 覆盖内容
reaction_to_assay_end_to_end.ipynb reaction-to-assay 任务规划、action validation、中间 HPLC、final assay、谱图和下一轮实验
reaction_to_purification_end_to_end.ipynb reaction-to-purification 反应、相系统、萃取、分相、洗涤、干燥、浓缩、final assay
partition_discovery_end_to_end.ipynb partition-discovery campaign 多轮实验、分配趋势、final assay packet、局部 world model

它们不是最高分策略,而是可验证流程模板:每份都包含 planning、execution、spectra、metrics 和 reflection。

浏览六个研究任务 Demo

notebooks/task_demos/ 一一覆盖当前六个 serious research tasks。与上面的流程教学不同,这组 Demo 把操作看作干预、把测量看作公开反馈,重点展示同一干预在不同隐藏规律下产生的可观测差异。

Notebook Task World-model 观察重点
01_partition_discovery.ipynb partition-discovery 分配构成律与相条件响应
02_reaction_crystallization.ipynb reaction-to-crystallization 上游动力学到下游结晶的耦合传播
03_reaction_distillation.ipynb reaction-to-distillation 隐藏反应通道与馏分反馈
04_flow_reaction.ipynb flow-reaction-optimization 流量、停留时间、温度与速率律
05_electrochemical_conversion.ipynb electrochemical-conversion 诊断反馈与电化学构成律
06_equilibrium_characterization.ipynb equilibrium-characterization 浓度探针与非理想平衡响应

每份 notebook 都读取公开 task card,使用任务自身的 recipe adapter 生成三组候选干预,展示完整测量 轨迹,并执行一次 World A/World B 配对控制。配对条件由教学代码构造;Agent-facing 数据不会包含 隐藏机理名称、参数或 hidden state。这些 notebook 展示环境能力,不实现或要求特定训练算法。

完成十二天教程

课程应先让学生理解 resetstepinfoconstraint_flags,再逐步引入 reaction、separation、spectroscopy、world-model learning 和 tool-agent planning。