GPT4Readability — 再也不用写 README 了

GPT4Readability - No need to write README anymore

一个Python软件包,用于优化和记录您的代码库

作者生成的图像

在复杂的Python代码库中导航可能是一项具有挑战性的任务,尤其是当项目缺乏足够的文档时。这在程序员的生活中经常发生。幸运的是,由于最近在NLP和深度学习方面的突破,有一个旨在帮助的工具: GPT4Readability

GitHub – loevlie/GPT4Readability:一个旨在自动生成README.md的强大工具…

一个旨在自动生成README.md文件并使用LLMs提供代码改进建议的强大工具- GitHub…

github.com

GPT4Readability:您的AI驱动编码助手

GPT4Readability是一个强大的软件包,利用大型语言模型(LLMs)和向量数据库来生成README.md文件,并为您的Python代码库提供代码改进建议。就像有一个个人助理,不仅了解和记录您的代码,还帮助您使其更好。

但是为什么我不能只使用ChatGPT呢?

ChatGPT是一个强大的工具。然而,在处理大量文本或代码时,它存在一些限制。您一次只能输入一定量的文本或代码到ChatGPT中,这在处理大型代码库时可能会受到限制。

相比之下,GPT4Readability旨在处理更大量的代码。虽然它可能仍然难以处理非常大的代码库,但对于大多数正常大小的代码库,它可以轻松应对。这意味着只需指向正确的文件夹,它就可以解析您的整个项目,分析完整的上下文,并生成全面的README或提供详细的代码改进建议。这是ChatGPT无法实现的

开始使用GPT4Readability

首先,我将向您介绍设置过程。首先,您需要安装该软件包:

pip install GPT4Readability==0.0.3

接下来,您需要在OpenAI上创建一个帐户。这是因为GPT4Readability使用OpenAI API访问GPT-3.5和GPT-4。最终的希望是还将整合来自HuggingFace的开源模型(请关注GitHub存储库以获取更新)。一旦您在OpenAI平台上创建了帐户,继续添加付款方式并生成API密钥。

现在,您需要设置一个名为OPENAI_API_KEY的环境变量,值为您新生成的API密钥。这允许GPT4Readability与OpenAI API进行身份验证。如果您不这样做,在运行GPT4Readability时,您将被提示添加密钥。

export OPEN_API_KEY="YOUR KEY"

通过API使用OpenAI的GPT-3和GPT-4 LLMs并不昂贵。这个工具的整个开发成本只需1.50美元,与用户支付的每月20美元的ChatGPT相比,这似乎相当便宜!但是,您始终可以在OpenAI网站上查看您的使用情况,以确保没有超支。

介绍您的个人AI文档助手

现在,您已经安装了GPT4Readability并生成了OpenAI API密钥,您可以访问CLI。本文重点介绍CLI,但您也可以尝试HuggingFace空间中的无代码Web应用程序:https://huggingface.co/spaces/JohanDL/GPT4Readability。

假设您有一个需要README的Python项目,但您甚至不记得代码应该做什么。不要花费几个小时来尝试弄清楚代码库中的连接,让GPT4Readability来处理繁重的工作:

gpt4readability /path/to/your/project --function readme --output_readme MyAwesomeREADME.md --model gpt-3.5-turbo
gif generated by author

只需将/path/to/your/project替换为您的Python项目的根目录。GPT4Readability将使用OpenAI的”gpt-3.5-turbo”模型生成一个名为MyAwesomeREADME.md的全面README.md文件。目前,您可以在GPT4Readability中使用两个可用的模型:

  1. gpt-3.5-turbo
  2. gpt-4

代码改进:一个适用于所有开发者的学习工具

GPT4Readability不仅适用于缺乏应有文档的代码库的更新,而且还是一种令人难以置信的学习工具,适用于各个级别的开发者。要生成关于代码库中函数的建议,请使用下面示例中显示的suggestions工具:

gpt4readability /path/to/your/project --function suggestions --output_suggestions CodeImprovements.md --model gpt-3.5-turbo

在我的第一个Python项目上运行GPT4Readability的示例建议:

原始函数:

def Get_props(file):    """ This function retreives the information from the property cell of the notebook"""    no_prop = True    nb = nbformat.read(file,as_version=4)    for i in nb['cells']:        if i['cell_type'] == 'code':            if i['source'].startswith('%%properties'):                Metal_A = i['source'].split('\n')[1].split()[-1]                Metal_B = i['source'].split('\n')[2].split()[-1]                Max_H = float(i['source'].split('\n')[3].split()[-1])                result = {'Metal_A':Metal_A,'Metal_B':Metal_B,'Max_H':Max_H}                no_prop = False    if no_prop:        result = None        return result

建议:

def Get_props(file):    """ This function retrieves the information from the property cell of the notebook"""    nb = nbformat.read(file, as_version=4)    for i in nb['cells']:        if i['cell_type'] == 'code' and i['source'].startswith('%%properties'):            Metal_A, Metal_B, Max_H = i['source'].split('\n')[1:4]            result = {'Metal_A': Metal_A.split()[-1], 'Metal_B': Metal_B.split()[-1], 'Max_H': float(Max_H.split()[-1])}            return result    return None

解释:

  1. 删除了不必要的变量no_prop及其相关标志。相反,如果未找到属性,我们可以直接返回None
  2. Metal_AMetal_BMax_H的赋值语句合并为一行,以提高可读性。
  3. 在循环后删除了no_prop检查,因为如果未找到属性,我们可以直接返回None
  4. 通过直接将值分配给键来简化字典的创建。

这些更改通过减少不必要的变量和简化逻辑来提高代码的可读性。对性能或空间复杂度没有明显影响。

只需将/path/to/your/project替换为您的Python项目的根目录。GPT4Readability将分析您的代码并生成一个名为CodeImprovements.md的文件,其中包含改进的建议。建议的格式始终相同:

  1. 文件路径
  2. 函数名
  3. 原始函数
  4. 建议修改
  5. 为什么建议修改的解释

向建议的代码调整添加解释非常重要,因为它可以增加透明度,甚至是一个学习机会。通过审查这些建议,你不仅可以改进你的代码,还可以作为开发者不断提升。

总结

GPT4Readability 是一个非常有用的工具,可以帮助你理解和改进你的 Python 项目!

如果 GPT4Readability 节省了你的时间或者你有任何问题,请随时与我联系(你可以使用下面的任何链接)。另外,请考虑给 GitHub 仓库点个 star!如果你发现了 bug 或者有任何改进 GPT4Readability 的建议,请毫不犹豫地在 GitHub Issues 页面上提出。

与我联系!

我是一名有抱负的深度学习研究员,目前在匹兹堡的 KEF Robotics 担任计算机视觉工程师!与我联系,随时欢迎和我交流任何与机器学习相关的事情!

  • 在 VoAGI 上关注我
  • Twitter
  • LinkedIn
  • GitHub
  • 请我喝杯咖啡?