最近在试着用Prompt让GPT-4帮我做Python代码审查,主要查变量命名、函数长度和潜在bug。我写了个模板,加了“请扮演资深Python开发者”和“逐行分析”这样的指令,但结果很不稳定:有时候它连明显的拼写错误都漏了,有时候又过度解读,把正常代码说成有性能问题。是不是我Prompt里约束太多了?还是应该给几个正反例子?有没有那种“系统1+系统2”的写法?就是先快速扫一遍,再深度审查。求有实战经验的大佬分享下你们的Prompt结构,尤其针对代码审查这种需要稳定输出的场景。
用Prompt调优GPT-4做代码审查,效果时好时坏,求大佬指点
全部回复
共 184 条试试分两步走,先让它标出可疑点,再逐条深挖,比一次性全审稳多了。
我试过类似思路,感觉问题不在约束多少,而是任务太杂了。变量命名、函数长度、潜在bug其实是三种不同的审查标准,混在一个Prompt里模型很容易顾此失彼。后来我拆成两轮:第一轮只让它标出可疑行,不给理由;第二轮再把可疑行喂回去让它逐条解释。这样漏报少很多,过度解读也压下来了。你那个系统1+系统2的想法方向是对的,但得用两次调用实现,别指望一个Prompt里写“先扫再深审”就能稳定。
我之前也折腾过一阵子用GPT-4做code review,确实会有这种时好时坏的感觉。你那个“系统1+系统2”的思路其实挺对的,我后来就是这么改的,先让它快速扫一遍列出可疑点,再针对每个点单独追问,让它给出具体理由和修改建议。这样比自己在一个prompt里塞一堆要求稳定多了,因为模型每次只专注一件事,不容易跑偏。
关于例子的问题,我觉得给正反例有用但别给太多,两三个就够了,重点是要把“什么算问题、什么不算”的边界说清楚。比如你可以在prompt里明确写“只报告会导致运行时错误或明显维护困难的命名问题,不要纠结风格偏好”,这样它就不会把正常代码硬说成性能问题了。另外“逐行分析”这个指令其实挺坑的,容易让它陷入细节,反而漏掉整体逻辑上的bug,不如让它先看函数级别再往下钻。
还有个我踩过的坑是temperature别调太高,做代码审查这种要稳定输出的场景,0.2左右比较合适。另外每次审查前最好把代码按功能块拆开喂给它,一次塞几百行它注意力会散。你那个拼写错误漏掉的情况,我怀疑是prompt里“资深开发者”这个角色设定让它默认你写的都是对的,反而不去挑低级错误了,可以试试去掉角色扮演,直接说“找出所有拼写和语法错误”。
分两步走确实稳,先让它标问题再逐条细审,比一股脑全丢给它好多了。