一个来自姑姑的求救电话
事情发生在上个月。
我表弟今年三年级,暑假刚过半,学校发的暑假作业早写完了。接下来一个多月,他每天的生活就是看电视、玩手机、跟沙发“长”在一起。我姑在电话那头崩溃地说:“你能不能想点办法?他再这么下去,开学全忘光了!”
我想了想,说:“我给他出点数学题吧,每天练练手。”
我姑:“你出?你哪来的时间天天给他出题?”
我说:“我不出,让AI出。”
然后我打开了AiPy。
一句话,它开始“出题”
我在AiPy的对话框里输入了这么一段话:
“帮我做一个数学题生成器,100以内的四则运算,加法、减法、乘法、除法都要有。除法要能整除,不要出现小数。要能自动去重,列如3+5和5+3算同一道题。最后能导出成Word文档,方便打印。界面做成一个简单的桌面程序,我表弟三年级用。”
然后我去厨房倒了杯水。
等我回来的时候,桌面上已经多了一个文件夹,里面躺着一个可运行的Python程序和一个使用说明文档。
我双击运行,界面上有几个选项:选择运算类型、输入要生成的题目数量、点击“生成并导出Word”。我选了“混合运算”,输入“100道”,点了一下按钮。几秒钟后,桌面上多了一个叫“暑假特训——姑姑出品必属精品.docx”的文件。
打开一看——
100道数学题,加减乘除混排,每道题都印在Word文档里,分两栏排列,字体大小适中,标题、分栏、排版全部整整齐齐。
我随机看了几道:47+38、85-29、6×7、56÷8……全是100以内的,除法全部能整除,没有出现“35÷6=5.83”这种让三年级小朋友懵圈的题目。
关键是,这些题目之间没有重复。我用几秒钟扫了一遍,“3+5”和“5+3”没有同时出现,“8×6”和“6×8”也只保留了一道。换成以前手动出题,光“去重”这一件事就能让我崩溃。
我把文件发给我姑。她打印出来,表弟做了一下午。我姑反馈:“他做得挺认真的,说比学校的题有意思,由于啥题都有,不会都是同一类型的。”
它到底是怎么做到的?
后来我研究了一下AiPy的实现原理,发现这事比我想象的“机智”许多。
技术选型:Python + py-docx
AiPy是知道创宇基于“Python-Use”范式开发的开源框架,核心理念是“No Agents, Code is Agent”——让大模型直接生成Python代码并执行,把整个Python生态的能力开放给AI。
在这个案例里,AiPy选择了三条技术路线:
① 为什么用Python:生成题目、处理字符串是Python的舒服区,代码量小、逻辑清晰。
② AiPy的角色:不只是“生成代码”,而是把整个流程编排起来——“生成单题” → “检查去重” → “添加进Word文档” 这几步包装成一个完整的任务,代码清爽、逻辑清晰。
③ py-docx出场:生成Word文档靠它——设置标题、分栏、字号,比手动调格式快一万倍。
整除保障:给除法加“枷锁”
为什么AiPy生成的除法题全部能整除?由于它的做法不是“随机出两个数算结果”,而是“先定结果再反推题目”。
具体逻辑是:
- 先随机生成一个合理的商(列如在1到50之间)
- 再随机生成一个不为0的除数(列如在2到10之间)
- 计算:被除数 = 商 × 除数
这样出来的除法题,必然整除,不会有小数。表弟做了半天题,从来没问过我“为什么35÷6等于5.83”这种问题——由于压根没这种题。
智能去重:给每道题上“指纹”
这是最“神”的一步。AiPy是怎么知道“3+5”和“5+3”是同一道题的?
它给每道题生成了一个签名(signature):
- 加法、乘法(可交换运算):统一按“较小的数 + 较大的数”生成签名。这样3+5和5+3的签名都是(3, 5, '+'),程序就判定它们重复了,只保留一道。
- 减法、除法(不可交换):直接用“操作数1、操作数2、运算符”生成签名。85-29和29-85是两道不同的题,不会被误判为重复。
生成新题的时候,先把新题的签名和已生成的所有题目的签名做对比。如果签名已存在,就重新生成一道,直到产生新的题目为止。所以100道题里,没有一道是重复的。
Word导出:排版自动化
最后一步,AiPy调用py-docx库来生成Word文档。它自己写了代码,创建了一个新文档,添加标题“暑假特训——姑姑出品必属精品”,设置分栏(document.sections[0].columns_count = 2),调整字号,然后把所有题目按行填入。
整个过程完全自动化,不需要我装Office、不需要我调格式。点一下按钮,几秒钟就出一份打印就能用的练习册。
从“不想写”到“主动要做”
我后来仔细想了一下这件事为什么“成了”。
关键不在于AiPy帮我省了多少时间,而在于它让“做题”这件事的体验变了。
以前我姑给表弟买练习册,是“别人出的题”,枯燥、重复、不感兴趣。但这次不一样。我把生成器的界面截图发给他看了,告知他:“你目前做的这些题,是这个程序专门为你生成的,你想要什么题、要多少道,它都能给你做出来。”
他眼睛一下就亮了:“真的?那能不能多出点乘法?我喜爱乘法。”
我让他自己选了“乘法”和“50道”,然后点了一下“生成”。几秒钟后,一份全是乘法题的Word文档就躺在桌面上了。
他拿着打印出来的纸,第一次主动说:“我再做一页吧。”
那一刻我意识到:AiPy帮我的不只是“出题”,而是把“做题”这件事从一个被动任务变成了他可以参与、可以定制的过程。这种“参与感”,比多少练习题都管用。
这件事给我的启发
以前我总觉得,像“出数学题”这种小事,自己手动弄弄就行了,不值得“搞个程序”。
但这件事让我意识到:有些重复劳动,交给AI几分钟就能搞定,而且效果比自己手动做还好。
我手动出100道题,至少要花一两个小时:想题目、检查有没有重复、算一遍答案、再排版打印。而且出到后面,脑子都木了,容易出现低级错误。
AiPy出100道题:从我说完需求到拿到Word文档,不到五分钟。没有错误,没有重复,排版整齐,打印出来就能用。
后来我又让它升级了一下——加了“生成答案页”的功能。我说“在文档最后加一页答案”,它自己修改了代码,重新生成了一个带答案的版本。
目前表弟每天做一页,做完自己对答案。我姑说:“感觉你给他找了个不用发工资的家教。”
一些想说的话
“数学题生成器”只是AiPy无数应用场景中的一个。但恰恰是这种“小事”,让我对AI的能力有了新的认识。
它不只是帮你写代码、做PPT、分析数据,它还能处理那些看起来“太小不值得自动化”的日常琐事——给小朋友出题、整理家庭账本、生成购物清单……
而且AiPy本身是开源免费的,所有数据在本地运行,不上传到任何服务器。给小朋友生成练习题这件事,不需要联网、不需要注册账号、不需要担心隐私泄露,双击安装就能用。
如果你也有“某个重复劳动想让它自动化但又觉得不值得折腾”的事情——不妨花几分钟试试AiPy。说不定等你回来的时候,它已经把东西放在你桌面上了。

