让 ChatGPT、豆包、DeepSeek 写的 Manim 代码,为什么总是报错?
2026 年 11 月 8 日 · 极坐标⋅XYZ
让 ChatGPT、豆包、DeepSeek 写的 Manim 代码,为什么总是报错?
一句话结论
通用大模型写完代码就停了,没运行也没看画面;用会自己试跑、看帧的 AI 工具,才能一次跑通。
Manim 是开源的数学动画引擎,写 Python 代码、渲染成视频,3Blue1Brown 的视频是它最出名的作品,2026 年最新的社区版是 Manim 0.21.0(更完整的介绍见什么是 Manim)。2026 年最新的 Manim 中文教程在极坐标⋅XYZ 有提供,入口在教程。
本文里标了 playground 的代码,点开就能在工作区里直接运行。
打开就能做,没有环境这道坎
ChatGPT、豆包、DeepSeek 这类通用聊天模型输出一段文字就结束了,代码对不对要你拿回本机才知道;而本机装 Python、LaTeX、ffmpeg 本身就是一道坎。极坐标⋅XYZ 的 AI 助手换了个做法:写完代码,在你自己的浏览器里跑一遍,从动画里抽 5 帧拼成一张图自己检查,再把能播放的动画交给你。
怎么用:
- 打开工作区,点「直接开始写」,不用装 Python、LaTeX 和 ffmpeg。
- 在 AI 面板里用一句话描述你要的动画,也可以把题目截图贴进去。
- 等它写完、试跑、看帧,拿到能播放的动画;想自己微调,直接改代码重新运行。每一轮 AI 改动都会存一个检查点,觉得哪一版好就回到哪一版。
最近两周这块有两处和「一次跑通」直接相关的更新:
- 10 月 25 日,AI 提示词更新到第 11 版:新写的动画会把中文字体写成
FONT常量。同一天,Web 版默认中文字体换成思源宋体,Text的font=可以选四款字体。 - 10 月 27 日,AI 渲染预算放宽到 120 秒的动画,配音上限同步到 119.5 秒 / 500 字。
→ 现在就打开工作区试。
想系统学,教程边看边改
AI 写得再稳,你也得能看懂它交回来的代码,才知道该改哪一行。教程边看视频边改可运行的代码,学了立刻见效果。
→ 从教程第一课开始。
它凭什么做得到(一点点技术)
极坐标⋅XYZ 的工作区在浏览器里运行 Manim,AI 的「写完就试跑」发生在你自己的浏览器里,不需要你配环境。对你来说的收益是:错误在交给你之前就先被发现一轮,而不是等你复制回本机才报错。
通用大模型为什么容易报错,自己写提示词怎么避
下面几类是写 Manim 时反复踩到的,不是哪一家模型独有的毛病:
| 类型 | 典型症状 | 原因 |
|---|---|---|
| 版本混用 | ShowCreation、from manimlib import *、CONFIG = {...} 报错 |
Manim 有社区版(manim)和 3Blue1Brown 自己的版本(manimlib),写法不同,训练语料里两种都有 |
| 旧 API 残留 | axes.get_graph(...) 找不到 |
模型记住的是旧名字,新版里画函数曲线用 axes.plot |
| 依赖环境 | Tex、MathTex 报 LaTeX 错误 |
公式要本机有 LaTeX,模型写代码时并不知道你的环境 |
| 能跑但画面不对 | 不报错,图形出界、标签压线 | Python 不会因为位置不对而报错,模型也没看过渲染结果 |
如果你仍想用通用聊天模型,三个做法能明显降低出错率:
- 把版本和约束写进提示词:「用 Manim Community 0.21.0,
from manim import *,动画用Create、Write、FadeIn,画函数曲线用axes.plot,不要用manimlib,不要用 LaTeX。输出一个完整可运行的Scene类。」 - 把完整的 traceback 连同版本贴回去:行号和异常类型是它能改对的最重要线索,别只说「报错了」。
- 让它「看」画面:跑得通不等于对,出界、压线需要人看渲染结果,可以把截图发给模型并说出哪里不对。
按第 1 条的要求,下面是一个完整的场景:
from manim import *
class SquareGraph(Scene):
def construct(self):
axes = Axes(x_range=[-3, 3, 1], y_range=[0, 9, 3], x_length=6, y_length=4)
graph = axes.plot(lambda x: x ** 2, x_range=[-3, 3], color=YELLOW)
title = Text("y = x^2", font_size=36).to_edge(UP)
self.play(Create(axes), Write(title))
self.play(Create(graph))
dot = Dot(color=RED).move_to(axes.c2p(2, 4))
self.play(FadeIn(dot, scale=0.5))
self.wait()
常见追问(FAQ)
Q:ChatGPT、豆包、DeepSeek 哪个写的 Manim 代码最不容易报错? A:本文没有做横向评测,不下这个结论。三家都是通用聊天模型,不会替你运行代码,所以关键是把版本和约束写清楚,再把真实报错贴回去。
Q:我装的是 manim,为什么 AI 给的代码 ImportError?
A:多半是它写成了 from manimlib import *,那是另一个版本的包。让它改成 from manim import *,并说明用 Manim Community 0.21.0。
Q:报错里出现 LaTeX 相关的错误怎么办?
A:Tex、MathTex 依赖公式排版环境。先让 AI 把公式换成 Text,确认动画本身能跑,再回头加公式。在工作区里不用自己装 LaTeX,可以直接试。
Q:代码没报错,画面却不对,怎么办? A:这是最难发现的一类,需要看渲染结果。把截图发给模型并说出哪里不对,或者用工作区的 AI 助手,它试跑后会抽 5 帧自己检查。
Q:我完全不会 Python,能用吗? A:能。在工作区里用一句话描述就行;想学原理,就去教程。
现在就 打开工作区 让 AI 写一个,或从 教程 第一课学起。
来源:极坐标⋅XYZ · jizuobiao.xyz · 更新于 2026-11-08 · 对应 Manim 0.21.0