gpt写代码提示词怎么写?需求描述到报错排查的模板
先给结论:gpt写代码提示词的成败在喂料,不在文笔。需求描述用一句话讲清目标加约束,排查报错时把原文整段贴过去,同一个bug我拿三种描述实测过,贴原文比用自己的话转述少两轮对话。第三节的五槽位模板可以整段复制。
gpt写代码提示词怎么写?答案很朴素:把目标、环境、报错原文这三样喂足,别让它猜。八月末的一个晚上,我赶一个csv汇总脚本,被一个KeyError卡了四十分钟,顺手做了个对比实验,同一个bug用三种描述分别喂给gpt,结果差距大到我当场改掉了自己的提问习惯。实验结果和能直接抄的模板,下面全给你。
需求描述怎么写:目标一句话,约束列清楚
合格的需求描述是一句话讲清目标,再跟两条硬约束,三十字内说完你要什么,剩下的信息全部留给环境和报错原文。
我踩过的坑是开头先铺垫背景,写了两行项目来历才说到要什么。gpt不在乎你的项目多有故事,它只认动词开头的那句。写「写一个」「改成」「修复」这种动词起手,目标句基本不会跑偏。
约束比目标更容易漏。语言和版本、能不能装新库、要不要兼容旧数据、输出代码带不带注释,这四项各占一行写清楚就行。我自己吃过亏:让它写pandas脚本,没说库版本,它按老API的写法给,我这边装的是2.x,运行直接报错。多写一行版本号,省一整轮来回。
同一个bug三种喂法:报错原文比转述省两轮
排查bug时直接贴报错原文最省轮次:完整堆栈加最近改动一起给,实测比口语转述平均少两轮才能定位同一个问题。
回到那次KeyError。我的脚本读一份销售csv做分组汇总,一跑就崩。我设计了三种喂法,各开一个新对话,逐轮记录。
第一种纯转述:「我读取csv之后做分组统计报错了,提示key不存在,帮我看看怎么回事。」gpt先让我检查列名拼写,我答没拼错,它又要数据样例,来回三轮才碰到正题。
第二种半转述,把现象加「报错KeyError」都说了。它少问了两个问题,两轮定位到方向,给的修法却是加兜底判断,治标不治本。
第三种直接贴原文:五行核心代码、完整的traceback、环境信息python 3.11加pandas 2.2。第一轮回复就指出表头「销量」末尾藏了个空格,建议read_csv之后对列名做strip。挺离谱的,问题就这么点事,转述的时候我根本没意识到空格值得一提。
不放心单一案例,第二天我又拿一个Node接口的ECONNREFUSED照搬了一遍:转述版三轮,原文版一轮,它直接指出我连的是127.0.0.1,而服务跑在docker容器里。两次结果一致,我心服口服。
| 喂法 | 给了什么 | 定位轮数 | 我的评价 |
|---|---|---|---|
| 纯转述 | 口头描述现象 | 3 | 像猜谜,纯浪费时间 |
| 半转述 | 现象加报错关键词 | 2 | 能用,但给的偏兜底 |
| 贴原文 | 代码加完整traceback加环境 | 1 | 以后只这么喂 |
结论有偏向,我不装中立:报错原文是唯一值得用的喂法。你转述的每一个字都在过滤信息,而被过滤掉的那部分,往往恰好藏着答案,那个空格就是被我过滤掉的。
gpt写代码提示词模板:报错排查的五个槽位照着填
报错排查提示词固定五个槽位:目标、环境版本、最小代码段、报错原文、已试过的方法,按顺序填完直接发。
模板长这样,方括号里替换成你的内容:
①目标:一句话,动词开头,例如「修复这个pandas分组脚本的KeyError」。
②环境:语言版本加关键库版本,例如python 3.11、pandas 2.2、Windows 11。
③代码:只贴最可疑的那一段,十几行以内,别把整个文件糊上去。
④报错原文:traceback从第一行到最后一行完整贴,一个字别删,也别翻译成自己的话。
⑤已试过:写明你排除过的方向,例如重启过、清过缓存、确认过文件路径。
老实讲,第五个槽位最容易被忽略,但它能让gpt跳过让你重试老路的轮次。我现在的习惯是报错卡超过五分钟,立刻切到这个模板重开对话,别在原来的对话里继续挤牙膏。
顺便说句跑题的:这套五槽位思路拿去问非代码问题也好使,把「报错原文」换成「原文材料」就行。话说回来,代码场景收益最大,因为traceback的信息密度远高于人类转述。
写到这里回到开头那句:gpt写代码提示词的成败在喂料。需求描述讲清目标加约束,报错排查贴原文加环境,五个槽位填满,gpt第一轮回复就能给对方向。八月那次实验之后,我的排错轮次基本稳定在一到两轮,这个习惯你今晚就能用上。
常见问题
报错原文很长,全贴会不会超出长度限制?
一般不会。常见报错的traceback多在二三十行以内,gpt完全装得下。真遇到超长的,保留堆栈最后五层和错误类型那几行,中间重复的调用层可以截断,错误类型和行号千万别删。
没有报错但运行结果不对,提示词怎么写?
把第四个槽位换成「实际输出加期望输出」,各贴一小段样例,再写明判断依据。对比样例比一句「结果不对」有用得多,gpt能从差异里反推出逻辑漏洞在哪。
报错里带公司路径或内网地址,能直接喂吗?
建议脱敏后再贴。路径、域名、内网ip替换成占位符没问题,但堆栈结构、错误类型、行号要原样保留,动了这些,定位就不准了。
gpt给的修复代码还是跑不通怎么办?
把新的报错原文继续贴进同一个对话,注明「按你上一步改的,现在报这个」。报错在变说明在收敛,别急着重开对话推翻重来。