揭示代码演变:在GitHub拉取请求提交中使用人工智能驱动解释
介绍
在软件开发领域中,理解代码的修改及其级联影响是进行细致代码分析的关键因素。然而,在进行代码同行审查时,要理解代码中复杂的变动可能是一项艰巨的任务,尤其是当处理不熟悉的代码库时。
在本文中,我们深入探讨了利用ChatGPT的创新潜力,以便为开发者通过拉取请求引入的代码更改制定解释性见解。此外,我们还探讨了将GenAI(ChatGPT)整合到DevOps工具和方法论的优点。
集成和使用案例:
让我们回顾一种特定的用例,以了解如何应用这个解决方案。
考虑以下情景:一个软件开发团队正在进行一个大规模的代码重构项目。该项目涉及将一个庞大的应用程序重构为微服务架构,以提高可扩展性和可维护性。随着项目的进展,会创建多个拉取请求来实现重构的各个方面。
在这个背景下,理解每个拉取请求中所做的复杂更改可能会令人生畏。评审人员需要理解这些更改对整体重构工作的贡献,并确保各个微服务之间的无缝交互。对代码差异进行手动检查和详细审查拉取请求描述可能无法立即和全面地理解。
以下是ChatGPT和GitHub Actions集成的有价值之处。通过使用ChatGPT自动生成解释性评论,团队可以提供每个拉取请求中所做变更的简短摘要。评审者可以快速了解变更的目的、对整个项目的影响以及可能带来的挑战。
实施步骤
当涉及将ChatGPT与GitHub Actions集成以自动化拉取请求说明时,该过程涉及几个关键步骤。
GitHub操作代码可以在https://github.com/PublicisSapient/devops-chatgpt-comment-pull-request上使用和协作。它包括了一个写得很好的自述文件,介绍了功能、API流程UML图、使用方法等等。
下面的图表提供了它的工作方式的高级视图。
通过遵循以下步骤,您可以无缝地将这个强大的解决方案纳入您的DevOps工作流程中:
- OpenAI API 密钥和访问 OpenAI 门户
要与ChatGPT模型互动,您将需要一个OpenAI API密钥。OpenAI API密钥是通过他们的应用程序编程接口(API)访问和利用OpenAI服务和资源的关键组成部分。API密钥作为身份验证和授权的一种形式,使开发人员和用户能够安全高效地与OpenAI的模型和工具进行交互。
您可以访问OpenAI网站https://platform.openai.com,注册OpenAI API并获取API密钥。
访问OpenAI门户网站,您可以管理您的API使用情况,创建API令牌和查看计费计划。
- API令牌和计费计划
在OpenAI门户网站(https://platform.openai.com/account/api-keys),您可以创建API令牌以对OpenAI API的请求进行身份验证。
API令牌提供对ChatGPT模型的安全访问。
此外,您需要选择与您的使用要求和预算相符的适当计费方案来使用API。请使用https://openai.com/pricing了解价格。
- 将API密钥添加到GitHub Secrets。
在GitHub中,添加一个秘密的OPENAI_API_KEY来保存从OpenAI门户生成的API密钥。
一旦满足了上述的先决条件,必须按照以下步骤来设置该动作:
- 设置 GitHub Actions:创建一个在拉取请求时触发的 GitHub Action 工作流。配置工作流以在拉取请求创建或手动触发时运行。
以下是使用自定义 GitHub action(https://github.com/PublicisSapient/devops-chatgpt-comment-pull-request)的 GitHub workflow 的示例代码。将以下代码示例包含在您的 GitHub 存储库中并进行轻微修改应该可以正常运行。如果需要进一步自定义,请参考 GitHub Action README 文档中提供的输入选项。
on:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
chatgptComment:
runs-on: ubuntu-latest
name: Add Comment
steps:
- name: Add Comment
uses: PublicisSapient/devops-chatgpt-comment-pull-request@main
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
open-api-key: ${{ secrets.CHATGPT_API_KEY }}
max-prompt-tokens: '10000'
ignore-paths: '.github/*, src/, package*.json, .env*'
model: 'gpt-3.5-turbo'
temperature: 1
max-response-tokens: 512
top_p: 1
frequency-penalty: 0
presence-penalty: 1
- 获取Pull请求的详细信息:通过GitHub API提取Pull请求标题、文件更改和基础/比较提交ID等信息。
- 生成 ChatGPT 提示:利用收集到的信息创建一个 ChatGPT 提示,概括拉取请求的上下文和更改。
- 使用ChatGPT API调用:使用ChatGPT API根据提示生成解释性文本。生成的文本提供了拉取请求中引入的更改的摘要。
- 在GitHub评论中创建:将生成的解释作为评论发布到拉取请求上。该评论有助于审阅者快速理解变更及其重要性。
以下是ChatGPT为某个更改创建的GitHub评论的快照:
使用生成型人工智能(在本例中为ChatGPT)在DevOps工具集和流程中的好处
将生成式人工智能(在本例中,考虑保留ChatGPT)集成到DevOps工具和流程(在本例中,用于GitHub工作流程)中,提供了几个优势:
增强协作:使用ChatGPT自动生成解释可以使开发人员和审阅人员高效地理解代码变更。这促进了更好的协作和更顺畅的代码审查流程。
时间节省:在处理复杂的修改时,手动审核代码变动可能非常耗时。ChatGPT生成的解释提供了简洁的摘要,在代码审核过程中节省了宝贵的时间。
提高准确性:ChatGPT生成的解释能够详细说明代码变动对功能的影响。这种准确性有助于确保所有相关方对所做的修改保持一致意见。
无缝集成: GitHub Actions 工作流与 OpenAI API 实现无缝集成,实现自动生成解释,无需手动干预。该集成优化代码审核流程,并促进开发者之间的高效协作。
未来准备:随着人工智能和自动化在DevOps中变得更加重要,引入基于人工智能的解释可以建立一个具有前瞻性的基础。这将为您的团队应对不断发展的科技和流程自动化提供准备。
结论:
理解代码变更对于有效的合作和代码审查至关重要。通过利用生成式人工智能,即ChatGPT,并将其整合到GitHub工作流中,我们可以自动生成代码修改的解释。通过发挥人工智能的力量,开发人员和审查人员可以更深入地理解代码变更,从而实现更高效和更有效的软件开发。
这个项目的合作伙伴是:
- 亚伦·特雷德韦尔 - 高级架构师
- 马尤雷什巴尔德瓦杰 - 基础设施专家
- Himanshu Mishra — 技术总监