arXiv:2506.22390
What Makes ChatGPT Effective for Software Issue Resolution? An Empirical Study of Developer-ChatGPT Conversations in GitHub
Ramtin Ehsani, Sakshi Pathak, Esteban Parra, Sonia Haiduc, Preetha Chatterjee
Subjects: Software Engineering (cs.SE)
想象一下,你是一名软件开发人员,正在为一个棘手的bug焦头烂额。你听说ChatGPT能快速解决编程问题,于是满怀期待地向它描述了问题,结果却得到了一堆错误代码或无关建议。这并非个例——在当今软件开发领域,像ChatGPT这样的对话式大语言模型(LLMs)正被广泛使用,但并非所有开发者与LLM的对话都能有效解决问题。
根据GitHub的2023 Octoverse报告,超过92%的开发者使用包括ChatGPT在内的AI编码工具。这些工具看似无所不能,能生成代码、推荐库、甚至调试程序,但实际效果却参差不齐。Stack Overflow等传统问答平台的流量正在下降,开发者越来越依赖LLMs,但他们也面临着新的挑战:如何判断ChatGPT的回答是否有用?为什么有些对话高效解决问题,而有些却毫无帮助?
这就像我们去医院看病,同样的症状,不同的医生诊断结果和治疗方案可能大相径庭。我们需要知道:什么样的"问诊方式"(即开发者与ChatGPT的对话模式)能带来更好的"治疗效果"(问题解决)?哪些"病情"(软件开发任务)更适合用这种"疗法"(ChatGPT辅助)?
首个标注数据集:创建了包含876个开发者-ChatGPT对话的手动标注数据集,其中686个与GitHub问题直接相关,为该领域研究提供了宝贵的基础资源。
多维度分析框架:从对话、项目和问题三个层面构建指标体系,全面揭示有效对话的特征,而非仅关注单一维度。
缺陷分类体系:首次系统梳理ChatGPT无效回复的常见缺陷,为改进LLM设计提供明确方向。
数据来源:通过GitHub API收集2023年1月至2024年4月期间公开的开发者-ChatGPT对话链接,形成876个对话的数据集,较之前的DevGPT数据集规模翻倍。
数据清洗:
就像侦探根据线索判断嫌疑人,研究者设计了三类"线索"来判断对话是否有帮助:
任务类别 | 定义 | 示例 |
---|---|---|
代码生成与实现 | 生成类、函数等代码构件 | “创建一个bash脚本来执行服务器关闭程序” |
工具/库/API推荐 | 询问特定库或工具的用法 | “我在使用React的TouchableOpacity时,为什么用户拖动列表时透明度会变浅?” |
bug识别与修复 | 调试程序、分析堆栈跟踪 | “我的CSS字体出现了这些问题[堆栈跟踪]” |
开发者实用指南:
工具开发方向:
LLM研究启示:
有效性之谜:揭开为何只有62%的对话有效,发现有效对话更简短、易读,且在语义和语言风格上更一致。
任务适配性:绘制ChatGPT的"能力图谱",明确其在代码生成等任务中的优势和在代码解释等任务中的不足。
缺陷诊断:提供ChatGPT无效回复的"故障代码",如信息错误、不全面、模糊不清等,帮助开发者识别和规避风险。
本文对686个GitHub问题线程中开发者与ChatGPT的对话进行实证分析,旨在明确有效对话的特征。研究通过分类任务类型、分析对话/项目/问题指标,揭示了ChatGPT在问题解决中的表现差异及无效回复的常见缺陷。
指标类别 | 有帮助对话特征 | 无帮助对话特征 |
---|---|---|
结构 | 含更多代码片段、错误信息 | 代码片段过大(平均长度-0.13)、API提及过多 |
语言 | 礼貌词汇+73%、积极语气+48% | 词汇独特性-22%、句子不完整+63% |
语篇 | 主题连贯性高、语义相似度高 | 话题频繁转换、语言风格匹配低 |
这篇实证研究分析了686个GitHub问题线程中开发者与ChatGPT的对话,发现仅62%的对话对问题解决有帮助。ChatGPT在代码生成、工具/库/API推荐等任务中表现突出,而在代码解释和最新信息获取上较为吃力。研究还指出,有帮助的对话通常更简短、易读,且在语义和语言风格上更一致,同时较大的项目和经验丰富的开发者能更有效地利用ChatGPT,其无效回复中最常见的问题是信息错误和不全面。