四篇Code+LLM论文速读

本文总结了关于LLM在代码审查和自动生成方面的研究,包括小样本学习、提示设计、模型微调对GPT-3.5性能的影响,以及如何利用审阅者经验和数据增强提升自动化代码审查质量。文章还提及了产品形态如插件和无提示交互在代码理解中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

自从LLM的发展,LLM4Code已经生成一个落地比较强的方向了,比较好的产品就是github的copilot。

这些天看了不少code的相关paper,准备花几篇文章大概总结一下,主要总结一些有价值的点,细节就不展开了。细节可以自己去看下原文

主要的方向就是code review,code generation等

一、GPT-3.5 for Code Review Automation: How Do Few-Shot Learning, Prompt Design, and Model Fine-Tuning Impact Their Performance?

链接:https://arxiv.org/pdf/2402.00905.pdf0cc7b89a380780e2beedeb98b9373600.png

这篇文章主要是讨论小样本学习、提示设计(即使用角色模式)和模型微调对 GPT-3.5 的影响。

流程中已经很清晰的给出三种实验了。

1.1 Zero shot prompt设计

f6df6dcbaaa63ea709b355fc3de8f6b6.png

1.2 few shot prompt设计

0264a38479e4b506447a9aaa6e47e851.png这里的例子由 BM25 检索方法 从训练集中获取三个输入和输出示例对。

1.3 数据集

  • CodeReviewer

  • Tufanodata

  • D-ACT

1.4 结论

建议在使用 GPT-3.5 进行代码审查自动化时

  • (1) 应进行小样本学习而不是零样本学习

  • (2) 构建提示时不应包含角色,以及

  • (3) GPT-3.5 应使用小型训练数据集进行微调。

二、Improving Automated Code Reviews: Learning From Experience

https://arxiv.org/pdf/2402.03777.pdf067b91cf631d2cb9f0ce63b0b06e140c.png

这篇paper着重挖掘了reviewer的experience,文章指出具有高创作/或审查经验的审阅者来训练模型,并在训练期间过度表示他们的示例。使用这种方法,过采样示例将对模型的行为产生更大的影响,从而生成更高质量的评论。

根据commit 数量和pr的数量的关系,分为:major authors、 minor authors 、major reviewers、minor reviewers,所以用户的角色也有很多种,这意味着reviewer的经验会不一样。

2.1 流程

  • 数据准备:在github找了很多10k star的高星项目,提取其中的review等信息

  • review的meta信息:这个直接通过github rest api就可以获取到,比如commit diff, date等信息

  • 删除机器人:这个意思应该是很多review也有机器人作用的,而我们要的是人的review的样本,所以删除

  • 挖掘审阅者经验:f3cba8aa867bd2c451517cb65ac67855.png

其中身份比例:

19e2587a1185711abf21658cd20b6eea.png对三种身份(仅主要审稿人主要作者(MRMA)、所有主要审稿人(MR)、所有主要作者(MA))每一种分别微调

三、Using an LLM to Help With Code Understanding

ICSE2024的一篇文章来自CMU:https://arxiv.org/pdf/2307.08177v3.pdf

这篇文章主要是讨论产品形态的,和技术关系也不大

3.1 插件形态

本文中作者开发了一个插件

d148a4fa2841409c8bcec4b82604c4f5.png

在选中2的一段代码后,会直接触发生成3所指的overview部分,文中把3所选框内称为无提示交互,只需要点一点就可以了,而chat部分还需要写提示。

在显示代码的摘要说明(概述)。然后,可以通过单击 API (API)、特定领域概念 (Concept ) 和用法示例 (Usage) 的按钮进行进一步探索。

3.2 实验

简单说下实验,就是找了很多人,有学生有研究人员,有用过chatgpt的也有没有用过的,做一个数据可视化3D渲染的工作。

35a7120452c0f855f09ab89560ff0a1e.png主要就是把左图中的兔子,最终旋转并易到板凳上。

中间有很多小的task,作为中间过程。实验的人主要是通过插件来逐步完成这个任务。

9cb64c718828482cb3de624ec7edb748.png

与专业人士相比,学生在编程信息搜索方面的经验可能较少,在制定有效提示方面遇到了挑战,并且更多地依赖无提示的互动(Overview),主要也是突出了这种推送式、点击式、不需要prompt的方式更易用。

四、Automatic Semantic Augmentation of Language Model Prompts (for Code Summarization)

ICSE2024的一篇文章,来自加州大学: https://arxiv.org/abs/2304.06815

8cf8b5221918a66e8d084083ebf3bc70.png

4.1 方案

  • Few shot: 通过寻找与输入code相似的样本作为few shot例子,具体是BM25 IR 算法从训练集中选择相关的小样本样本。

  • Automatic Semantic Augmentation of Prompts (A𝑆𝐴𝑃):

43cba100467e014e24c9aa4c8363a270.png

主要增加

  • repo info:仓库的名字、文件的路径以及方法名字:如“tony19/logback−android”、“apache/parquet−mr”、“ngageoint/geo−package−android” 都将函数连接到特定领域(如android、apache、地理位置 ),可以增强对要总结的目标代码的理解

  • 标记标识符:标识符在代码中扮演着不同的角色。局部变量、函数名称、参数、全局变量等在它们发生的方法的功能中起着不同的作用,使用 tree-sitter 遍历函数的 AST 并收集标识符及其角色

  • DataFlow:通过tree-sitter得到

beeea73195a8df029167142f9a3bd1cd.png

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

fc0a87f6b6065c65e86a3854b02f2dc4.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值