AlphaSolve 是一个基于大语言模型(LLM)的自动化数学定理证明与数学问题求解系统。它采用生成-验证-修正的迭代循环,通过多线程并行探索来逐步构建完整的数学证明(类AlphaEvolve)。
- 并行探索:多个工作线程同时独立探索问题,每个线程构建自己的引理链
- 引理池(Lemma Pool):已验证的引理被存入共享池,供所有工作线程引用和复用
- Agentic 验证器:智能验证器将证明分解为多个步骤,使用计算子代理和符号计算工具进行验证
- 测试时扩展验证:验证器通过多次独立尝试来提高验证可靠性
- 工具调用支持:内置 Python、Wolfram 语言执行器和子代理系统
- 多 LLM 提供商支持:支持 DeepSeek、火山引擎、Moonshot、DashScope、OpenRouter 等
┌─────────────────────────────────────────────────────────────────┐
│ AlphaSolve │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ LemmaWorker │ │ LemmaWorker │... │LemmaWorker │ │
│ │ (线程 1) │ │ (线程 2) │ │ (线程 N) │ │
│ └────────┬────────┘ └────────┬────────┘ └──────┬──────┘ │
│ │ │ │ │
│ └──────────────────────┼─────────────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ LemmaPool │ │
│ │ (已验证引理池) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
flowchart TD
Start([开始]) --> Generator
Generator["<b>Generator</b><br/>───────────────<br/>• 基于已验证引理和问题描述<br/>• 生成新的猜想(conjecture)<br/>• 生成完整证明和依赖关系<br/>• 使用子代理辅助探索"] -->|生成猜想| Verifier
Verifier["<b>Verifier</b><br/>───────────────<br/>• 对证明进行严格审查<br/>• 测试时扩展:多次独立验证<br/>• 输出 verdict<br/>• 使用计算工具辅助验证"] -->|验证通过| LemmaPool
Verifier -->|验证失败<br/>未达最大轮数| Reviser
Verifier -->|验证失败<br/>已达最大轮数| Reject[拒绝该猜想]
Reviser["<b>Reviser</b><br/>───────────────<br/>• 根据评审意见修正<br/>• 可弱化/否定猜想<br/>• 可提取技术难点为新猜想<br/>• 使用子代理辅助修正"] -->|修正完成| Verifier
Reviser -->|修正失败| Reject
LemmaPool["<b>LemmaPool</b><br/>───────────────<br/>• 保存已验证引理<br/>• 供其他线程引用<br/>• 判断是否解决原问题"]
LemmaPool -->|某个引理解决了问题| Solved([问题解决])
LemmaPool -->|引理池容量未满且没有引理解决问题| Generator
style Generator fill:#e1f5ff,stroke:#01579b,stroke-width:2px
style Verifier fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
style Reviser fill:#fff3e0,stroke:#e65100,stroke-width:2px
style LemmaPool fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style Solved fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
style Reject fill:#ffcdd2,stroke:#c62828,stroke-width:2px
style Start fill:#fce4ec,stroke:#880e4f,stroke-width:2px
-
LemmaWorker(工作线程)
- 每个工作线程独立运行,包含 Generator、Verifier、Reviser 三个组件
- 从 LemmaPool 获取当前已验证的引理作为上下文
- 生成新的引理并经过验证-修正循环,直到验证通过或达到最大尝试次数
-
LemmaPool(引理池)
- 线程安全的共享存储,保存所有已验证的引理
- 自动去重(基于引理陈述文本)
- 持久化存储运行状态
-
Generator(生成器)
- 基于当前已验证引理和问题描述,提出新的猜想(conjecture)
- 生成完整的证明和依赖关系
- 使用子代理(proof_subagent、compute_subagent)辅助探索
- 判断当前引理是否已解决原问题(is_theorem)
-
Verifier(验证器)
- Agentic 验证:将证明分解为多个步骤或句子,使用计算子代理逐个验证
- 对生成的证明进行尽量严格的审查
- 使用
VERIFIER_SCALING_FACTOR次独立验证(测试时扩展) - 检查证明的正确性、完整性和严谨性
- 使用
call_compute_subagent进行符号计算和反例查找 - 输出
$\boxed{valid}$ 或$\boxed{invalid}$ 和verdict
-
Reviser(修正器)
- 根据验证器的反馈修正猜想或证明
- 支持弱化猜想、否定猜想、提取技术难点为新的子猜想
- 最多
MAX_VERIFY_AND_REFINE_ROUND次修正尝试
-
Summarizer(总结器)
- 当问题解决时,整理所有依赖的引理和最终定理
- 生成可读的解决方案报告
pip install openai wolframclient设置环境变量(根据你使用的 LLM 提供商):
# DeepSeek
set DEEPSEEK_API_KEY=your_key
# 火山引擎(字节跳动)
set ARK_API_KEY=your_key
# Moonshot
set MOONSHOT_API_KEY=your_key
# DashScope(阿里云)
set DASHSCOPE_API_KEY=your_key
# OpenRouter
set OPENROUTER_API_KEY=your_key
# LongCat
set LONGCAT_API_KEY=your_key如果启用 Wolfram 工具且未使用默认安装路径,设置环境变量:
set WOLFRAM_KERNEL=C:\Program Files\Wolfram Research\Wolfram Engine\14.0\WolframKernel.exe编辑 config/agent_config.py,配置各组件使用的模型:
# 示例:使用火山引擎的 DeepSeek-V3.2
GENERATOR_CONFIG = {
**VOLCANO_CONFIG,
'tools': [PROOF_SUBAGENT_TOOL, COMPUTE_SUBAGENT_TOOL, READ_LEMMA_TOOL, GENERATOR_RESPONSE_FORMAT_REMINDER]
}
VERIFIER_CONFIG = {
**VOLCANO_CONFIG,
'tools': [COMPUTE_SUBAGENT_TOOL, READ_LEMMA_TOOL, READ_CURRENT_CONJECTURE_AGAIN_TOOL]
}
REVISER_CONFIG = {
**VOLCANO_CONFIG,
'tools': [PROOF_SUBAGENT_TOOL, COMPUTE_SUBAGENT_TOOL, READ_LEMMA_TOOL, READ_CURRENT_CONJECTURE_AGAIN_TOOL, READ_REVIEW_AGAIN_TOOL, REVISER_RESPONSE_FORMAT_REMINDER]
}支持的预置配置:
DEEPSEEK_CONFIG- DeepSeek 官方 APIVOLCANO_CONFIG- 字节跳动火山引擎MOONSHOT_CONFIG- Moonshot/KimiDASHSCOPE_CONFIG- 阿里云 DashScopeLONGCAT_CONFIG- LongCatOPENROUTER_GPT_5_CONFIG- OpenRouter GPT-5MIMO_CONFIG- 小米 MIMO
编辑 problems/problem_1.md,写入你的数学问题(LaTeX 格式支持)。
编辑 hint.md 添加解题提示或背景知识,在 main.py 中取消注释 hint = load_prompt_from_file('hint.md') 启用。
# 基本运行(默认 2 个并行线程,1 轮迭代)
python main.py
# 指定参数
python main.py --iteration 2 --batch_size 4 --tool_executor_size 2参数说明:
--iteration:迭代轮数,每轮之间会清理和合并引理池--batch_size:并行工作线程数(默认为 CPU 核心数 - 2)--tool_executor_size:工具执行器(Python/Wolfram)的进程池大小--mode:运行模式,shared_by_all(默认)或shared_by_iteration
- 控制台会输出最终解决方案
solution.md文件保存完整结果logs/目录包含详细运行日志
在 config/agent_config.py 的 AlphaSolveConfig 类中可调整以下参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
MAX_LEMMA_NUM |
30 | 最大引理数量限制 |
VERIFIER_SCALING_FACTOR |
15 | 验证器的独立验证尝试次数 |
MAX_VERIFY_AND_REFINE_ROUND |
5 | 单个引理的最大验证-修正轮数 |
GENERATOR_MAX_RETRY |
3 | 生成器解析失败时的重试次数 |
REVISER_MAX_RETRY |
3 | 修正器解析失败时的重试次数 |
CHECK_IS_THEOREM_TIMES |
5 | 判断是否为最终定理的验证次数 |
MAX_API_RETRY |
8 | LLM API 调用失败时的重试次数 |
PROOF_SUBAGENT_MAX_DEPTH |
3 | 证明子代理的最大递归深度 |
AlphaSolve 为 LLM 提供了多种工具:
run_python:在持久化环境中执行 Python 代码(支持 SymPy、NumPy、SciPy)run_wolfram:执行 Wolfram 语言代码(符号计算、微分方程等)
call_proof_subagent:纯数学证明子代理(无计算工具)call_compute_subagent:计算子代理(可使用 Python/Wolfram)
read_lemma:读取已验证引理的完整证明read_current_conjecture_again:重新读取当前猜想read_review_again:重新读取验证器的评审意见