大型语言模型(LLMs)已成为软件开发中的必需工具,广泛用于需求工程、代码生成和审查任务。软件工程师经常依赖LLMs来评估系统代码实现是否完全满足任务要求,从而提升代码的鲁棒性和准确性。
然而,LLMs是否能够可靠地确定代码是否完全符合给定的任务描述(通常是自然语言规范)仍不清楚。本研究旨在揭示LLMs在评估代码是否符合自然语言要求方面的系统性失败。
大型语言模型(LLMs)已成为软件开发中的必需工具,广泛用于需求工程、代码生成和审查任务。软件工程师经常依赖LLMs来评估系统代码实现是否完全满足任务要求,从而提升代码的鲁棒性和准确性。
然而,LLMs是否能够可靠地确定代码是否完全符合给定的任务描述(通常是自然语言规范)仍不清楚。本研究旨在揭示LLMs在评估代码是否符合自然语言要求方面的系统性失败。
本研究采用以下方法进行实验:
实验设计涵盖了多种编程语言和任务类型,以确保结果的广泛适用性。
研究结果显示,LLMs在代码验证任务中存在以下系统性失败模式:
这些误判的根本原因包括:
这些发现突显了使用LLMs作为代码审查助手的可靠性问题,特别是在需要精确理解代码与规范匹配的场景中。
针对发现的问题,本研究提出了两种改进的提示策略:
将复杂的代码验证任务分解为多个子任务,每个子任务专注于验证代码的一个特定方面,从而减少认知负担和干扰。
通过对比正确和错误代码示例,引导LLMs更准确地识别代码与规范之间的匹配关系,提高验证准确性。
实验结果表明,这两种策略能够显著降低LLMs在代码验证任务中的误判率,提高验证的可靠性。
本研究首次揭示了LLMs在匹配代码与要求方面的未被认识的局限性。主要贡献包括:
本研究为有效使用LLMs在自动化代码审查和任务导向代理场景中提供了新的见解和实际指导,有助于软件开发者更准确地评估和使用LLMs的代码验证能力。
未来工作将探索更先进的提示工程技术,以及结合符号推理方法来进一步提高LLMs在代码验证任务中的性能。