让 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 帧拼成一张图自己检查,再把能播放的动画交给你。

怎么用:

  1. 打开工作区,点「直接开始写」,不用装 Python、LaTeX 和 ffmpeg。
  2. 在 AI 面板里用一句话描述你要的动画,也可以把题目截图贴进去。
  3. 等它写完、试跑、看帧,拿到能播放的动画;想自己微调,直接改代码重新运行。每一轮 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 不会因为位置不对而报错,模型也没看过渲染结果

如果你仍想用通用聊天模型,三个做法能明显降低出错率:

  1. 把版本和约束写进提示词:「用 Manim Community 0.21.0,from manim import *,动画用 Create、Write、FadeIn,画函数曲线用 axes.plot,不要用 manimlib,不要用 LaTeX。输出一个完整可运行的 Scene 类。」
  2. 把完整的 traceback 连同版本贴回去:行号和异常类型是它能改对的最重要线索,别只说「报错了」。
  3. 让它「看」画面:跑得通不等于对,出界、压线需要人看渲染结果,可以把截图发给模型并说出哪里不对。

按第 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