引言
像 GPT-4 和 LLaMA 这样的大型语言模型 (LLMs) 彻底改变了我们与信息交互的方式。它们可以写诗、总结邮件,甚至生成代码。然而,当你把一个复杂的科学问题抛给它们时——比如利用马吕斯定律 (Malus’s law) 计算偏振光的强度,或者解化学反应的微分方程——它们往往会束手无策。
问题并不一定在于这些模型“笨”,而在于科学推理需要两种截然不同的能力:
- 领域知识: 了解特定的定律、常数和理论。
- 数学精度: 在不产生数字幻觉的情况下进行严谨的计算。
传统上,研究人员试图通过向模型“填鸭式”灌输更多数据来解决这个问题——先是在物理教科书上微调,然后在化学论文上微调,接着是财务报告。但这种方法既昂贵又不可扩展。你无法针对每一个可能的科学领域都对模型进行微调,而且即使你这么做了,LLM 在计算方面也是出了名的糟糕。
在这篇文章中,我们将深入探讨一篇提出不同方法的论文: SCIAGENT 。 研究人员没有试图创造一个全知全能的问题解决者,而是构建了一个熟练的工具使用者 。 就像人类科学家使用 Python 或 WolframAlpha 来解决复杂问题一样,SCIAGENT 教会 LLM 识别问题、找到合适的软件工具 (Python 函数) ,并使用它来获得正确答案。
范式转变: 从解题者到工具使用者
要理解 SCIAGENT 的重要性,我们首先需要看看目前是如何处理科学推理的,以及它与新提出的方法有何不同。
在标准方法中 (如下图左侧所示) ,我们为特定领域 (如数学或物理) 收集大量数据并对 LLM 进行微调。这创造了一个“数学模型”或“物理模型”。如果你想切换到生物学,你必须从头再来。

SCIAGENT 方法 (右图) 更加模块化。研究人员主要在数学 (这是大多数科学的基础) 和工具使用上训练 LLM。其核心思想是教给模型一种通用技能: 如何检索和执行函数。
当模型面对物理问题时,你只需附加一个“物理工具集” (一个 Python 函数库) 。当它面对金融问题时,你将其换成“金融工具集”。模型本身不需要改变;它只是拿起了不同的工具箱。
SCIAGENT 架构
那么,SCIAGENT 实际上是如何解决问题的呢?研究人员设计了一个模仿人类推理的四阶段流水线。它不仅仅是脱口而出一个答案;它会进行规划和执行。

以下是图 3 所示工作流程的详细分类:
规划 (Planning, \(\mathcal{M}_{planning}\)) : 在编写任何代码之前,模型会分析问题并生成一个高层计划。对于一个关于光强的物理问题,计划可能是: “应用马吕斯定律两次,第一次针对第一个偏振片,然后针对第二个。” 这一步至关重要,因为它指导了对正确工具的搜索。
检索 (Retrieval, \(\mathcal{M}_{retrieval}\)) : 模型获取问题和计划,然后在可用工具库 (Python 函数) 中进行搜索。它会检索最相关的工具。在我们的例子中,它找到了
malus_law_intensity。行动 (Action, \(\mathcal{M}_{action}\)) : 现在模型开始生成解决方案。它编写混合了自然语言 (推理) 和可执行 Python 代码的内容。关键在于,它将检索到的工具插入到代码中。它不是试图在“脑子”里做乘法 (这是 LLM 不擅长的) ,而是简单地写下
I2 = malus_law_intensity(I1, theta)。执行 (Execution) : 生成的代码通过 Python 执行器运行。代码的输出即为最终答案。
动力来源: 构建 MATHFUNC 语料库
架构听起来很棒,但我们要从哪里获取训练数据呢?并不存在大规模的“科学问题与 Python 函数及规划步骤配对”的数据集。
为了解决这个问题,研究人员创建了 MATHFUNC , 这是一个包含超过 30,000 个训练样本的语料库。他们使用了一个包含 GPT-4 的巧妙自动化流水线来合成这些数据。

