基于GPT的代码review助手开发与应用 李明宇高级工程师/“编程老师傅” 中国科学院计算技术研究所处理器芯片国家重点实验 www.top100summit.com 讲师简介 请插入您的照片 李明宇“编程老师傅” 前深信服科技集团云计算首席专家 “ 中国科学院计算技术研究所高级工程师,开源项目活跃开发者,20余年编程与软件开发经验,10余年云端系统研发与产业化工作经历。历任国家重点实验室研究组负责人,上市公司事业群技术总监、首席技术专家。 李老师在理论研究和产业实践均有丰富的经验,为多家知名企业和单位落地云原生和数字化转型项目。荣获中国软件协会“优秀CTO”等多项荣誉,兼任中国新一代IT产业联盟分委会秘书长、全国高校人工智能与大数据创新联盟专家委员、北京开源创新委员会委员。 ” www.top100summit.com 目录 •背景与痛点——让人又爱又恨的CodeReview环节 •Code-Chat-Reviewer开发历程与实现原理 •应用效果与优缺点 •最近一个月的新进展 •总结与展望 www.top100summit.com RHINO 背景与痛点 www.top100summit.com 目前的PRReview生成效果 www.top100summit.com 目前的PRReview生成效果 www.top100summit.com 目前的PRReview生成效果 www.top100summit.com 目前的PRReview生成效果 目前的PRReview生成效果 对比:过去(4月份) www.top100summit.com www.top100summit.com 背景与痛点——让人又爱又恨的CodeReview环节 Pull/MergeRequestReview 众所周知的重要性: 质量!知识共享、持续维护…… www.top100summit.com 背景与痛点——让人又爱又恨的CodeReview环节ReviewerX2 Pull/MergeRequestReview 众所周知的重要性: 质量!知识共享、持续维护…… 但是,没有人喜欢PRReview: •成本、短期效率 成长 •心理和社交压力 •核心成员的精力分配与持续 •…… www.top100summit.com 背景与痛点——让人又爱又恨的CodeReview环节LLM+ReviewerX1 Pull/MergeRequestReview 众所周知的重要性: 质量!知识共享、持续维护…… 但是,没有人喜欢PRReview: •成本、短期效率 •心理和社交压力 •核心成员的精力分配与持续成长 •…… 另一个问题: 为什么要在Pull/MergeRequestReview环节用LLM? 为什么不在其他环节对代码审查中解决?比如VSCodeCopilot Review对象不同,上下文、时间点不同 www.top100summit.com RHINO Code-Chat-Review开发历程与实现原理 Code-Chat-Review开发历程与实现原理 v0.1gpt-3.5 gpt-4APIwaitlist... 1.gitpush Git 7.Comment/Approve HumanReviewerX1 3.GETCodeChanges 效果与问题: gpt-3.5效果不理想,挑出来的问题比较琐碎 大家很期待gpt-4API的开放 6.Revise 5.POSTReviewComments4. Prompts/Messages www.top100summit.com Contributor 2.Webhook Review-Bot GeneratedReviewComments GPT Code-Chat-Review开发历程与实现原理 v0.1gpt-3.5 gpt-4APIwaitlist... Git7.Comment/Approve效果与问题: HumanReviewerX1gpt-3.5效果不理想,挑出来的问 题比较琐碎 1.gitpush大家很期待gpt-4API的开放 3.GETCodeChanges 6.Revise5.POSTReviewComments4. Prompts/Messages 2.Webhook ContributorReview-BotRevGeneratedntsGPT iewComme www.top100summit.com messages=[ [ "role":"system","content": """ AsanAIassistantwithexpertiseinprogramming,yourprimarytaskistoreviewthepullrequestprovidedbytheuser. Whengeneratingyourreview,adheretothefollowingtemplate: **[Changes]**:Summarizethemainchangesmadeinthepullrequestinlessthan50words. **[Suggestions]**:Provideanysuggestionsorimprovementsforthecode.Focusoncodequality,logic,potentialbugsandperformanceproblems.Refrainfrommentioningdocument-relatedsuggestionssuchas"Isuggestaddingsomecomments",etc. **[Clarifications]**:(Optional)Iftherearepartsofthepullrequestthatareunclearorlacksufficientcontext,askforclarificationhere.Ifnot,thissectioncanbeomitted. **[Conclusion]**:Concludethereviewwithanoverallassessment. **[Other]**:(Optional)Ifthereareadditionalobservationsornotes,mentionthemhere.Ifnot,thissectioncanbeomitted. Theusermayalsoengageinfurtherdiscussionsaboutthereview.Itisnotnecessarytousethetemplatewhendiscussingwiththeuser. """, ], [ "role":"user", "content":f"Reviewthefollowingpullrequest.Thepatchesareinstandard`diff`format.Evaluatethepullrequestwithinthecontextofthereferencedissuesandfullcontentofthecodefile(s).\n[changes_str]\n", ], ] Code-Chat-Review开发历程与实现原理 v0.2gpt-4 promptengineering 1.gitpush Git 6.Revise 7.Comment/Approve HumanReviewerX1 3.GETCodeChanges 5.POSTReviewComments 效果与问题: 效果未达预期,能提出一些有用的建议,但是采用率不高: 1)看不懂或看懂了但改起来费劲; 2)设计原因…… 4. www.top100summit.com Contributor 2.Webhook Review-Bot Prompts/Messages GeneratedReviewComments GPT Code-Chat-Review开发历程与实现原理 v1-alphaDatabase 1.gitpush Git 7.Revise 8.Comment/Approve HumanReviewerX1 3.GETCodeChanges 5.POSTReviewComments Chat/Conversation 效果与问题: 引入Chat机制带来的效果不错但,Review结果不收敛,修改后 又提出新的意见,没完没了... 4. Contributor 2.Webhook 6.Chat/Conversation Review-Bot Prompts/Messages GeneratedReviewComments GPT www.top100summit.com MongoDB Code-Chat-Review开发历程与实现原理 v1-alphaDatabase 1.gitpush Git 8.Revise 9.Comment/Approve HumanReviewerX1 3.GETCodeChanges 5.POSTReviewComments Chat/Conversation 效果与问题: 引入Chat机制带来的效果不错但,Review结果不收敛,修改后 又提出新的意见,没完没了... 4. Contributor 2.Webhook 6.Chat/Conversation Review-Bot Prompts/Messages GeneratedReviewComments GPT www.top100summit.com MongoDB Code-Chat-Review开发历程与实现原理 v1-alphaDatabase 1.gitpush Git 8.Revise 9.Comment/Approve HumanReviewerX1 3.GETCodeChanges 5.POSTReviewComments Chat/Conversation 效果与问题: 引入Chat机制带来的效果不错但,Review结果不收敛,修改后 又提出新的意见,没完没了... 4. Contributor 2.Webhook 6.Chat/Conversation Review-Bot Prompts/Messages GeneratedReviewComments GPT www.top100summit.com MongoDB Code-Chat-Review开发历程与实现原理 v1-betaMoreContext 1.gitpush Git 9.Comment/Approve HumanReviewerX1 3.GETCodeChanges 效果与问题: 解决了Review结果收敛问题,上下文代码缺失导致误判(加入 哪些代码到review过程,一直是个 问题) 8.Revise 4.GETIssueDescription/PreviousComments 6.POSTReviewComments5. Contributor 2.Webhook 8.Chat/Conversation Review-Bot Prompts/Messages GeneratedReviewComments GPT www.top100summit.com MongoDB Code-Chat-Review开发历程与实现原理 v1.0FunctionCalling Git 10.Comment/Approve HumanReviewerX1 1.gitpush 3.GETCodeChanges 4.GETIssueDescription/PreviousComments 5.GETMoreContextCodelineswithFunct