探索多元科学推理路径 | AI生成和翻译
至此,我已掌握梳理完整流程的充足信息。
本方法如何解决需要长程、发散推理链的硬科学问题
核心理念
单次LLM调用过早坍缩——它会选定一条推理路径并固守于此。对于诸如“推导氢原子能级的辐射修正”这类问题,存在多种可行路径(微扰论 vs 路径积分 vs 格林函数……),早期选择错误将导致所有努力白费。
思维树(ToT)通过将搜索分散至多个分支,并仅剪除违反物理规律的路径来解决这一问题。
代码逐步解析
步骤1 — 元分析:将问题分解为路线图 (backend.py:49-56)
在构建任何树之前,规划模型会对问题进行一次性分析:
目标、已知条件、未知量、
最小子问题、步骤顺序、
第一步、完成信号
关键在于:“保持规划框架粗粒度…以保留多种建模路径”——它刻意不解决任何具体问题,仅规划策略空间。
步骤2 — 由有限状态机(FSM)构建根节点 (scheduler.py:148, builder.py)
每个节点的FSM按以下阶段运行:
提议 → 计算 → 评估 →(反思?)→ 完成
- 提议:建模模型提出一个原子推理步骤(
思考步骤、方程、已知变量) - 计算:
skills.py运行tot_hard_rule_check——依据物理硬规则检验方程 - 评估:评审模型按四个维度评分(物理正确性50%、基础坚实性25%、相关性10%、简洁性15%)
- 反思:若为可恢复的违规,则注入批评后重试
步骤3 — 基于预算控制的树扩展 (scheduler.py:162-195)
while self._frontier and len(self._expanded_node_ids) < self.expansion_budget:
# 从边界弹出最优节点
# 构建N个子节点(每个节点代表不同的推理分支)
built_children = [_build_node(...) for child_context in child_contexts]
# 按分数对兄弟节点排序
ranked_children = sorted(built_children, key=_node_ranking_key)
# 应用调度控制(多样性、去重、预算)
scheduler_action = self._apply_scheduler_controls(child_node, parent_node)
expansion_budget=8限制了扩展节点的总数。max_frontier_per_diversity_key=2防止树被大量相似分支淹没。
步骤4 — 硬规则剪除错误分支,评分仅用于重排优先级 (builder.py:69-77)
物理硬规则违规 → 规则剪除 + 丢弃(软评分无法挽回)
低评分 → 保持活跃状态,仅在下游排序中降低优先级
这是关键洞见:树会持续探索虽弱但未出错的分支,同时立即排除物理上不可能的分支。
步骤5 — 编排器确保每个节点仅添加一个增量 (backend.py:63, builder.py:70)
提议提示强制规定:
“每个节点必须在其父节点基础上明确添加一个局部增量:一个修正项、一个边界条件或一个控制参数”
这避免了LLM常见的重复父节点内容的错误——树中的每一步都真正推进了推理过程。
本方法适用于硬科学的原因
| 原始LLM的缺陷 | ToT解决方案 |
|---|---|
| 过早锁定单一策略 | 通过树分支并行探索多条路径 |
| 无法在推理链中途检测物理错误 | skills.py硬规则检查立即否决错误方程 |
| 长推理链易偏离主题 | 每个节点按上下文相关性评分;范围漂移会被记录 |
| 步骤间内容重复 | 语义增量检查(SEMANTIC_DELTA_TEXT_SIMILARITY = 0.72)检测近重复节点 |
| 单一错误步骤无法恢复 | 可恢复违规 → 反思而非丢弃 |