最新n1n v2.0.1 正式上线!企业级大模型接口聚合平台 (LLM API Gateway),为您接入 500+ AI Models,价格低至 1 折,立即尝试

DeepMind 前员工创立 Inherent 宣称旗下 AI 智能体 Faraday 在科学研究复现中超越 OpenAI 与 Anthropic

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

复现前人的科学发现是检验真理的唯一标准。然而,长久以来,学术界和工业界都面临着严重的“复现危机”(Reproducibility Crisis)。对于机器学习和数据科学领域的工程师而言,复现一篇论文往往意味着需要耗费数天甚至数周的时间去搭建环境、补全缺失的代码、调试依赖冲突并重新运行实验。

为了解决这一痛点,由 Google DeepMind 前员工在伦敦创立的 AI 初创公司 Inherent 推出了一款名为 Faraday 的自主 AI 智能体(AI Agent)。Faraday 专门设计用于阅读学术论文、理解复杂的数学公式与伪代码、自动编写完整的代码库,并在沙箱环境中执行与调试,最终验证实验结果。根据 Inherent 公布的评测数据,Faraday 在复现科学研究任务上的表现已经超越了 Anthropic 的 Claude 3.5 Sonnet 以及 OpenAI 的 GPT-4o。

为什么用于科学研究的 AI 智能体是下一个技术前沿

开发用于科学研究的 AI 智能体,其技术复杂度远超普通的问答聊天机器人。普通的 LLM 擅长生成零散的代码片段或进行文本摘要,但要完整复现一篇机器学习论文,AI 必须具备多阶段的、有状态的智能体工作流(Agentic Workflow)。具体而言,智能体需要具备以下能力:

  1. 深度解析 PDF 文档:准确提取论文中的数学公式、网络架构图、超参数表格以及伪代码。
  2. 系统级代码生成:不仅是写一个简单的 Python 脚本,而是要构建包含数据预处理、模型定义、训练循环和评估脚本的完整代码仓库。
  3. 动态执行与沙箱调试:在隔离的运行环境中执行代码,捕获运行期错误(Runtime Errors),并像人类工程师一样进行迭代调试。
  4. 结果对齐与验证:自动收集运行输出的指标(如 Accuracy、Loss、F1-Score),并与论文原图表中的数据进行对比验证。

传统的基座大模型在执行和调试阶段经常遭遇瓶颈。它们生成的代码看似符合逻辑,但经常因为库版本过时、API 变更或环境配置错误而无法运行。Faraday 的核心突破在于将大语言模型嵌入到了一个闭环的“思考-执行-反思-修正”循环中。

对于开发者而言,要构建这样复杂的智能体系统,通常需要调用多种不同的模型。通过 n1n.ai 这样的多模型聚合 API 平台,开发者可以轻松地在推理模型与代码生成模型之间进行动态路由,无需维护多个平台的 API 密钥,大大降低了开发成本。

Faraday 与主流前沿模型的性能对比

Inherent 在其发布的基准测试中,将 Faraday 与当前市场上最顶尖的基座模型进行了对比。测试任务要求各模型直接读取一篇机器学习论文的 PDF,并在给定的算力与时间限制内,输出能够成功运行并复现论文核心图表的数据。

以下是各模型在复现成功率、平均调试轮数以及 API 延迟方面的对比数据:

模型 / 智能体系统单次生成成功率 (Zero-Shot)迭代调试成功率 (Iterative)平均调试收敛轮数平均 API 响应延迟
Inherent Faraday62%88%3.4 轮取决于 Agent 内部循环
Claude 3.5 Sonnet38%54%7.2 轮< 1.8 秒
OpenAI GPT-4o31%46%8.5 轮< 1.5 秒
OpenAI o1-preview45%61%5.1 轮< 4.0 秒 (推理耗时较长)

从数据中可以看出,Faraday 的优势并不完全取决于其底座模型的单次推理能力,而在于其专为科学计算设计的脚手架(Scaffolding)系统。它能够有效隔离“语法错误”、“环境配置错误”与“算法逻辑错误”,从而避免智能体陷入无意义的死循环调试中。

实践指南:使用 API 构建简易的研究复现智能体

为了帮助开发者理解 Faraday 的工作原理,我们可以使用 Python 构建一个简易版的论文复现智能体。该智能体将利用 n1n.ai 提供的 API 接口,动态调用 Claude 3.5 Sonnet 进行架构规划,并调用 GPT-4o 进行代码编写与调试。

以下是完整的实现代码:

import os
import subprocess
import requests

# 配置来自 n1n.ai 的统一 API 密钥
N1N_API_KEY = os.getenv("N1N_API_KEY")
N1N_API_URL = "https://api.n1n.ai/v1/chat/completions"

