尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

gpt_academic 自译解报告全解:LLM 两阶段源码剖析流程与项目文件结构图谱

gpt_academic 自译解报告全解:LLM 两阶段源码剖析流程与项目文件结构图谱 gpt_academic 自译解报告全解LLM 两阶段源码剖析流程与项目文件结构图谱【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academicgpt_academic 仓库中的docs/self_analysis.md是一份独特的文档它不是人工撰写的架构说明而是项目调用自身解析源代码插件让 ChatGPT 逐文件通读全部 48 个源文件后一键生成的自译解报告。阅读本文你将掌握该报告背后的两阶段分析流水线逐文件多线程剖析 分组迭代汇总的源码级实现并获得一张完整覆盖入口、插件、模型接入三层架构的项目文件结构图谱。一、什么是自译解报告自译解报告开篇即声明以下分析均由本项目调用 ChatGPT 一键生成。它的产生方式正是 gpt_academic 主打功能之一的解析项目源代码在网页界面输入一个项目路径或直接解析当前项目本身程序会把每个源文件的内容拼装成一条提示词分发给多个 LLM 请求线程逐文件生成概述再对所有概述做分组汇总最终产出一份包含逐文件概述 分组功能表格 一句话整体概括的 Markdown 报告。从报告的行文结构可以直接对应到流水线产物48 段## [n/48] 请对下面的程序文件做一个概述: 文件名章节对应第一步逐文件分析每段就是单个 LLM 请求的完整响应3 段## 用一张Markdown表格简要描述以下文件的功能章节分别覆盖 16 个文件对应第二步综合汇总中每 16 个文件为一组的分组表格输出每段表格末尾根据以上分析用一句话概括程序的整体功能的回答即汇总迭代的单句结论报告末尾的实现不同种类的聊天机器人可以根据输入进行文本生成就是最终收敛的一句话总结。值得注意的是报告中的文件名仍是旧版本时代的中文命名如crazy_functions\Latex全文润色.py而当前仓库已重构为英文名。下文在继承报告全部功能描述的同时会给出每个文件在当前仓库中的实际落位方便读者对照源码验证。二、文件结构图谱48 个文件的完整继承表原报告的核心内容就是三张功能表格。以下将其合并为一张完整地图并补充当前仓库落位一列标注已重构/已移除的条目均指当前仓库不再保留该原始文件。2.1 顶层运行文件10 个报告中的文件名当前仓库落位功能描述源自报告check_proxy.pycheck_proxy.py检查代理有效性及地理位置另含自动更新、模块预热colorful.pyshared_utils/colorful.py控制台打印彩色文字config.pyconfig.py配置和参数设置API key、代理、线程数、默认模型、超时等config_private.py用户本地私密配置不随仓库分发私人配置和参数设置API_KEY、USE_PROXY、proxies、DEFAULT_WORKER_NUM、Slack 凭据等core_functional.pycore_functional.py核心函数和参数设置基础功能区按钮的提示词与参数定义crazy_functional.pycrazy_functional.py高级功能插件集合按 Group 分类支持按钮/下拉菜单两种挂载方式main.pymain.pyChatbot 程序主入口提供学术翻译、文本处理与查询服务的界面装配multi_language.pymulti_language.py识别和翻译不同语言把本项目界面翻译成多种语言theme.pythemes/theme.py自定义 Gradio 应用主题颜色、字体、阴影可选看板娘toolbox.pytoolbox.py工具类库装饰器、文本处理、插件加载、异常检测、Markdown 转换、文件读写2.2 crazy_functions 功能插件层24 个报告中的文件名当前仓库落位功能描述源自报告crazy_functions_test.py已重构测试用例并入 tests/ 目录测试 crazy_functions 中的各种函数crazy_utils.pycrazy_functions/crazy_utils.py工具函数输入裁剪input_clipping、保持 UI 存活的多线程 GPT 请求Latex全文润色.pycrazy_functions/Latex_Project_Polish.py对整个 Latex 项目润色和纠错PaperFileGroup 类 长文本切分Latex全文翻译.py已重构至 crazy_functions/Latex_Function.py 等 Latex 相关模块对整个 Latex 项目进行英译中/中译英init.pycrazy_functions/__init__.py包初始化文件标识 crazy_functions 是包Arxiv_Downloader.pycrazy_functions/Arxiv_Downloader.py下载 arXiv 论文 PDF 并提取、翻译摘要代码重写为全英文_多线程.pycrazy_functions/SourceCode_Comment.py将 Python 源代码中的中文内容处理为英文多线程生成任务报告图片生成.pycrazy_functions/Image_Generate.py根据激励文本调用 GPT 图像模型生成图像Conversation_To_File.pycrazy_functions/Conversation_To_File.py对话记录写入 Markdown 文件支持预览、载入、删除Word_Summary.pycrazy_functions/Word_Summary.pyWord 文档摘要docx 用 python-docxdoc 用 pywin32Audio_Summary.pycrazy_functions/Audio_Summary.py音视频摘要split_audio_file 切片 Whisper 转写 GPT 概述Markdown_Translate.pycrazy_functions/Markdown_Translate.py指定目录下 Markdown 文件中英文互译多线程依赖 tiktokenPDF_Summary.pycrazy_functions/PDF_Summary.pyPDF 切割与摘要生成CatchException 异常处理装饰器PDF_Summarypdfminer.py当前仓库已移除基于 pdfminer BeautifulSoup 的 PDF 文本提取与摘要PDF_Translate.pycrazy_functions/PDF_Translate.py批量翻译 PDF 文档产出 md 与 html 结果文件PDF_QA.pycrazy_functions/PDF_QA.pyPDF 摘要 基于上下文关系的学术问答Program_Comment_Gen.pycrazy_functions/Program_Comment_Gen.py自动生成 Python 函数注释多线程结果以 Markdown 表格落盘Internet_GPT_Legacy.pycrazy_functions/Internet_GPT_Legacy.py爬取搜索引擎结果与网页文本交给 ChatGPT 综合作答SourceCode_Analyse_JupyterNotebook.pycrazy_functions/SourceCode_Analyse_JupyterNotebook.py解析 ipynbparseNotebook 拆分为代码块后多线程分析解析项目源代码.pycrazy_functions/SourceCode_Analyse.py对指定语言Python/C/Java/前端等项目源码逐文件分析并汇总Multi_LLM_Query.pycrazy_functions/Multi_LLM_Query.py同时问询多个大语言模型默认 ChatGPT 与 ChatGLMPaper_Abstract_Writer.pycrazy_functions/Paper_Abstract_Writer.py解析 tex 目录逐文件摘要后生成全文摘要Google_Scholar_Assistant_Legacy.pycrazy_functions/Google_Scholar_Assistant_Legacy.py从谷歌学术搜索页提取文献元数据高级功能函数模板.pycrazy_functions/高级功能函数模板.py插件开发模板清空历史防溢出、调用 GPT、UI 更新、Unsplash 图片2.3 request_llms 模型接入层14 个报告中的文件名当前仓库落位功能描述源自报告bridge_all.pyrequest_llms/bridge_all.py所有 LLM 的通用接口predict 与 predict_no_ui_long_connection含 lazyload tiktoken 与异常装饰器bridge_chatglm.pyrequest_llms/bridge_chatglm.pyChatGLM 对话GetGLMHandle 类单/多线程bridge_chatgpt.pyrequest_llms/bridge_chatgpt.pyGPT 对话predict、predict_no_ui、predict_no_ui_long_connection 三接口bridge_jittorllms_llama.pyrequest_llms/bridge_jittorllms_llama.pyJittorLLMs 加载 LLaMA 完成对话bridge_jittorllms_pangualpha.pyrequest_llms/bridge_jittorllms_pangualpha.pyJittorLLMs 盘古 Alpha多进程 多线程bridge_jittorllms_rwkv.pyrequest_llms/bridge_jittorllms_rwkv.pyJittorLLMs RWKV支持历史信息与参数调节bridge_moss.pyrequest_llms/bridge_moss.pyMoss 模型对话子进程 Pipe 通信GetGLMHandle 继承 Processbridge_newbing.py当前仓库已移除NewBing 聊天机器人对话bridge_newbingfree.pyrequest_llms/bridge_newbingfree.py基于 NewBing 会话 API 的文本生成含子进程 Workerbridge_stackclaude.pyrequest_llms/bridge_stackclaude.py基于 Slack API 与 Claude 交互API Client ClaudeHandlebridge_tgui.pyrequest_llms/bridge_tgui.py通过 WebSocket 与远程 LLM 通信edge_gpt.py当前仓库已移除调用 Bing chatbot APIwebsocketedge_gpt_free.pyrequest_llms/edge_gpt_free.py会话 APIaiohttp httpxConversation 类test_llms.pytests/test_llms.py对 LLM 桥接模块进行单元测试三层结构一目了然顶层运行文件负责界面装配与配置crazy_functions是把学术翻译、文档摘要、代码解析等场景封装成插件的功能层request_llms则把各家模型统一到predict/predict_no_ui_long_connection双接口之下。报告结尾的整体概括——提供了一系列处理文本、文件和代码的功能使用了各类语言模型、多线程、网络请求和数据解析技术——正是这三层分工的浓缩。三、自译解流水线的源码级剖析SourceCode_Analyse.py 中的核心函数解析源代码新crazy_functions/SourceCode_Analyse.py#L6-L106就是这份报告的生产线可以拆成两步。3.1 第一步逐文件多线程剖析对清单中的每个文件程序读取全文并拼装出报告里可见的标准提示词crazy_functions/SourceCode_Analyse.py#L20-L31prefix 接下来请你逐文件分析下面的工程 if index0 else i_say prefix f请对下面的程序文件做一个概述文件名是{os.path.relpath(fp, project_folder)}文件代码是 {file_content} i_say_show_user prefix f[{index1}/{len(file_manifest)}] 请对下面的程序文件做一个概述: {fp} sys_prompt_array.append(你是一个程序架构分析师正在分析一个源代码项目。你的回答必须简单明了。)对照自译解报告可以发现两处精确吻合每个## [n/48]标题正是inputs_show_user_array中的i_say_show_user而各段概述正文则是真实输入含完整代码的模型响应。请求通过request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency以线程池并发发出crazy_functions/crazy_utils.py#L187-L234线程数默认取自 config.py 的DEFAULT_WORKER_NUM默认 8并且有硬性保护源文件超过 512 个会直接断言失败提示用户缩减输入或改为分批处理crazy_functions/SourceCode_Analyse.py#L18。3.2 第二步分组迭代汇总全部文件解析完成后进入汇总阶段crazy_functions/SourceCode_Analyse.py#L52-L99分组batchsize 16即每次取 16 个文件做一组汇总——恰好对应报告中三次简要描述以下文件的功能表格161616 覆盖 48 个文件省 Token 技巧每组的请求中逐文件阶段的完整回答被替换为相对路径文件名this_iteration_gpt_response_collection[index] file_rel_path把请对下面的程序文件做一个概述压缩为文件名xxx以控制输入长度迭代收敛上一组的单句总结last_iteration_result会写入下一组的 system prompt已知某些代码的局部作用是: … 请继续分析其他源代码使各组表格末尾那句整体功能概括能够逐轮累积信息Token 护栏汇总输入先经input_clipping裁剪到 2560 token 以内crazy_functions/crazy_utils.py#L7-L66。该函数用 gpt-3.5-turbo 的 tiktoken 编码器统计 token当输入本身不超过限额一半时只裁剪历史否则输入与历史一起按最大块每次削减 1/16的颗粒度循环截断直到总长达标。3.3 附赠品Mermaid 项目示意图汇总阶段还会调用make_diagramcrazy_functions/SourceCode_Analyse.py#L108-L110把文件名 文件概述的配对送入build_file_tree_mermaid_diagramcrazy_functions/diagram_fns/file_tree.py再让模型基于该树状图用一句话概括这些文件的整体功能。这就是报告结尾那句总结的直接上游。四、关键支撑模块的实现佐证4.1 入口装配main.pymain.py 的main()按顺序完成校验 Gradio 版本 → 读取配置get_conf批量取proxies、LLM_MODEL、AVAIL_LLM_MODELS等main.py#L50-L54→ 调用check_proxy输出代理所在地 → 用adjust_theme装配主题 → 从 core_functional.py 取基础功能区、从 crazy_functional.py 取函数插件区 → 注册提交/基础功能按钮/插件按钮/文件上传等事件 → 启动三个后台线程执行自动更新、模块预热与打开浏览器main.py#L335-L351最后经start_app由 FastAPI 托管 Gradio 应用。4.2 基础功能区core_functional.pycore_functional.py 的get_core_functions()返回一个字典每个按钮定义Prefix/Suffix/Color/Visible/AutoClearHistory/PreProcess等字段。报告对它的概述——学术翻译润色任务的说明和相关参数——在源码中一一对应如学术语料润色的中英双语提示词通过build_gpt_academic_masked_string_langbased按输入语言动态选择查找语法错误则挂了PreProcess: clear_line_break预处理钩子core_functional.py#L71-L89。处理入口handle_core_functionality在每次触发时importlib.reload(core_functional)实现提示词热更新core_functional.py#L150-L171与报告修改后不需要重启程序即可生效的描述一致。4.3 插件集合crazy_functional.py 与 HotReloadcrazy_functional.py 的get_crazy_functions()把各插件以Group对话/编程/学术/智能体、AsButton按钮还是下拉菜单、Color、Function: HotReload(函数)的形式注册新一代插件则额外注册Class如 Arxiv论文翻译 同时注册了旧 Function 与Arxiv_Localize类crazy_functional.py#L115-L122。HotReload装饰器使修改插件代码后无需重启即可生效这正是报告中crazy_functional.py 包含函数插件的定义和调用部分支持热更新一句的出处。4.4 模型接入层bridge_all.pyrequest_llms/bridge_all.py 的文件头 docstringrequest_llms/bridge_all.py#L2-L10直接解释了报告对predict与predict_no_ui_long_connection两个函数的区分前者面向正常对话、具备完备交互、不可多线程后者面向函数插件、支持多线程调用。该文件还集中管理各厂商 endpoint 与API_URL_REDIRECT重定向表request_llms/bridge_all.py#L72-L106并用LazyloadTiktoken懒加载 tokenizerrequest_llms/bridge_all.py#L51-L70——即报告提到的 lazyloadTiktoken 类。本地模型桥接如 bridge_moss.py 的子进程 Pipe 方案则印证了报告中关于 Moss、JittorLLMs 等多进程/多线程的描述。4.5 配置体系config.py 与 config_private.pyconfig.py 的文件头注释给出了配置读取优先级环境变量 config_private.py config.py。报告中 config_private.py 一节列出的变量API_KEY、USE_PROXY、proxies、DEFAULT_WORKER_NUM、SLACK_CLAUDE_BOT_ID、SLACK_CLAUDE_USER_TOKEN在当前仓库中均可在 config.py 中找到对应项私密文件只是把这些值搬到本地、避免提交。报告说影响程序行为和性能的设置最典型的两个是DEFAULT_WORKER_NUM多线程插件并发数config.py#L85-L87与API_URL_REDIRECTURL 重定向config.py#L79-L82文件尾部还附有一棵完整的配置关联关系示意图config.py#L379-L481把每家模型对应的密钥配置项梳理成树状结构可作为模型接入的索引阅读。4.6 其他辅助文件check_proxy.py除报告提到的check_proxy请求 ipapi.co失败时回退到 edns.ip-api.com 备用源check_proxy.py#L3-L63外还包括backup_and_download/patch_and_restart/auto_update组成的一键更新协议以及warm_up_modules对 tiktoken 与 nltk 的预热check_proxy.py#L168-L233。报告称其导入 requests/shutil/os源码证实属实且if __name__ __main__分支设置os.environ[no_proxy] *防止代理污染本机请求check_proxy.py#L294-L299。shared_utils/colorful.py报告对它的概述非常准确——print红~print亮靛共 12 个打印函数使用 ANSI Escape Code\033[0;31m等实现彩色输出另有同名的sprint*返回字符串与log*写入 loguru系列非 Linux 平台会先colorama.init()shared_utils/colorful.py#L5-L9。multi_language.py报告列举的lru_file_cache、contains_chinese、split_list、map_to_json、TransPrompt等符号全部存在。其用法是修改LANG与TransPrompt后运行python multi_language.py翻译映射缓存在docs/translate_*.json当前仓库已带 translate_english.json、translate_japanese.json 等成果文件可反复运行以提高覆盖率multi_language.py#L39-L52。themes/theme.pyadjust_theme负责 Gradio 主题定制main.py还从它导入advanced_css、theme_declaration等main.py#L60-L62与报告自定义 gradio 应用程序主题……包括变量 advanced_css吻合。五、如何复现这份自译解在当前仓库的网页界面中复现该报告操作路径为启动python main.py依赖以 requirements.txt 为准主入口会校验 Gradio 版本在输入区填入目标项目路径选择函数插件区下拉菜单中的解析整个 Python 项目或对应 C、Java、前端、Golang、Rust、Lua、CSharp 等变体全部注册于 crazy_functional.py针对本仓库解析项目本身会收集./与./子目录下的.py文件crazy_functions/SourceCode_Analyse.py#L112-L123程序按 3.1 的提示词逐文件并发请求再按 3.2 每 16 个文件一组产出 Markdown 表格与单句总结最终把完整对话历史写入gpt_log目录并提供下载write_history_to_filepromote_file_to_downloadzone并发行为受 config.py 中DEFAULT_WORKER_NUM控制注意若选择的本地模型如 chatglm不支持多线程can_multi_process会把线程数强制降为 1crazy_functions/crazy_utils.py#L166-L185。六、报告与当前代码的差异边界需要明确三点事实边界报告由 LLM 生成作者亦声明如果有不准确的地方全怪 GPT本文已对其中关键论断colorful 的 ANSI 实现、core_functional 的参数结构、bridge_all 的双接口等逐一比对源码核实。报告基于旧版本代码其中 48 个文件有相当比例已完成英文重命名如解析项目源代码.py→ SourceCode_Analyse.py、Latex全文润色.py→ Latex_Project_Polish.py、图片生成.py→ Image_Generate.py映射依据是 crazy_functional.py#L6-L54 的 import 语句。少数文件在当前仓库中已不存在bridge_newbing.py、edge_gpt.py、PDF_Summarypdfminer.py与crazy_functions_test.py测试职责并入 tests/ 目录。阅读报告时应以当前仓库实际文件为准。总体而言这份自译解报告的价值在于它同时是结果与样本结果是一张可直接查阅的项目文件功能地图样本则完整展示了 gpt_academic 用逐文件多线程剖析 分组迭代汇总 Token 裁剪这套流水线理解一个陌生代码库的完整机制——读懂 crazy_functions/SourceCode_Analyse.py 与 crazy_functions/crazy_utils.py 这两个文件就理解了这份报告是如何被自译解出来的。【免费下载链接】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),仅供参考
返回列表