构建过程 (图 2) 是一个循环:
- 输入: 获取一个标准的数学问题 (来自 MATH 数据集) 。
- 规划与工具创建: 要求 GPT-4 生成一个计划和一个可以解决此特定问题的 Python 函数。
- 修正: 如果代码无法运行,使用错误信息提示 GPT-4 进行修复 (自我修正) 。
- “交叉检索”技巧: 这是论文中最精彩的部分。 如果你只是用针对该特定问题创建的函数来训练模型,模型实际上是在“作弊”——它学会了使用一个为它所见的问题完美定制的工具。它并没有学会搜索。
为了解决这个问题,研究人员将工具集构建与解决方案生成分离开来。他们构建了一个包含所有生成函数的庞大库 (\(F\)) 。然后,对于给定的问题 \(q\),他们从库中移除专门为 \(q\) 创建的函数,并强制模型从其他问题中检索一个相似的函数。
这迫使模型学习如何将现有工具调整后用于新问题——这是现实世界科学推理中必不可少的一项技能。
测试: SCITOOLBENCH
为了评估 SCIAGENT,现有的基准测试是不够的。大多数基准测试只要求一个答案,而不是基于代码和工具的解决方案。作者介绍了 SCITOOLBENCH , 涵盖五个领域: 数学、物理、化学、金融和 EECS (电子工程与计算机科学) 。
该基准测试包含 856 个问题,关键是,还有一个包含 2,446 个 Python 函数的库。
质量重于数量
研究人员确保了工具的高质量和“可组合性”,这意味着它们可以用于多个不同的问题,而不仅仅是一个特定的边缘情况。

如图 4 所示,许多函数适用于多个问题 (右侧直方图显示出现次数 \(>1\) 的函数) 。这证明了工具集是通用的。
半自动标注
创建这个基准测试需要一个涉及人类和 AI 的严格流程。

该流程 (图 5) 包括:
- 正样本函数构建: GPT-4 根据问题建议函数。人工标注员对其进行审核,以确保它们不是“捷径” (例如,直接打印答案的函数) 。
- 负样本函数构建: 为了增加测试难度,研究人员添加了“干扰项”函数。对于每一个正确的工具 (例如
angular_from_frequency) ,他们生成了相似但不正确或不相关的工具。这迫使 LLM 真正理解工具的作用,而不是仅仅根据关键词进行猜测。
实验与结果
研究人员使用他们的 MATHFUNC 语料库微调了开源模型 (CodeLlama、Mistral 和 DeepSeek-Math) ,创建了 SCIAGENT 系列。他们将这些模型与标准模型甚至 ChatGPT 进行了比较。
结果令人印象深刻。

查看表 2,我们可以得出几个主要结论:
- 工具有助于所有模型: 几乎每个模型在获得工具集访问权限 (标有对勾 \(\checkmark\)) 时,表现都优于没有工具 (X) 的情况。
- SCIAGENT 占据主导地位: 微调后的 SCIAGENT 模型 (底部几行) 大幅优于其基础模型。例如, SCIAGENT-MISTRAL-7B 达到了 34.1% 的准确率,而带有工具的标准 Mistral-7B 仅达到 15.6% 。
- 击败 ChatGPT: 最强的模型 SCIAGENT-DEEPMATH-7B 得分为 46.3% , 显著优于同任务下的 ChatGPT (35.4%) 。它甚至接近了 GPT-4 (49.5%) 的表现,后者是一个庞大得多的专有模型。
模型真的在使用工具吗?
有人可能会问: 模型是真的在使用 Python 函数来解决问题,还是仅仅变得更擅长猜测了?

图 7 给出了答案。蓝色柱状图代表 SCIAGENT。
- “Use funcs” (使用函数) : 当模型在代码中显式调用检索到的函数时,其准确率飙升至 40% 以上。
- “Not use funcs” (不使用函数) : 即使模型没有直接调用函数,它的表现仍然优于基线 (MAmmoTH-Coder) 。这表明,仅仅看到检索到的函数就能帮助模型更好地理解问题,也许是因为它将函数定义视为提示或公式表。
检索准确率的重要性
研究人员还分析了模型对“检索”步骤的敏感度。如果检索器找到了错误的工具,模型还能解决问题吗?

图 6 (下图) 显示了直接的线性关系。随着“命中率 (Hit Rate) ” (找到正确工具的百分比) 增加,模型的准确率也随之增加。这凸显了检索是瓶颈 。 即使拥有完美的模型,如果在库中找不到正确的公式,也无法解决问题。
结论与启示
SCIAGENT 论文为 AI 在科学领域的未来提出了令人信服的论点。我们不应该构建越来越大的模型来死记硬背物理、化学和工程学中的每一个公式,而应该构建成为专家级工具使用者的模型。
通过将“推理引擎” (LLM) 与“知识库” (工具集) 分离,我们获得了几个优势:
- 适应性: 我们只需更换工具集即可解决新领域 (如生物学或地质学) 的问题,而无需重新训练模型。
- 准确性: 使用 Python 函数进行计算消除了 LLM 中常见的算术错误。
- 可扩展性: 为新的科学发现编写一个 Python 函数比重新训练基础模型要容易得多。
SCIAGENT 证明,一个相对较小的 7B 参数模型,如果经过适当的工具使用训练,完全可以“以小博大”,在专业的科学任务中胜过像 ChatGPT 这样的通用聊天机器人。展望未来,推理智能体与专用软件库的结合,似乎是通向真正能充当科学家助手的 AI 最有希望的路径。
](https://deep-paper.org/en/paper/2402.11451/images/cover.png)