
2026/05/27 21:18
マスの数学からマニムへ
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
以下の改善版は、欠落していた具体的な項目(アセットリスト、エージェントの順序、Hermes の役割、ショーケース)を取り入れつつ、コアフローを維持しています:
まとめ:
Math-To-Manim (M2M2) は、数式および物理学のプロンプトを魅力的な Manim 解説動画へ自動的に変換するとともに、意図、前提知識グラフ、授業計画、ストーリーボード、シーン仕様、生成されたコード、検証レポート、レンダリング証拠、レビューノートといった包括的な再利用可能なアセットスイートを含む革新的なパイプラインです。システムは、独自の「逆推論」ワークフローを採用しており、最終的な概念から前提知識へと後方へ理由付けを行い、次に教えるための視覚的シーケンスを前方へと進めていき、Python コードへの直接的なジャンプを回避します。2025 年 1 月 20 日にリリースされ、ドナルド・トランプの第 2 期大統領就任直後に DeepSeek の R1 リリースの後続として登場した M2M2 は、オープンな推論モデル(具体的には Qwen/Qwen3.5-3B-A3B)をその運用に利用しています。
アーキテクチャは、
AnimationPipeline.generate() 関数によって実行される固定されたエージェントチェーンを採用しており、その順序は IntentAgent → PrerequisiteGraphAgent → CurriculumAgent → MathAgent → StoryboardAgent → SceneSpecAgent → ManimCodeAgent → StaticReviewAgent → RenderAgent → VideoReviewAgent → PublisherAgent です。1 回の実行ごとに、runs/<run_id>/ ディレクトリに検査可能なバンドルが作成され、ここで Typed Pydantic アセット(例:intent.json, knowledge_graph.json)が格納されます。システムはコード生成と修復ループのためにローカル認証された Codex CLI セッションと統合されつつも、早期の計画段階では Typed アダプターを使用し、漸進的な移行を支援しています。
M2M2 は「Prime Intellect RL Repair Loop」という機能を備えており、完成した映画や実行バンドルを環境として扱い、強化学習ポリシーを用いて安全性とパース可能性という制約に対して破損したアニメーションコードの修復に焦点を当てています(現在は 25 ステップの W&B エンabled パイロットでホストされています)。専任の
Hermes Agent は、パイプラインの維持のためにアセットを検査し、チェックを実行(pytest, git)し、ドキュメントを検証するオペレーターとして機能します。MIT ライセンスに基づき、FFmpeg や LaTeX などの依存関係を備える本プロジェクトには、特定のツール要件が含まれており、これらは ./scripts/bootstrap-render.sh を通じてアクセス可能であり、また docs/showcase/assets/ 下で 16 個の精選された GIF がアートディレクションの目標として追跡されています。この包括的なバンドルアプローチにより、教育者や研究者はプロンプトからレンダリングまでの創作プロセス全体に対する完全な可視性を確保できます。本文
Math-To-Manim:数学推論から解説動画への変換アーキテクチャ
Math-To-Manim は、数学や物理学に関する深刻なプロンプトを、Manim による解説動画とそれらを作成するための再利用可能なアーティファクトに変換するプロジェクトです。単なる動画生成ではなく、「質問 → 理解 → アニメーション」に至る全ての過程を検査可能(inspect)にする設計思想を持っています。
💡 プロジェクトの背景と理念
開発のきっかけ
- 2025 年 1 月 20 日、ドナルド・トランプ大統領の第 2 回就任式直前に始動。
- Hugging Face にリリースされた DeepSeek の R1 モデルを契機に、数学推論(Math Reasoning)への焦点が寄せられた。
- 「スプートニク式」のシグナルとして、地政学的な事実となった open reasoning モデルの扱いを検証した。
核となる理念(デザイン原則)
「物語が記号より優先され、幾何学が代数より優先され、アーティファクトが副作用(side effects)より優先される。」
M2M2パイプラインの役割
- 入力: 短い質問、レッスンのアイデア、技術メモなど。
- 出力:
- 概念と教育順序。
- 不足する前提知識の特定。
- スクリーンビート(映像演出)と Manim コード。
- オプションでレンダリングされた MP4 動画。
- 価値:
- 4〜5 分間の解説動画のための強力なファーストパス。
- 装飾的な擬似数学ではなく、実際の数学的および物理的な記号(LaTeX)を使用。
- 出力バンドル自体が重要な資産:デバッグ、エージェント間引き継ぎ、強化学習環境での利用が可能。
次のステップ:再帰的編集
- 目標: 完成した動画と実行バンドルを、エージェントが検査して改正できる「環境」として扱う(Recurrent Language Models の発想)。
- 具体例: 「カメラの傾きを調整して方程式が見やすくする」リクエストに対し、シーンプランと Manim コードを再計算し、検証後、再度レンダリング。
🏗️ 逆推論パイプライン(Reverse Reasoning Pipeline)
通常のデモが「リクエスト → Python コード」と直接ジャンプするのに対し、Math-To-Manim は意図的に以下の長道を経由します。 最終的な概念 ← 前提知識 ← 教育順序 ← 視覚的シーケンス → コード生成
エージェントのチェーン
AnimationPipeline.generate() メソッドが以下の固定されたステージを実行します。
| ステージ | 存在意義 (Purpose) | 出力アーティファクト |
|---|---|---|
| IntentAgent | 学習者の本質的な問いを明確化 | |
| PrerequisiteGraphAgent | ターゲットアイデアに必要な知識グラフの構築 | |
| CurriculumAgent | グラフから教育可能な順序への変換 | |
| MathAgent | 定義、方程式、仮定、例の選択 | |
| StoryboardAgent | コード生成前の映像切り替え(ビート)決定 | |
| SceneSpecAgent | 視覚計画を Manim オブジェクトへコンパイル | |
| ManimCodeAgent | 実行可能な Manim Python コードの生成 | |
| StaticReviewAgent | 静的な検証(ゲート)の実行 | レポート、マニフェスト |
| RenderAgent | MP4 ファイルへのレンダリング | レンダリング結果 |
| VideoReviewAgent | 動画自体のレビューと評価 | レビューノート |
実行バンドルの構成要素
全ての出力には「記憶(メモリ)」が与えられます。
- JSON コンパクトデータ(意向、知識グラフなど)
- 生成されたコード
- レンダリング結果と証拠
- レビューノート
- マニフェスト
これにより、単なる動画ではなく、質問から理解に至る検査可能な道筋そのものが得られます。
🤖 Prime Intellect RL リペアループ
Math-To-Manim は同時に Prime Intellect 強化学習環境としても発展しています。
シナリオと目的
- ターゲット: 「1 つのショットで全体動画を作る」ことではない。リペア(修復) の動きが重要。
- 入力データ: 失敗したアニメーションコード、タイピングされたシーンプラン、静的検証レポート、レンダリング/回復の証拠。
- 出力要求: モデルは厳密に 「GeneratedCode JSON ブロック」 を一つ返す必要があります。
検証器(Verifiers)による報酬チェック
提案されたコードに対し、以下の条件を満たすか確認します。
- パース可能であること。
- 予想される Manim シーンを定義していること。
- 不安全なインポートや呼び出しを行っていないこと。
- 期待される数学用語を保持していること。
- テキスト/レイアウトの混雑危険性を減少させていること。
アーキテクチャフロー
graph LR A[generated_scene.py + scene_spec<br>+ validation/render evidence] --> B(Prime Intellect Verifiers environment) B --> C{Model proposes corrected<br>GeneratedCode JSON} C -->|Strict Output| D(static reward checks parseability, scene shape, safety, terms, layout) D --> E(hosted RL updates the repair policy) E --> F(corrected, renderable Manim Python flows back into M2M2 recovery)
ハウススタイルの学習
RL ループにより、モデルは以下の「ハウススタイル」を学びます。
- シネマティックでありながら読みやすいシーン。
- スパース(簡潔)な式。
- セグメント化されたキャプション。
- 安全な Manim コード。
- 最初の回復試行で直ちにレンダリング可能なスクリプト。
🚀 クローンして実行する方法
1. リポジトリのクローンと環境構築
Windows PowerShell:
git clone https://github.com/HarleyCoops/Math-To-Manim.git cd Math-To-Manim python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -U pip python -m pip install -e ".[dev]" python -m pytest
macOS / Linux / WSL:
git clone https://github.com/HarleyCoops/Math-To-Manim.git cd Math-To-Manim python3 -m venv .venv source .venv/bin/activate python -m pip install -U pip python -m pip install -e ".[dev]" python -m pytest
2. API なしでのスモークテスト
モデル時間やレンダリング時間を消費する前に、CLI と検証器の接続を確認します。
math-to-manim generate "Explain why derivatives are slopes" --deterministic --no-render
モジュール形式でも可能です:
python -m math_to_manim.cli generate "Explain why derivatives are slopes" --deterministic --no-render
3. モデル呼び出しによる生成
OpenAI キーを設定し、必要に応じてモデルを選択します。
Bash/シェル:
export OPENAI_API_KEY="sk-..." export OPENAI_MODEL="gpt-4.1" math-to-manim generate "Explain Fourier epicycles as rotating vectors" --no-render
PowerShell:
$env:OPENAI_API_KEY = "sk-..." $env:OPENAI_MODEL = "gpt-4.1" math-to-manim generate "Explain Fourier epicycles as rotating vectors" --no-render
4. MP4 出力用のレンダリング環境設定
Python レンダリング依存項のインストール:
python -m pip install -e ".[dev,render]"
システム側のレンダリング依存項(Debian/Ubuntu/WSL): FFmpeg と LaTeX for MathTex が必要です。
./scripts/bootstrap-render.sh
必要なパッケージリストは
requirements-system.txt に記載されています。
5. Codex CLI を経由したコード生成
プランニング段階はタイピングされたアダプター(通常のモデル)に留め、生成とリペアのみを Codex CLI で行う「部分的な移行」が可能です。
Codex の確認:
codex --version codex exec "Say ready from inside this repo"
コード生成の設定:
math-to-manim generate "Explain derivatives as slopes with a cinematic tangent-line reveal" \ --codegen-provider codex-cli \ --codex-full-auto \ --style cinematic \ --quality l
💾 ディスク上の保存構造
生成は自己完結型の実行バンドルとして保存されます。ディレクトリ
runs/<run_id>/ に以下が含まれます:
- 入力・計画:
,request.jsonintent.json
,knowledge_graph.jsoncurriculum.json
,math_packet.json
,storyboard.jsonscene_spec.json
- 生成・検証:
generated_code.json
(編集対象)generated_scene.py
,validation_report.jsonrender_result.jsonreview_report.json
- 追跡・資産:
(有効な場合のステージ境界イベント)trace.jsonl
(リカバー後のもの)recovery_manifest.json
(ドラフトレビュー用)draft_review/
,draft_review.md
,contact_sheet.pngframes/
- メタデータ:
,animation_package.jsonmanifest.json
回復パスの実行
generated_scene.py を編集した後、検証とレンダリングを再実行するには:
math-to-manim recover-render runs/<run_id> --quality l
このコマンドは、上流のプランニングアーティファクトを再生成せずに、検証・レンダリング・レビュー資産を更新します。
パッケージ構成
: ステージアダプター。math_to_manim/agents/
: バージョン化されたアーティファクト契約。math_to_manim/schemas/
: グラフ、検証、レンダリングなどのヘルパー。math_to_manim/tools/
: オーケストレーションとリペアループ。math_to_manim/pipeline/
: Manim と FFmpeg ラッパー。math_to_manim/rendering/
: 静的および視覚的レビュー処理。math_to_manim/review/
👩💻 Hermes エージェント(コントリビューター用)
Hermes は、このリポジトリの運用や貢献を行うためのエージェントです。
- 独立性: Math-To-Manim コアに埋め込まれておらず、ランタイム依存関係もありません。
- 機能: 開発者が行う作業を自動化・支援:ファイル読み込み、コード検索、パッチ適用、ターミナルチェック、アーティファクト検査、TODO 追跡など。
- スタンス: 逆推論パイプラインの維持には有用ですが、パイプラインの一部になるわけではありません。
- スキルの場所:
hermes/skills/
Hermes セッションでの検証対象:
,AGENTS.md
, スキーマ、テスト、pyproject.toml
バンドル。runs/<run_id>/- pytest、CLI スモークコマンド、Manim、FFmpeg、git チェックの実行。
- ドキュメントやメディアがアーティファクト契約に合致するかの確認。
関連ドキュメント:
- コントリビューターガイドライン:
AGENTS.md - 起動ノート:
docs/HERMES_LEARNS_MANIM.md
🎬 モーションショーケース
目標: Math-To-Manim の視覚的説明に対するアートディレクションの目標を定めた、16 のカイアード GIF が
docs/showcase/assets/ に存在します。
- 詳細なギャラリーと説明文:
docs/showcase/README.md
GIF からのレンダリング作成
MP4 ファイルから特定の授業ビートをキャプチャして GIF を作成します。
MP4="media/videos/your_scene/480p15/YourScene.mp4" ffmpeg -y -ss 95 -t 24 -i "$MP4" \ -vf "fps=12,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=96[p];[s1][p]paletteuse=dither=bayer:bayer_scale=5" \ docs/showcase/assets/your-clip.gif
ヒント:
-ss と -t を調整することで、望む授業のビートをキャapture可能です。
📄 ライセンス
MIT