GPT Academic 怎么给整个 Python 项目自动生成 docstring 注释?
【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic
如果你接手了一个缺少文档注释的 Python 项目,或者开发周期内一直顾不上补 docstring,GPT Academic 的注释Python项目插件可以自动完成这项工作:它递归扫描项目中的所有.py文件,通过两阶段处理(先为每个文件生成一句话概览,再逐文件深入分析)为函数和类生成规范的 docstring,并直接写回源文件,同时为每个文件生成左右并排的 HTML 对比页供你逐一审核。该功能当前仅支持 Python 源代码(.py文件),要求已配置好可用的大模型 API,且模型需具备较强的代码理解能力(文档推荐 GPT-4 系列或qwen-max等模型)。
准备条件:配置模型 API 并启动应用
注释生成的质量与模型能力直接相关,简单的工具函数用 GPT-3.5 级别即可,涉及复杂业务逻辑或算法的代码建议使用 GPT-4 或同等级别的模型。
在项目根目录创建config_private.py(该文件已被加入.gitignore,不会被 Git 追踪),只写需要覆盖的配置项。配置优先级为:环境变量 >config_private.py>config.py。以 OpenAI API 为例:
API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxx" LLM_MODEL = "gpt-4o"使用通义千问则配置:
DASHSCOPE_API_KEY = "sk-xxxxxxxxxxxxxxxx" LLM_MODEL = "qwen-max"如需访问 OpenAI 官方 API,还要在配置中启用代理(USE_PROXY = True并填写proxies)。更多模型与密钥的配置方式见 配置详解 和 快速上手。
配置完成后在项目根目录启动应用:
python main.py启动成功后浏览器会自动打开界面(端口默认随机,如需固定可在配置中设置WEB_PORT = 7860)。
提供待注释的 Python 项目
有两种方式向系统提供项目文件:
方式一:上传压缩包。将项目打包成 ZIP 后拖拽到界面右侧的文件上传区域。打包时建议排除__pycache__、.venv、.git等目录,减少不必要的文件处理。上传完成后,系统会自动将文件路径填入输入框。
方式二:指定本地路径。如果项目在运行 GPT Academic 的同一台机器上,直接在输入框中输入项目的绝对路径即可,文档给出的示例是:
/home/user/projects/my_python_app(请替换为你的实际项目路径。)
!!! warning "该功能会直接修改源文件" 处理前的.py文件会被就地更新。请确保代码已有版本控制备份(如先做 git 提交),或先用项目的副本测试,确认效果后再应用到正式代码。
启动注释生成
在函数插件区找到编程分类,点击注释Python项目插件按钮。系统会弹出配置面板,用于选择注释的语言偏好:
| 选项 | 说明 |
|---|---|
| 英文 | 生成英文注释,适合开源项目或国际化团队 |
| 中文 | 生成中文注释,便于国内团队协作 |
选择完成后点击确认,系统即开始处理。
两阶段处理流程
第一阶段:项目概览。系统扫描所有.py文件,用多线程并行为每个文件生成一句话功能概述,让模型先建立对整个项目的宏观认知。对话区会显示进度,文档给出的示例是:
[1/10] 请用一句话对下面的程序文件做一个整体概述: src/main.py [2/10] 请用一句话对下面的程序文件做一个整体概述: src/utils.py ...(以上为文档示例输出,实际文件数量以你的项目为准。)
第二阶段:详细注释。概览完成后,系统对每个源文件逐个分析函数和类定义,理解其功能、参数和返回值,生成符合 Python docstring 规范的注释并插入代码适当位置。该阶段同样多线程处理,但需要深度代码分析,通常比第一阶段耗时更长。
查看与验证结果
处理完成后你会得到三类产出:
修改后的源文件。原始.py文件被就地更新。文档示例的注释格式如下(示例结果,实际注释由模型生成):
def calculate_distance(point_a, point_b): """ Calculate the Euclidean distance between two points. Args: point_a: A tuple representing the first point coordinates (x, y). point_b: A tuple representing the second point coordinates (x, y). Returns: float: The Euclidean distance between the two points. """ return math.sqrt((point_b[0] - point_a[0])**2 + (point_b[1] - point_a[1])**2)对比预览页面。每个处理过的文件都会生成一个.compare.html文件,左右并排展示原始代码和注释后的代码。处理过程中及完成后,对话区会列出这些预览链接,点击即可在浏览器中逐一审核修改内容——这一步建议人工复核,AI 注释可能存在对业务逻辑理解偏差的情况。
项目压缩包。全部完成后,系统会将整个项目(含注释后的代码和对比文件)打包成 ZIP,出现在界面右侧的下载区供下载保存。
常见问题与限制
- 提示"找不到任何python文件"。依次检查:输入的路径是否正确;项目目录中是否确实包含
.py文件;如果上传的是压缩包,是否为标准 ZIP 格式且结构正常。 - 部分函数没有 docstring。文档给出的可能原因:函数过于简单(如只有一行 pass),模型判断无需注释;函数内容被截断超出处理限制;或该文件在处理中遇到错误。可打开对比 HTML 检查具体情况。
- 生成的注释不够准确。可切换到更强的模型(如 GPT-4o)、确保代码本身命名和结构清晰、对关键模块单独处理以获得更多上下文。
- 处理速度慢。可尝试减少同时处理的文件数量、在配置文件中适当增加
DEFAULT_WORKER_NUM提高并发(默认值为 8,文档建议免费用户设为 3)、或换用响应更快的模型。 - 单次处理的文件数量上限为 512 个。大型项目建议按模块分批处理,既能避免超限,也能让模型对每个模块有更聚焦的理解。
- 语言支持。该功能当前仅针对 Python 项目优化,其他语言计划在后续版本加入;如果只是想为其他语言代码生成概述性注释,可用源码分析功能。
替代路径:不修改源文件的批量函数注释
如果你只想快速获得一份函数级文档素材,而不希望注释直接写进源代码,可选用同属编程分类的批量生成函数注释插件。它按文件顺序扫描.py和.cpp源文件,为每个文件生成一段功能概述和一份 Markdown 函数注释表格,输出到对话区并可保存为报告文件下载;它不修改原始代码、处理速度更快,但注释深度只到函数级概述,不含参数和返回值描述。两种功能的定位差异详见 批量函数注释生成 中的对比表。
完整的操作流程、界面截图和更多 FAQ 见 代码注释生成。
【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持Python和C++等项目剖析&自译解功能,PDF/LaTex论文翻译&总结功能,支持并行问询多种LLM模型,支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考