TheoremExplainAgent
用 AI 生成 Manim 数学动画视频,揭示 LLM 对定理理解的真实水平(ACL 2025 Or
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 AI 生成 Manim 数学动画视频,揭示 LLM 对定理理解的真实水平(ACL 2025 Or
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一位高中数学老师,站在黑板前准备给学生讲解"欧拉公式"。传统的做法是在黑板上画几个圆、写几行公式,学生盯着符号发呆——很多人到毕业也没真正理解为什么 (e^{i\pi} + 1 = 0) 这个式子如此优美。
如果老师手里有一个工具,只需要把欧拉公式的论文扔进去,AI 就能自动生成一段精美的动画视频:复平面上的向量缓缓旋转、复数乘法如何对应角度叠加——学生看完惊呼"原来如此"。这就是 TheoremExplainAgent(TEA) 正在做的事情。
TheoremExplainAgent(论文:arXiv:2502.19400)是 TIGER-AI-Lab 团队的研究成果,已被 ACL 2025 Main Conference 录用为 Oral 论文(Top 3% 入选率)。ACL 是自然语言处理领域的顶级学术会议,能在 ACL 获得 Oral 演讲资格,说明该研究在学术界具有相当的影响力。
团队的核心洞察是:LLM 对定理的理解能力,不能仅通过文字问答来评估。文字回答可以很流畅、很自信,但实际上是"幻觉"——模型并没有真正理解定理背后的几何直觉或逻辑链条。而 动画视频 提供了一种全新的多模态评估维度:模型是否真正理解了定理,看它能不能生成正确的、可解释的动画内容。
TEA 的完整工作流程分为以下几个阶段,体现了多智能体协作的思想:
用户输入一个数学定理或题目描述后,VideoPlanner 模块首先规划整个视频的叙事结构。它会将一个完整的视频拆解为多个场景(Scene),每个场景对应定理证明过程中的一个逻辑步骤。例如讲解欧拉公式,可能规划为:复平面基础 → 旋转的几何意义 → 泰勒级数连接 → 最终公式呈现。
规划阶段使用 RAG(检索增强生成)从 Manim 官方文档和社区代码库中检索相关的动画实现参考,确保生成的计划具有技术可行性。
每个场景对应一段 Manim 代码。Manim 是 3Blue1Brown(3蓝1棕)用来制作数学科普视频的 Python 库,可以生成精确、美观的数学动画。CodeGenerator 负责生成符合 Manim 语法的 Python 代码片段。
生成过程采用并发处理:多个场景可以同时生成,通过 asyncio.Semaphore 控制并发数量(默认 5),避免 API 调用过载或 Token 配额耗尽。
这是 TEA 最有技术含量的部分。生成的 Manim 代码可能存在渲染错误(如图形重叠、动画时序不对),传统方案是直接让 LLM 修复代码,但纯文本反馈信息有限。
TEA 的做法是:先用 Manim 渲染生成预览图,再将预览图反馈给 LLM,告诉她"这里图形叠在一起了,请修复代码"。这是一种 视觉反馈回路(Visual Feedback Loop),让 AI 能"看到"自己的错误,显著提升代码修复的准确率。
TEA 不只是生成无声动画,还集成了 Kokoro 开源 TTS 模型(支持 ONNX 推理,GPU 加速)为视频配音。配合 gTTS 和 SpeechRecognition 实现语音转文字pipeline,为数学讲解提供自然流畅的旁白。
项目内置了完整的评估体系,包含 5 个评估指标维度:视觉质量、音频质量、代码正确性、教育价值、整体连贯性。评估脚本支持自动打分和人工评分两种模式,便于研究团队量化不同 LLM 的表现差异。
项目采用清晰的模块化架构:
TheoremExplainAgent/
├── src/
│ ├── core/ # 核心生成引擎
│ │ ├── video_planner.py # 场景规划(LLM 调用)
│ │ ├── code_generator.py # Manim 代码生成(LLM 调用)
│ │ ├── video_renderer.py # Manim 渲染执行
│ │ └── parse_video.py # 视频解析(抽帧分析)
│ ├── rag/ # RAG 检索增强
│ │ ├── rag_integration.py # 检索+注入 pipeline
│ │ └── vector_store.py # ChromaDB 向量存储
│ └── config/ # 配置管理
├── mllm_tools/ # 多 LLM 后端统一封装
│ ├── litellm.py # LiteLLM 统一接口(OpenAI/Gemini/Azure)
│ ├── gemini.py # Google Gemini 原生调用
│ └── vertex_ai.py # Google Vertex AI 调用
├── task_generator/ # 题目/定理生成 prompt 管理
├── generate_video.py # 主入口脚本(VideoGenerator 类)
└── evaluate.py # 评估脚本
TEA 通过 LiteLLM 实现了对多个 LLM 后端的统一封装,支持:
LiteLLM 的引入使得在不修改核心代码的情况下切换不同的 LLM 供应商,大幅提升了框架的灵活性。
项目依赖 Manim 0.18.1(精确版本锁定),并额外集成了多个社区扩展库:
manim-physics:物理场景动画manim-ml:机器学习可视化manim-chemistry:化学结构动画manim-dsa:数据结构与算法可视化manim-circuit:电路图动画这使得 TEA 不仅仅能讲解纯数学,还可以扩展到物理、计算机科学等多个学科领域。
RAG 模块使用 ChromaDB 作为向量数据库,配合 Azure OpenAI Embeddings(或本地 embedding 模型)实现语义检索。Manim 官方文档被切分为块(chunk)后存入向量库,生成代码时实时检索相关示例作为上下文注入,大幅提升生成代码的正确率。
集成了 Langfuse(开源 LLM 可观测性平台),支持 tracing、token 计数、成本分析和质量评估。每次视频生成任务都有完整的 trace_id,便于复盘和优化。
TEA 的安装过程较为复杂,主要门槛包括:
.envREADME 提供了详细的安装步骤,但整体门槛明显高于普通 Python 包。对于没有 AI/ML 环境配置经验的用户,可能需要 1-2 小时完成全部配置。
纯 CLI 工具,无 Web 界面。核心使用方式:
python generate_video.py \
--planner_model "gpt-4o" \
--scene_model "gpt-4o" \
--task "Explain Euler's formula e^{iπ}+1=0" \
--output_dir ./output \
--use_rag \
--use_visual_fix_code
支持的关键参数:
--use_rag:开启 RAG 检索增强--use_visual_fix_code:开启视觉反馈修复--max_scene_concurrency:并发场景数(默认 5)--use_langfuse:开启 Langfuse 可观测性Manim 语法严格,生成的代码偶尔会出现语法错误或渲染失败。虽然有 use_visual_fix_code 机制作为兜底,但在某些复杂定理(如多步归纳证明)上仍可能出现连续多次生成失败的情况。这是当前 LLM 生成代码能力的普遍局限。
整个 pipeline 的质量上限取决于底层 LLM 的数学理解能力和代码生成能力。GPT-4o 和 Gemini 的表现存在差异,且随着模型版本更新,同一个 prompt 可能产生截然不同的结果。缺乏对生成结果稳定性的系统性保障。
项目未提供 Dockerfile 或 docker-compose.yml。对于希望在服务器环境运行(非个人开发机)的用户,需要手动在 Docker 容器中复现完整的 Python 环境,迁移成本较高。
Manim 渲染是 CPU 密集型任务(尤其是复杂 3D 场景),即使有 GPU 加速,一个 2-3 分钟的定理讲解视频通常需要 10-30 分钟渲染时间。音频合成的实时性尚可,但与专业视频制作工具相比效率有限。
TheoremExplainAgent 代表了 AI 在数学教育自动化方向的一个重要突破。它不仅仅是"生成视频",而是在尝试教会 AI 真正理解数学概念的几何直觉——这是此前纯文本评估无法触及的维度。ACL 2025 的 Oral 录用本身就是对这一方向的学术认可。
项目开源的意义不仅在于复现论文结果,更在于为整个 AI + 数学教育社区提供了一个可扩展的基础设施:
可以预见几个可能的演进方向:
一句话总结:TheoremExplainAgent 是一个将 LLM 的数学理解能力"可视化"的学术级工具,通过生成 Manim 动画视频来揭示文字问答中看不见的推理漏洞和几何直觉,是 AI 数学教育领域值得关注的前沿探索。