论文

将推理轨迹提炼为软件工程任务的咨询提示

Distilling Reasoning Traces into Advisory Prompts for Software Engineering Tasks

上下文与知识上下文工程

摘要

语言模型广泛用于生成和处理代码(例如,识别代码幻觉、可能的输入或预测输出);然而,LLM 可能会犯错误,而且可能会很严重。一个关键问题是模型是在(仍然)主要是人类编写的、因此不完美的代码上进行训练的;找到足够大且完全没有错误的代码库并不容易。因此,需要其他无需额外训练即可减少 LLM 错误的推理时间方法。 “推理”或“思考”模式通过混合推理模型公开为可切换功能,确实可以减少错误;然而,推理会消耗额外的资源。本文询问是否可以在不总是产生推理成本的情况下实现更好的性能。学习编程的人类学生通过以下方式学会避免错误:(a)识别错误,(b)反思导致错误的认知失误(本质上是“思考”错误),(c)从这些反思中推断出一般规则或教训,以及(d)将这些教训内化为规则。在与讲师的辅导课程中,这是常见的苏格拉底式互动。这种内部化规则的例子可能包括“在编码之前,重述需求以澄清它们”。受此过程的启发,本文描述了一种方法,我们首先确定(低资源)LLM 中的“思维模式”避免错误的示例。这些错误,以及通过在同一个 LLM 中“思考”来避免的错误,然后由更大的 LLM 进行检查,以生成摘要解释;然后,这些内容会被一个大的 LLM 总结为简短的咨询提示。这种方法适用于许多中等尺寸的模型;在某些情况下,由此学到的“咨询提示”也可以有效地转移到其他模型中。我们还对语言模型产生的编码错误的性质进行了调查,并描述了这种方法何时有用。