学术研究报告:评估大语言模型在代码生成中的沟通能力
一、 研究作者、机构与发表信息
本研究由加拿大不列颠哥伦比亚大学奥肯那根分校(University of British Columbia Okanagan)计算机科学系的 Jie Jw Wu 和 Fatemeh H. Fard 共同完成。研究成果以论文形式发表,标题为《HumanEvalComm: Benchmarking the Communication Competence of Code Generation for LLMs and LLM Agents》。该论文发表于 ACM Transactions on Software Engineering and Methodology 期刊,第34卷第7期,文章编号189,出版日期为2025年8月。
二、 学术背景与研究目标
本研究的核心科学领域是软件工程与人工智能的交叉领域,具体聚焦于大语言模型(Large Language Models, LLMs)在代码生成任务中的应用与评估。近年来,LLMs在代码生成方面取得了显著进展,但其能力与顶级软件工程师之间仍存在差距。一个关键的区别在于,人类软件工程师在面对模糊、不一致或不完整的任务需求时,会主动提出澄清性问题以消除歧义,从而确保最终代码的正确性。然而,现有的代码生成评估基准(如 HumanEval)通常假设问题描述是清晰完整的,模型被要求直接生成代码,这未能评估模型在现实开发场景中至关重要的“沟通能力”。
基于此观察,本研究团队认为,将沟通能力——即“当代码生成问题的描述存在问题时能够提出澄清性问题的能力”——作为评估LLMs代码生成能力的一个重要维度,对于推动其向更可靠的软件工程助手发展至关重要。本研究旨在填补这一空白,其具体目标包括:1) 定义一个针对代码生成任务的LLM沟通能力评估框架;2) 创建一个新的基准数据集 HumanEvalComm,通过系统性地引入需求工程(Requirement Engineering)中的三类问题(不一致性、模糊性、不完整性)来模拟真实世界中的模糊需求;3) 通过该基准对现有主流代码LLMs的沟通能力进行首次系统性实证研究;4) 提出并评估一种新型的LLM智能体(Agent)方法 Okanagan,旨在通过多轮交互和澄清提问来提升代码生成质量;5) 引入基于LLM的自动评估器以及“沟通率”(Communication Rate)和“优质问题率”(Good Question Rate)等新评估指标。
三、 详细研究流程与方法
本研究的工作流程主要包括四个核心环节:基准构建、模型评估、智能体方法设计以及评估体系建立。
第一环节:HumanEvalComm 基准数据集构建。 研究团队选择广泛使用的代码生成基准 HumanEval 作为基础。HumanEval 包含164个手写的Python编程问题。为了构建 HumanEvalComm,研究者没有采用自动化方法,而是进行了耗时约130小时(初始修改约100小时,评审讨论约30小时)的人工修改工作,以确保修改的质量和意图明确。修改工作由一名拥有近十年行业经验的软件工程师执行,并由另一名拥有超过15年经验的工程师进行评审,通过多轮讨论达成一致。
修改基于一个明确的分类法,该分类法源于需求工程领域,包含三类问题:模糊性(Ambiguity):描述中的语句可能对应不同的概念。实际操作中,研究者发现仅靠模糊性难以触发提问(因为函数签名和测试用例可能隐含了正确信息),因此采用了“模糊性+一定程度错误性”的组合修改策略。不一致性(Inconsistency):描述中的陈述相互冲突,主要是修改测试用例的输出,使其与文本描述相矛盾。不完整性(Incompleteness):问题描述中缺失了某些概念或条件,通过移除部分描述内容实现,确保不提问就无法生成正确代码。
对于每个原始问题,研究者应用了六种修改:单一类型(1A:模糊性;1C:不一致性;1P:不完整性)以及两两组合类型(2AC:模糊且不一致;2CP:不一致且不完整;2AP:模糊且不完整)。组合修改仅在产生与单一类型不同的新描述时才被创建。最终,HumanEvalComm 包含了762个修改后的问题描述(由于组合修改的筛选,数量少于164*6)。
第二环节:评估指标与实验设置。 为了量化评估沟通能力,本研究提出了两个新指标:沟通率:模型在面对修改后的问题时,返回澄清性问题(而非直接生成代码)的响应比例。优质问题率:在那些提出了问题的响应中,被评估为“优质”(即问题有助于恢复所有缺失信息)的比例。代码生成质量的评估则沿用经典指标 Pass@1(首次生成代码即通过所有测试的比例)和 测试通过率(生成代码通过测试用例的比例)。
实验评估了五类模型:三个开源指令微调代码LLM(CodeLlama-instruct-13B, DeepSeek Coder 7B, CodeQwen1.5 Chat 7B)、一个开源指令微调通用LLM(DeepSeek Chat 7B)以及一个商业模型(ChatGPT-3.5-turbo)。所有实验均采用相同的提示词,要求模型“要么生成Python3代码,要么提出澄清性问题”。
第三环节:LLM智能体方法 Okanagan 的设计。 为了提升沟通和代码生成能力,研究者提出了一种名为 Okanagan 的LLM智能体方法。该方法采用了一个结构化的三轮交互流程:第一轮:智能体根据修改后的问题描述直接生成代码。第二轮:智能体基于第一轮生成的代码和问题描述,判断是否需要并提出澄清性问题。如果没有问题,则直接返回第一轮的代码。第三轮:智能体结合之前的对话历史(包括问题描述、提出的问题以及获得的答案),重新生成最终代码。该方法的核心参数包括智能体数量、轮次、每轮动作(生成代码或提问)以及思考模式(反思或辩论)。在本研究中,默认使用单一智能体、三轮、以及“反思”模式,并以 ChatGPT-3.5 作为底层LLM进行实现和评估。
第四环节:基于LLM的评估器与数据分析流程。 研究流程(如图2所示)对于每个修改后的问题:1) 将问题输入被评估模型(代码LLM或Okanagan);2) 如果模型返回代码,则直接评估其 Pass@1 和测试通过率;3) 如果模型返回问题,则将这些问题、修改后的问题描述以及原始问题描述一同输入一个 基于LLM的评估器(本研究使用 GPT-3.5)。该评估器有两个任务:a) 评估问题质量(给出1-3的分数);b) 根据原始问题描述生成对模型所提问题的答案。4) 将评估器生成的答案反馈给模型,模型再生成最终代码并进行评估。为了验证自动评估的可靠性,研究者还招募了6名研究生进行了人工评估,对60个样本进行了问题存在性、问题质量和答案质量的手动标注,并计算了评分者间信度(Cohen‘s Kappa)。
四、 主要研究结果
1. 代码LLMs在HumanEvalComm上的表现(回答RQ1): * 沟通意愿低下:超过60%的代码LLM响应在面对需要澄清的问题描述时,仍然选择直接生成代码而非提问。沟通率普遍较低,ChatGPT、CodeLlama、CodeQwen1.5 Chat 均低于20%,DeepSeek Coder 和 DeepSeek Chat 较高,但也仅为30.76%和37.93%。 * 代码质量显著下降:与在原始HumanEval上的表现相比,所有代码LLM在HumanEvalComm上的Pass@1和测试通过率均出现大幅下降。Pass@1相对下降35%-52%,测试通过率相对下降17%-35%,且超过75%的类别下降具有统计显著性。 * 对不同问题类型的敏感度差异:在单一问题类型中,不完整性(1P) 触发的沟通率和优质问题率最高,但导致的代码通过率也最低,因为缺少关键信息时,不提问几乎无法生成正确代码。不一致性(1C) 触发的沟通率最低,但代码通过率相对最高,表明模型有时能“猜”对矛盾中的正确答案。模糊性(1A) 的表现介于两者之间。组合问题类型(2AC, 2CP, 2AP)比单一类型略提高了沟通率,但大幅降低了代码通过率,挑战性更大。
2. Okanagan 智能体与代码LLMs的对比(回答RQ2): * 沟通能力大幅提升:Okanagan(以ChatGPT为基座)将沟通率从ChatGPT的14.21%提升至72.73%,优质问题率从13.43%提升至52.24%。 * 代码生成效果改善:在HumanEvalComm上,Okanagan的Pass@1和测试通过率分别比基座ChatGPT绝对提升了约8%和7%。这表明通过主动提问获取必要信息,能有效提升最终代码的正确性。 * 存在的局限性:在原始、无问题的HumanEval上,Okanagan的通过率反而低于直接使用ChatGPT。这是因为其多轮结构有时会对原本清晰的问题提出“不必要”的提问,影响了初始响应代码的评估。这揭示了智能体在“何时停止提问”的智能判断上仍有改进空间。 * 模型泛化性:当将Okanagan的基座模型从ChatGPT替换为DeepSeek Coder时,沟通率和优质问题率进一步提升,但代码通过率有所下降,提示提示词设计可能需要针对不同基座模型进行优化。
3. 评估器与评估指标的可靠性(回答RQ3): * 人工评估表明,基于LLM的评估器为模型提出的问题生成答案的可接受答案率(良好或一般)对所有模型均超过50%,良好答案率对大多数模型超过50%,显示了其基本有效性。 * 然而,对于模型未提问的情况,评估器有时会错误地“恢复”缺失信息(错误恢复率),对于Codellama、CodeQwen等模型,该比率在30%-40%之间,这可能虚高这些模型的测试通过率。 * 自动评估的沟通率与人工评估结果吻合较好(差异普遍小于10%),但优质问题率存在较大偏差,自动评估器倾向于给出比人工评判更宽松的“优质”标签。 * 人工评估的评分者间信度(Kappa值)在0.72-0.96之间,表明评估标准的一致性较高。
4. 提示策略与超参数的影响(回答RQ4): * 不完整性程度的影响:研究者测试了随机移除问题描述不同比例内容(30%, 50%, 90%)的影响。结果显示,即使移除50%的内容,仍有95%的代码LLM响应选择直接生成代码而非提问。直到移除90%内容,提问比例才升至54%,这突显了当前LLMs在主动识别信息缺失方面能力的薄弱。 * 温度参数的影响:将ChatGPT的温度从1.0降至0(确定性输出)时,测试通过率下降,但沟通率从1.8%微升至3.7%,表明降低随机性可能促使模型在不确定时更倾向于提问而非猜测。
五、 研究结论与价值
本研究得出核心结论:当前的大语言模型在代码生成任务中普遍缺乏有效的沟通能力,在面对不完整、不一致或模糊的需求时,多数模型倾向于直接生成可能错误的代码,而非像人类工程师那样主动寻求澄清。这揭示了LLMs作为编程助手与人类专家之间的一个关键能力差距。
本研究的主要贡献与价值体现在: 1. 学术价值:首次系统性地定义并实证评估了LLMs在代码生成中的“沟通能力”,提出了一个基于需求工程理论的新评估维度。创建的 HumanEvalComm 基准数据集为未来研究提供了一个标准化的测试平台。 2. 方法创新:提出的 Okanagan LLM智能体框架,通过结构化的多轮交互机制,显著提升了模型在模糊需求下的提问能力和最终代码质量,为构建更智能、更协作的AI编程助手提供了可行路径。 3. 评估体系:引入了 沟通率、优质问题率 等新评估指标,并探索了基于LLM的自动评估方法,为衡量AI系统的交互与协作能力提供了量化工具。 4. 实践启示:研究结果明确指出,未来的代码生成模型和AI编程工具需要将“主动沟通”和“需求澄清”作为核心能力进行设计和优化,这对于其在真实、复杂的软件开发场景中可靠应用至关重要。
六、 研究亮点
七、 其他有价值内容
研究公开了完整的基准数据集和代码(GitHub仓库:https://github.com/jie-jw-wu/human-eval-comm),遵循开放科学原则,便于社区复现和后续研究。论文中对实验配置(计算资源、成本、运行时)、统计检验方法(独立双样本t检验)以及威胁到有效性的因素(如人工修改的主观性、LLM评估器的误差等)进行了详细说明,体现了研究的严谨性和可重复性。此外,研究还对比了指令微调模型与基础模型,指出基础模型由于无法遵循“生成代码或提问”的指令,不适合本评估任务,这为模型选型提供了参考。