使用GitHub Action和GPT3的Python代码的轻松文档
#python #githubactions #gpt3 #githubhack23

我建造的

我构建了 github动作 自动化使用 docstrings 使用 gpt-3 docstrings的过程>。所有.py文件和函数的工作流循环在其中每个文件和函数中,将功能代码发送到GPT-3 API进行分析,并插入该函数的建议DOCSTRING,如果该功能还没有一个。

此解决方案简化了记录Python代码的过程,并通过自动化将Docstring的任务自动化到功能中来节省开发人员的时间和精力。通过使用GitHub Action和GPT-3,我的解决方案可以帮助开发人员专注于工作的其他方面,同时维护高质量的代码文档。

类别提交:

维护者必须haves

应用链接

github.com/dhanushreddy291/docstring-generator

屏幕截图

An Image showing the demo of Github Action

Another Image showing the demo of Github Action

描述

我的项目是一个github操作工作流程,可自动使用GPT-3向Python函数添加Docstring的过程。该解决方案旨在通过自动生成没有一个功能的功能来简化记录Python代码的过程。

每当将更改推向存储库时,就会触发工作流程,并且它可以在所有.py文件上循环以查找无需DOCSTRING的函数。对于每个此类功能,代码将发送到GPT-3 API进行分析并建议相应的DocString。在工作流程期间,具有DOCSTRING的功能将被忽略。最后,修改后的代码将自动投入到github repo。

通过自动化将Docstring添加到Python功能的任务,我的项目可以节省开发人员的时间和精力,使他们可以专注于工作的其他方面。该解决方案还有助于维护高质量的代码文档,这对于任何软件项目的长期可维护性和可伸缩性至关重要。

当然,我只是用GitHub Action和GPT3刮擦表面。可以使用GPT4-32K令牌模型API甚至通过分析代码来构建完整的Markdown驱动文档。目前,我的工作流仅适用于Python,但可以轻松扩展到其他语言。

链接到源代码

github.com/dhanushreddy291/docstring-generator

允许许可证

什么

背景(是什么让您决定构建这个特定的应用程序?是什么启发了您?)

作为软件开发人员,我经常发现编写代码文档的过程很耗时。我知道必须有一种更好的方法来记录不需要手动努力的代码,并且可以产生一致且可靠的结果。

那是我遇到GPT-3(由OpenAI开发的强大语言模型)的GPT-3,该模型已经接受了大量文本和代码数据的培训,可以产生对自然语言输入的人类般的响应。我意识到,可以利用将Docstring添加到Python函数的过程。因为为什么不呢?如果使用 github copilot 用于编写46% of code,那么为什么不对代码文档进行相同的操作。

这就是为什么我决定构建使用GPT-3自动生成Docstring的GitHub操作工作流程的原因。我的目标是创建一个可以节省开发人员时间和精力的解决方案,同时也提高了代码文档的质量。

总的来说,我的灵感来自使用GPT3自动执行传统上手动完成的任务的想法。我相信我的项目有可能改变开发人员处理代码文档的方式,从而使其比以往任何时候都更容易,更快,更可靠。一旦我们使用更好的LLM,例如GPT4及以后。

,文档将不断改进。

我是如何构建它的(您是如何利用GitHub Action或Github代码?

对于此项目,我利用GitHub操作来自动化在存储库中python文件中添加DocString的过程。工作流程在推送事件上触发到存储库的主分支。

它具有以下步骤:

  • 查看存储库步骤用于检查最新版本的存储库。
  • 设置Python并安装依赖项步骤用于设置使用3.10版本的Python环境并安装所需的依赖项。
  • run add_docstring脚本 spep用于执行add_docstring.py脚本,并带有需要更新文件的路径。
  • 检查更改步骤用于检查对存储库的任何更改。如果有更改,它将将输出has_changes设置为true。
  • 提交和推动更改步骤用于提交并将更改推回主要分支。

add_docstring.py脚本使用OpenAI GPT-3语言模型来生成用于存储库中Python功能的DocString。该脚本还负责使用黑色和自动片库格式化Python文件。

在此项目中,我学会了如何使用github动作并将其集成到我的工作流程中。我还学会了如何使用 Redbaron 库来解析和操纵Python代码。

我确实承认我面临一些挑战。主要问题是与OpenAI API合作。为了避免限制费率,我不得不在每个请求后添加20秒的时间延迟(因为免费试用帐户的硬限额为3 req/min)。这是确保API不会阻止请求而导致工作流失败的必要条件。

另一个挑战是将脚本与github动作集成在一起。我必须学习如何创建工作流文件并配置必要的设置,以确保脚本在将更改推到主分支时会自动运行。我还必须调试与再次提交回购许可有关的一些问题。

总的来说,该项目是一次很棒的学习经验,它帮助我提高了使用GitHub Action的API和自动化任务的技能。

其他资源/信息

您可以找到使用here

的整个源代码