重构函数时必须保留空列表判空分支等关键约束,应在提示词开头三行明确列出不可变更逻辑,并用具体输入输出样例、单元测试断言锚定行为,禁用模糊动词,改用可验证动作描述,最后强制返回git-style diff并注释修改原因。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

ChatGPT重构函数时把原本能正确处理空列表的分支删掉了,把边界条件判断挪到了循环内部导致索引越界,这不是模型“不聪明”,而是你给它的提示词没锁住关键约束。
明确告诉模型哪些逻辑绝对不能动
在提示词开头用三行强调不可变更项:第一行写「保留以下逻辑」,第二行起逐条列出必须存在的判断、分支、返回值或副作用。例如:
保留以下逻辑
• 当 input_list 为空时,直接返回空列表
• 若 any(item is None for item in input_list),抛出 ValueError
• 每次修改 result 前必须调用 validate_item(item)
这一步漏掉任何一条,模型就可能把防御性检查当成冗余代码删掉。它没有上下文记忆,不会主动回溯你上一轮说过的“这个判空很重要”。
用具体输入输出样例锚定行为
方法一:提供最小可证伪样例
在提示词末尾添加:「请确保重构后函数对以下输入仍产生完全相同的输出:」
input: [] → output: []
input: [1, None, 3] → output: ValueError
input: [2, 4] → output: [4, 8]
方法二:附带原始函数中已验证的单元测试断言
直接粘贴 2~3 行 pytest 断言,如 assert transform([]) == [] 和 assert "None" in str(transform([1, None]))。模型会把 assert 当作硬性契约来对齐。
用于在用户想通过浏览器自动化与 Google Gemini 或 ChatGPT 交互时。触发短语包括“ask Gemini”“ask ChatGPT”“ask GPT”“让...”。
禁止使用模糊动词,替换为可验证动作
第一步:把提示词里的「优化」「清理」「改进」全部删除。
第二步:替换成带验收标准的动词,例如:
• 「将 for 循环改为列表推导式,但保持原有短路逻辑(遇到 None 立即中断)」
• 「把重复的 type(item) == int 判断合并到一个前置校验函数,该函数必须在任何元素处理前执行」
• 「用 functools.reduce 替代手动累加,初始值设为 0,且不改变浮点数精度处理方式」
【关键】模型无法理解“更优雅”或“更 Pythonic”——它只能匹配你给出的具体语法结构和执行顺序。
强制要求返回 diff 而非完整代码
在提示词结尾加上:「只输出 git-style diff,从原始函数开始,仅显示被修改/新增/删除的行,不要重写整个函数。每处修改后用 # WHY: xxx 注释原因。」
这样你能一眼看出它是否误删了 if not input_list: return [] 这类守门逻辑。如果它返回整段新代码,说明提示词没压住输出格式,立刻补上这条约束。










