SakanaAI/AI-Scientist-v2
GitHub: SakanaAI/AI-Scientist-v2
SakanaAI推出的第二代全自动科研智能体,利用树搜索技术实现从假设生成到论文撰写的端到端科学发现。
Stars: 3599 | Forks: 542
📚 [论文] | 📝 [博客文章] | 📂 [ICLR2025 Workshop 实验]
全自主科学研究系统正变得日益强大,AI 在改变科学发现的方式方面发挥着关键作用。 我们要高兴地介绍 The AI Scientist-v2,这是一个通用的端到端智能体系统,它生成了第一篇完全由 AI 撰写并通过同行评审的研讨会论文。 该系统能够自主生成假设、运行实验、分析数据并撰写科学手稿。与 [其前身 (AI Scientist-v1)](https://github.com/SakanaAI/AI-Scientist) 不同,AI Scientist-v2 不再依赖人类撰写的模板,能够泛化到机器学习 (ML) 的各个领域,并采用由实验管理智能体引导的渐进式智能体树搜索。 ## 目录 1. [需求](#requirements) * [安装](#installation) * [支持的模型和 API Keys](#supported-models-and-api-keys) 2. [生成研究想法](#generate-research-ideas) 3. [运行 AI Scientist-v2 论文生成实验](#run-ai-scientist-v2-paper-generation-experiments) 4. [引用 The AI Scientist-v2](#citing-the-ai-scientist-v2) 5. [常见问题](#frequently-asked-questions) 6. [致谢](#acknowledgement) ## 需求 本代码旨在使用 CUDA 和 PyTorch 在配备 NVIDIA GPUs 的 Linux 系统上运行。 ### 安装 ``` # 创建新的 conda 环境 conda create -n ai_scientist python=3.11 conda activate ai_scientist # 安装支持 CUDA 的 PyTorch(根据您的配置调整 pytorch-cuda 版本) conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia # 安装 PDF 和 LaTeX 工具 conda install anaconda::poppler conda install conda-forge::chktex # 安装 Python 包依赖 pip install -r requirements.txt ``` 安装通常不超过一小时。 ### 支持的模型和 API Keys #### OpenAI Models 默认情况下,系统使用 `OPENAI_API_KEY` 环境变量来调用 OpenAI models。 #### Gemini Models 默认情况下,系统通过 OpenAI API 使用 `GEMINI_API_KEY` 环境变量来调用 Gemini models。 #### 通过 AWS Bedrock 使用 Claude Models 要使用 Amazon Bedrock 提供的 Claude models,请安装必要的附加包: ``` pip install anthropic[bedrock] ``` 接下来,通过设置以下环境变量来配置有效的 [AWS Credentials](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-envvars.html) 和目标 [AWS Region](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html):`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_REGION_NAME`。 #### Semantic Scholar API (文献搜索) 我们的代码可以选择使用 Semantic Scholar API Key (`S2_API_KEY`),以便在文献搜索期间实现更高的吞吐量 [如果你有的话](https://www.semanticscholar.org/product/api)。这在构思和论文写作阶段都会用到。没有它系统也能运行,但在构思期间可能会遇到速率限制或削弱新颖性检查。如果你在使用 Semantic Scholar 时遇到问题,可以跳过论文生成过程中的引用阶段。 #### 设置 API Keys 确保为你打算使用的模型提供必要的环境变量形式的 API keys。例如: ``` export OPENAI_API_KEY="YOUR_OPENAI_KEY_HERE" export S2_API_KEY="YOUR_S2_KEY_HERE" # 如果使用 Bedrock,设置 AWS credentials # export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID" # export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY" # export AWS_REGION_NAME="your-aws-region" ``` ## 生成研究想法 在运行完整的 AI Scientist-v2 实验流程之前,你首先需要使用 `ai_scientist/perform_ideation_temp_free.py` 脚本生成潜在的研究想法。该脚本使用 LLM 根据你提供的高级主题描述进行头脑风暴和细化想法,并与 Semantic Scholar 等工具交互以检查新颖性。 1. **准备主题描述:** 创建一个 Markdown 文件(例如 `my_research_topic.md`),描述你希望 AI 探索的研究领域或主题。该文件应包含 `Title`、`Keywords`、`TL;DR` 和 `Abstract` 等部分,以定义研究范围。请参考示例文件 `ai_scientist/ideas/i_cant_believe_its_not_better.md` 了解预期的结构和内容格式。将你的文件放置在脚本可访问的位置(例如 `ai_scientist/ideas/` 目录)。 2. **运行构思脚本:** 从主项目目录执行脚本,指向你的主题描述文件并指定所需的 LLM。 python ai_scientist/perform_ideation_temp_free.py \ --workshop-file "ai_scientist/ideas/my_research_topic.md" \ --model gpt-4o-2024-05-13 \ --max-num-generations 20 \ --num-reflections 5 * `--workshop-file`:你的主题描述 Markdown 文件的路径。 * `--model`:用于生成想法的 LLM(确保你已设置相应的 API key)。 * `--max-num-generations`:尝试生成多少个不同的研究想法。 * `--num-reflections`:LLM 应对每个想法执行多少次细化步骤。 3. **输出:** 脚本将生成一个以你的输入 Markdown 文件命名的 JSON 文件(例如 `ai_scientist/ideas/my_research_topic.json`)。该文件将包含结构化的研究想法列表,包括假设、拟议的实验和相关工作分析。 4. **进行实验:** 一旦你获得了包含研究想法的生成 JSON 文件,就可以继续下一节运行实验。 此构思步骤引导 AI Scientist 关注特定的兴趣领域,并产生具体的、将在主实验流程中接受检验的研究方向。 ## 运行 AI Scientist-v2 论文生成实验 使用上一步构思步骤中生成的 JSON 文件,你现在可以启动主 AI Scientist-v2 流程。这包括通过智能体树搜索运行实验、分析结果并生成论文草稿。 通过命令行参数指定用于写作和评审阶段的模型。 最佳优先树搜索 (BFTS) 的配置位于 `bfts_config.yaml`。根据需要调整此文件中的参数。 `bfts_config.yaml` 中的关键树搜索配置参数: - `agent` 配置: - 设置 `num_workers`(并行探索路径的数量)和 `steps`(要探索的最大节点数)。例如,如果 `num_workers=3` 且 `steps=21`,树搜索将探索多达 21 个节点,每一步同时扩展 3 个节点。 - `num_seeds`:如果 `num_workers` 小于 3,通常应与 `num_workers` 相同。否则,将 `num_seeds` 设置为 3。 - 注意:其他智能体参数如 `k_fold_validation`、`expose_prediction` 和 `data_preview` 在当前版本中未使用。 - `search` 配置: - `max_debug_depth`:智能体在放弃该搜索路径之前尝试调试失败节点的最大次数。 - `debug_prob`:尝试调试失败节点的概率。 - `num_drafts`:第一阶段期间初始根节点的数量(即要生长的独立树的数量)。 使用生成的想法文件(例如 `my_research_topic.json`)运行 AI-Scientist-v2 的示例命令。请查看 `bfts_config.yaml` 以了解详细的树搜索参数(默认配置包括用于实验的 `claude-3-5-sonnet`)。如果你不想用代码片段初始化实验,请不要设置 `load_code`。 ``` python launch_scientist_bfts.py \ --load_ideas "ai_scientist/ideas/my_research_topic.json" \ --load_code \ --add_dataset_ref \ --model_writeup o1-preview-2024-09-12 \ --model_citation gpt-4o-2024-11-20 \ --model_review gpt-4o-2024-11-20 \ --model_agg_plots o3-mini-2025-01-31 \ --num_cite_rounds 20 ``` 初始实验阶段完成后,你将在 `experiments/` 目录内找到一个带时间戳的日志文件夹。导航到该文件夹内的 `experiments/"timestamp_ideaname"/logs/0-run/` 以查找树可视化文件 `unified_tree_viz.html`。 所有实验阶段完成后,写作阶段开始。写作阶段通常总共需要大约 20 到 30 分钟。完成后,你应该能在 `timestamp_ideaname` 文件夹中看到 `timestamp_ideaname.pdf`。 对于此示例运行,所有阶段通常在数小时内完成。 ## 引用 The AI Scientist-v2 如果你在研究中使用 **The AI Scientist-v2**,请按如下方式引用我们的工作: ``` @article{aiscientist_v2, title={The AI Scientist-v2: Workshop-Level Automated Scientific Discovery via Agentic Tree Search}, author={Yamada, Yutaro and Lange, Robert Tjarko and Lu, Cong and Hu, Shengran and Lu, Chris and Foerster, Jakob and Clune, Jeff and Ha, David}, journal={arXiv preprint arXiv:2504.08066}, year={2025} } ``` ## 常见问题 **为什么我的实验没有生成 PDF 或评审?** AI Scientist-v2 完成实验的成功率取决于所选的基础模型以及想法的复杂性。在实验阶段使用强大的模型(如 Claude 3.5 Sonnet)通常能观察到更高的成功率。 **每个实验的估计成本是多少?** 构思步骤的成本取决于所使用的 LLM 以及生成/反思的次数,但通常较低(几美元)。对于主实验流程,在实验阶段使用 Claude 3.5 Sonnet 的成本通常约为每次运行 $15–$20。随后的写作阶段在使用示例命令中指定的默认模型时,大约增加 $5。建议使用 GPT-4o 作为 `model_citation`,因为这有助于降低写作成本。 **如何针对不同的学科领域运行 The AI Scientist-v2?** 首先,执行 [生成研究想法](#generate-research-ideas) 步骤。创建一个新的 Markdown 文件,描述你所需的学科领域或主题,遵循示例 `ai_scientist/ideas/i_cant_believe_its_not_better.md` 的结构。使用该文件运行 `perform_ideation_temp_free.py` 脚本以生成相应的 JSON 想法文件。然后,继续执行 [运行 AI Scientist-v2 论文生成实验](#run-ai-scientist-v2-paper-generation-experiments) 步骤,通过 `--load_ideas` 参数将该 JSON 文件与 `launch_scientist_bfts.py` 脚本一起使用。 **如果我在访问 Semantic Scholar API 时遇到问题该怎么办?** Semantic Scholar API 用于评估生成想法的新颖性,并在论文写作阶段收集引用。如果你没有 API key 或遇到速率限制,你可以尝试跳过这些阶段。 **我遇到了 "CUDA Out of Memory" 错误。我该怎么办?** 当 AI Scientist-v2 尝试加载或运行需要更多 GPU 内存的模型,而你的系统可用内存不足时,通常会发生此错误。要解决此问题,你可以尝试更新你的构思提示文件(`ai_scientist/ideas/my_research_topic.md`),建议在实验中使用较小的模型。 ## 致谢 `ai_scientist` 目录内实现的树搜索组件是基于 [AIDE](https://github.com/WecoAI/aideml) 项目构建的。我们感谢 AIDE 开发者的宝贵贡献以及他们公开其工作成果的行为。 ## ⚖️ 许可证与负责任的使用 本项目根据 **The AI Scientist Source Code License**(Responsible AI License 的衍生版本)授权。 **强制披露:** 使用本代码即表示你在法律上有义务在任何由此产生的科学手稿或论文中清晰且显著地披露 AI 的使用情况。 我们建议在你的论文摘要或方法部分进行以下归属说明:标签:AGI, AI科学家, Apex, DLL 劫持, ICLR 2025, Petitpotam, Sakana AI, Vectored Exception Handling, 人工智能, 代理式树搜索, 代码示例, 假设生成, 全自动科研, 凭据扫描, 大语言模型, 实验自动化, 数据分析, 机器学习, 用户模式Hook绕过, 科学发现, 科学技术, 科研自动化, 端到端系统, 论文自动生成, 逆向工具