You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设计可管理超10000道数学题生成模板的项目结构?

数学试题生成模板最优存储方案

核心设计思路

采用装饰器自动注册+按题型分层存储的轻量方案,完全避免大量冗余类或者单类上万方法的问题,同时支持后续平滑扩展到10000+模板。

具体实现方案

1. 实现统一注册器

用字典作为全局容器存储所有模板,通过装饰器自动完成模板注册,不需要手动维护模板列表:

import random
from typing import Callable, Dict, Tuple

# 全局模板注册容器,key为模板唯一ID,value为试题生成函数
question_templates: Dict[str, Callable[[int], Tuple[str, str]]] = {}

# 模板注册装饰器
def register_template(template_id: str):
    def wrapper(func: Callable[[int], Tuple[str, str]]):
        question_templates[template_id] = func
        return func
    return wrapper

2. 按题型拆分模板文件

将模板按知识点、题型拆分到不同目录和文件中,单个文件最多存放几十组模板,避免文件过大难以维护,示例目录结构:

math_test_generator/
├── core/
│   ├── __init__.py
│   └── registry.py # 存放上述注册器代码
└── templates/
    ├── __init__.py # 配置自动导入所有子模块的模板
    ├── arithmetic/ # 四则运算题型
    │   ├── add.py
    │   ├── subtract.py
    │   ├── multiply.py
    │   └── divide.py
    ├── algebra/ # 代数题型
    │   ├── linear_equation.py
    │   └── polynomial.py
    └── geometry/ # 几何题型
        ├── area_calculate.py
        └── angle_calculate.py

每个模板函数只需要加装饰器即可完成注册,示例:

# 放在templates/arithmetic/add.py中
@register_template("addition_basic")
def addition_template(difficulty: int) -> Tuple[str, str]:
    a = random.randint(1, 10 ** difficulty)
    b = random.randint(1, 10 ** difficulty)
    return f"What is {a} + {b}?", str(a + b)

只需在templates/__init__.py中配置自动遍历导入所有子模块的代码,即可一次性完成所有模板的注册,不需要手动逐个导入。

3. 调用方式

直接从注册容器中调取模板即可生成试题,示例随机抽题逻辑:

def generate_random_question(difficulty: int) -> Tuple[str, str]:
    # 随机选一个模板
    template_func = question_templates[random.choice(list(question_templates.keys()))]
    return template_func(difficulty)

方案优势

  • 无冗余代码:不需要定义大量类,也不需要把所有方法塞到同一个类中,每个模板就是独立的普通函数
  • 扩展性极强:新增模板只需要在对应分类的文件里加带装饰器的函数即可,不需要修改核心逻辑,10000+模板也可以按知识点分类清晰管理
  • 检索灵活:可以给注册装饰器扩展标签参数,标记题型、适用学段等属性,后续可以按标签筛选指定类型的试题
  • 易维护:修改单个模板的生成逻辑只会改动对应文件,不会影响其他模板的正常运行

内容的提问来源于stack exchange,提问作者aligen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 00:51:03