def call_llm(model_name: str, system_prompt: str, user_prompt: str) -> str:
    headers = {
        "Authorization": f"Bearer {N1N_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": model_name,
        "messages": [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt}
        ],
        "temperature": 0.2
    }
    response = requests.post(N1N_API_URL, json=payload, headers=headers)
    response.raise_for_status()
    return response.json()["choices"][0]["message"]["content"]

def execute_code(code_string: str) -> tuple[bool, str]:
    # 将生成的代码写入临时文件
    filename = "temp_executor.py"
    with open(filename, "w", encoding="utf-8") as f:
        f.write(code_string)

    # 在沙箱子进程中执行代码
    try:
        result = subprocess.run(
            ["python", filename],
            capture_output=True,
            text=True,
            timeout=45
        )
        if result.returncode == 0:
            return True, result.stdout
        else:
            return False, result.stderr
    except subprocess.TimeoutExpired:
        return False, "Error: Execution timed out after 45 seconds."
    finally:
        if os.path.exists(filename):
            os.remove(filename)

def agent_replication_pipeline(paper_description: str, max_tries: int = 5):
    print("[步骤 1] 正在规划代码架构与依赖...")
    plan_prompt = f"请针对以下研究任务规划所需的类、函数结构以及依赖库:\n{paper_description}"
    plan = call_llm("claude-3-5-sonnet", "你是一名资深机器学习研究员,请生成详细的实现计划。", plan_prompt)
    print("[规划完成] 架构已生成。")

    print("[步骤 2] 正在生成初始代码...")
    code_prompt = f"请根据以下规划编写完整的、可运行的 Python 代码。请直接输出代码,包裹在 markdown 标记中:\n{plan}"
    generated_code = call_llm("gpt-4o", "你是一名精通 Python 的软件工程师。只输出代码本身。", code_prompt)

    # 提取纯代码内容
    generated_code = generated_code.replace("```python", "").replace("```", "").strip()

    for attempt in range(1, max_tries + 1):
        print(f"\n[尝试 {attempt}/{max_tries}] 正在执行代码验证...")
        success, output = execute_code(generated_code)

        if success:
            print("[成功] 代码成功运行且无报错!")
            print("输出结果:\n", output)
            return generated_code
        else:
            print("[检测到错误] 启动自动修复机制...")
            fix_prompt = (
                f"以下代码在执行时报错:\n\n{generated_code}\n\n"
                f"报错信息如下:\n{output}\n\n"
                f"请修复该错误并输出修改后的完整 Python 代码。只输出代码。"
            )
            generated_code = call_llm("gpt-4o", "你是一名专业的调试专家。请修复代码中的 Bug。", fix_prompt)
            generated_code = generated_code.replace("```python", "").replace("```", "").strip()

    print("[失败] 已达到最大尝试次数,未能成功复现。")
    return None

if __name__ == "__main__":
    task = "使用 NumPy 实现一个简单的线性回归模型,在模拟数据上进行 100 次迭代训练,并打印最后的损失值。"
    agent_replication_pipeline(task)

优化科学计算智能体的专业建议

在开发用于处理复杂科学计算任务的 AI 智能体时,以下几点设计模式至关重要:

  1. 解耦规划与编码:不要让同一个模型在同一次对话中既做架构设计又写代码。使用逻辑推理能力极强的模型(如 Claude 3.5 Sonnet)来制定骨架,再利用代码生成速度快、指令遵循度高的模型(如 GPT-4o)来填充细节。
  2. 严格的沙箱隔离:智能体生成的代码可能包含未知的系统命令或无限循环。务必在 Docker 容器或轻量级虚拟机(如 Firecracker)中运行这些代码,并设置严格的超时限制与网络访问权限限制。
  3. 多模型协同路由:在复杂的复现任务中,解析 PDF 的表格可能需要多模态视觉模型,而编写底层的 C++ 算子可能需要专门的代码模型。利用 n1n.ai 提供的统一 API 接口,可以根据子任务的类型动态切换最适合的底座模型,实现效率与成本的最佳平衡。

总结与展望

Inherent 推出的 Faraday 证明了 AI 智能体正在从“对话助手”演变为“科研协作者”。通过将繁琐的代码复现工作自动化,科学家和研发工程师可以将更多精力投入到核心理论的创新和实验设计中。

随着这类自主智能体在企业研发和学术机构中的普及,对高并发、低延迟、多模型兼容的 API 服务的需求将迎来爆发式增长。选择一个稳定且支持多模型无缝切换的 API 聚合平台,将是开发者构建下一代智能化科研工具的关键一步。

立即在 n1n.ai 获取您的免费 API 密钥。