你让ChatGPT把一段固定逻辑的脚本改造成可配置版本,但每次提示它“改成可配置的”,它就重写整个函数结构、拆分模块、引入类和配置文件——而你真正希望的是只抽出那几处硬编码路径和超参,其余逻辑原样保留。这个问题其实有章可循。

三步走:明确配置项边界、提供最小可运行模板、封住越界改动。每一步都能精准框住ChatGPT的行为。
明确配置项边界
第一步先做这个小动作:在原始脚本里,用中文注释标出你真正想配置的3~5个位置。比如在模型路径后面写 # CONFIG: 模型路径 → /models/v2/llama-7b.bin,在最大生成长度后面写 # CONFIG: 最大生成长度 → 512。千万别写“所有参数都可配”,ChatGPT会当真,然后大刀阔斧地改造。
第二步,把这些带 # CONFIG: 标记的行单独复制出来,连同它们所在的上下文(前1行+后1行),整理成一个列表,作为提示词的附件内容。这相当于给模型划出修改红线——只动带 # CONFIG: 标记的行及其直接赋值表达式,其他代码逐字保留。
第三步,在提示词开头就写明约束:“不新增函数、不改函数签名、不引入新 import、不重命名变量。仅将 # CONFIG: 行右侧的值替换为从 config.py 或 argparse 读取的变量,保持缩进和空行完全一致。”
提供最小可运行配置模板
方法一:直接给出 config.py 内容草稿。在提示词末尾粘贴如下内容(注意缩进和引号类型):
config.py
MODEL_PATH = "/models/v2/llama-7b.bin"
MAX_NEW_TOKENS = 512
ENABLE_POSTPROCESS = True
然后要求:“把脚本中所有 # CONFIG: 行替换成对应 config.MODEL_PATH 等引用,import config 写在文件顶部已有 import 下方。”
方法二:用 argparse 模板替代。如果脚本本身已用 argparse,就补一句:“沿用现有 parser.add_argument() 风格,在 main() 上方补充缺失参数定义,参数名与 # CONFIG: 右侧变量名一致(如 max_new_tokens),default 值设为原硬编码值。”
注意:如果原脚本没用 argparse,不要提这个方法——它会强行插入一堆初始化代码。
封住常见越界改动
在提示词最后加一句否定指令:“禁止以下操作:删除 print 语句、合并 if 块、把常量移到类属性、添加 type hints、改 for 循环为列表推导式。”
这一步能拦住 ChatGPT 自作主张的“优化”。它常以为删掉调试 print 是帮你清理代码,结果导致你无法定位后续报错位置。
如果脚本含 JSON 读写,额外加一句:“config.json 路径必须保持为 ./conf/config.json,不可改为相对路径变量。”
这套组合拳打下来,ChatGPT 就能老老实实只动你标记的那些配置项,其余逻辑原样保留。每次改造前花两分钟写好这三部分提示词,比改完再手动回滚节省大量时间。
