
GPT Academic 部署与自定义实战从三级配置体系到快捷按钮与函数插件扩展【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic本篇技术指南以 GPT Academicgpt_academic项目的法语版 READMEdocs/README.French.md为主线完整覆盖项目安装直接运行与 Docker 两种路径、config.py配置体系、快捷按钮core_functional定制与函数插件crazy_functions扩展四大主题。读完本文你将能够独立完成该项目的部署与模型接入并在源码层面理解“前缀/后缀按钮”“插件热重载”“环境变量覆写配置”等机制的实现原理。一、项目定位与核心能力GPT Academic 是一个面向 GPT/GLM 等大语言模型的实用化交互接口特别优化论文阅读、润色与写作体验。其法语版 README 开头的功能矩阵概括了项目的核心卖点这些功能在当前仓库中均有对应实现能力说明仓库对应实现多模型接入与并行问询支持 GPT 家族、文心一言、通义千问、星火、ChatGLM、MOSS 等可同时问询多个模型request_llms/bridge_all.py、crazy_functions/Multi_LLM_Query.py润色 / 翻译 / 代码解释学术润色、语法纠错、代码解释等基础功能按钮core_functional.py模块化函数插件支持自定义插件与热更新HotReloadcrazy_functional.pyPDF/LaTeX 论文翻译与总结提取 PDF 标题摘要、全文多线程翻译crazy_functions/PDF_Translate_Wrap.py、crazy_functions/Latex_Function.py项目剖析与自译解一键解析 Python/C/C/Java/Lua 等项目crazy_functions/SourceCode_Analyse.pyArxiv 助手输入 Arxiv URL 自动翻译摘要并下载 PDFcrazy_functions/Arxiv_Downloader.py虚空终端Void Terminal用自然语言调用项目内其他插件crazy_functions/Void_Terminal.py公式/图片/表格展示公式以 TeX 与渲染双形式展示支持代码高亮shared_utils/advanced_markdown_format.py需要说明的是README含法语版中的版本动态截至 3.70 系列而当前仓库 version 文件显示版本号为4.00新增特性为“优化文件对话使用逻辑、新增速读论文”。因此本文中的配置项、模型列表等以后文“源码实际内容”为准README 中出现的旧模型名如api2d-gpt-4仅为历史记载。法语版 README 还特别提醒本项目可用multi_language.py将整个项目翻译成任意语言实验性功能。该脚本读取 config.py 中的LLM_MODEL与API_KEY将界面文本通过 LLM 翻译后输出到multi-language/语言/目录翻译映射缓存于docs/translation_xxxx.json如 docs/translate_english.json。仓库中已有的法语版 README 正是这一机制的产物文档本身也注明“由 GPT 翻译请仔细核对”。二、安装与运行2.1 方法一直接运行Windows / Linux / macOS步骤 1获取项目代码git clone --depth1 https://gitcode.com/GitHub_Trending/gp/gpt_academic cd gpt_academic步骤 2配置 API_KEY在 config.py 中填写 API KEY。README 强调安装依赖时务必选择requirements.txt中指定的版本安装命令为pip install -r requirements.txt。步骤 3安装依赖# 方式一直接使用 pippython3.9 python -m pip install -r requirements.txt # 方式二使用 Anaconda conda create -n gptac_venv python3.11 conda activate gptac_venv python -m pip install -r requirements.txt从源码看版本锁定并非建议而是硬性要求requirements.txt 第 1 行直接以 wheel 链接锁定了gradio-3.32.15而 main.py 启动时会显式校验 Gradio 版本import gradio as gr if gr.__version__ not in [3.32.15]: raise ModuleNotFoundError(使用项目内置Gradio获取最优体验! 请运行 pip install -r requirements.txt ...)这与 README“已知问题”一节相互印证Gradio 官方存在较多兼容性问题必须使用项目锁定的版本。此外requirements.txt中还包含pymupdf、scipdf_parser、dashscope、llama-index-core等分别支撑 PDF 解析、通义千问接入与 RAG 向量库等插件能力。步骤 4运行python main.py运行后程序会在 main.py 中启动三个后台线程自动更新检查check_proxy.py中的auto_update、tiktoken 模块预热、自动打开浏览器最后经由 shared_utils/fastapi_server.py 的start_app启动服务。端口由WEB_PORT配置决定-1表示随机选取空闲端口。2.2 本地模型可选依赖若需要以清华 ChatGLM、复旦 MOSS、RWKV 等作为后端需要额外安装依赖前提熟悉 Python 与 PyTorch、机器配置充足# [可选步骤一] 支持清华 ChatGLM python -m pip install -r request_llms/requirements_chatglm.txt # [可选步骤二] 支持复旦 MOSS python -m pip install -r request_llms/requirements_moss.txt git clone --depth1 MOSS 仓库地址 request_llms/moss # 需在项目根目录执行README 还给出了两条排错提示若报“Call ChatGLM generated an error and cannot load the parameters”一是默认安装为 torch CPU 版用 CUDA 需重装 torchcuda二是显存不足时可把 request_llms/bridge_chatglm.py 中加载的THUDM/chatglm-6b改为THUDM/chatglm-6b-int4量化版本。当前仓库的本地模型相关配置还包括CHATGLM_LOCAL_MODEL_PATH、LOCAL_MODEL_DEVICEcpu/cuda、LOCAL_MODEL_QUANTFP16/INT4/INT8等见 config.py。2.3 方法二Docker 部署docker-compose.yml 提供了「方案零」到「方案五」共 6 个部署方案使用前只需保留其中一个方案并修改其environment环境变量方案镜像内容适用场景方案零gpt_academic_full_capability含 CUDA 与 LaTeX 的全能力大型镜像需要本地模型 LaTeX 全套能力网速慢/硬盘小不推荐方案一gpt_academic_nolocalllms仅在线大模型大多数人的推荐选择方案二gpt_academic_with_chatglmChatGLM Qwen MOSS 本地模型需要 NVIDIA Docker 运行时方案三gpt_academic_with_rwkvLLAMA 盘古 RWKVjittorllms 系列本地多语言模型实验方案四gpt_academic_with_latexChatGPT Latex仅需 LaTeX 插件功能方案五gpt_academic_audio_assistantChatGPT 语音助手需配合 docs/use_audio.md 配置端口暴露支持两种方法方案头部注释中有说明network_mode: host与宿主网络融合默认配置Linux 专用或ports: - 12345:12345端口映射需先删除network_mode: host且映射端口必须与WEB_PORT环境变量一致。需要显卡时启用runtime: nvidia与/dev/nvidia0设备映射并关注LOCAL_MODEL_DEVICEcuda。选定方案后执行docker-compose upDocker 方式下所有配置都通过environment注入这正是 README 强调“环境变量 config_private.py config.py”优先级在容器场景的实际体现修改docker-compose.yml等价于修改容器内环境变量。2.4 方法三其他部署方式Windows 一键脚本不熟悉 Python 环境的用户可使用 Release 页的一键运行脚本无本地模型版本由 oobabooga 贡献。子路径运行如需要在http://localhost/subpath下运行设置 config.py 的CUSTOM_PATH详见 docs/WithFastapi.md。第三方 API/Azure/文心/星火配置方法见 config.py 尾部注释中的“配置关联关系示意图”例如 Azure 需要AZURE_ENDPOINT/AZURE_API_KEY/AZURE_ENGINE三项配套。三、配置体系深度解析环境变量、config_private.py 与 config.pyREADME 给出的配置读取优先级为环境变量 config_private.py config.py。这一机制的完整实现位于 shared_utils/config_loader.py 的read_single_conf_with_lru_cache# 优先级1. 获取环境变量作为配置 default_ref getattr(importlib.import_module(config), arg) # 读取默认值作为类型转换参考 r read_env_variable(arg, default_ref) except: try: # 优先级2. 获取config_private中的配置 r getattr(importlib.import_module(config_private), arg) except: # 优先级3. 获取config中的配置 r getattr(importlib.import_module(config), arg)由此可以得出几个实操要点推荐做法在 config.py 旁边新建config_private.py只把修改过的配置项复制进去避免把密钥写进会被git pull覆盖的公共文件。程序启动时先检查config_private.py是否存在并用其覆写config.py中的同名配置。环境变量两种写法既可写USE_PROXYTrue也可写带前缀的GPT_ACADEMIC_USE_PROXYTrue见 shared_utils/config_loader.py 的注释示例。变量值会按config.py中默认值的类型自动转换bool只接受True/False字面量dict/list则按 Python 字面量解析如proxies写成{http: http://127.0.0.1:10085}。启动时的自检日志读取API_KEY时会通过 shared_utils/key_pattern_manager.py 的is_any_api_key校验密钥是否匹配已知格式OpenAI/Azure 等不匹配会在控制台红字告警读取proxies时会检查USE_PROXY是否为 True防止代理配置“单独起作用”。API_KEY 支持多密钥API_KEY openai-key1,openai-key2,azure-key3用英文逗号分隔用于多密钥负载均衡也可在界面输入区临时输入密钥并回车提交生效刷新网页后失效。3.1 关键配置项速查结合 config.py 当前实际内容常用配置项如下配置项默认值作用API_KEY占位符OpenAI/Azure 密钥支持逗号分隔多密钥LLM_MODELgpt-3.5-turbo-16k默认选中模型必须包含在AVAIL_LLM_MODELS中AVAIL_LLM_MODELSqwen-max/gpt-4o/glm-4/deepseek 等下拉菜单可选模型列表USE_PROXY/proxiesFalse/None代理开关与[协议]://[地址]:[端口]配置DEFAULT_WORKER_NUM8多线程插件中同时访问 OpenAI 的线程数免费用户建议 3绑卡用户可 16LAYOUTLEFT-RIGHT窗口布局TOP-DOWN为上下布局README 中“左右/上下”切换即此项THEME/AVAIL_THEMESDefault色彩主题支持Chuanhu-Small-and-Beautiful、High-Contrast等DARK_MODETrue暗色/亮色模式WEB_PORT-1服务端口-1 为随机端口TIMEOUT_SECONDS/MAX_RETRY30 / 2请求超时与重试次数MULTI_QUERY_LLM_MODELSgpt-3.5-turbochatglm3“询问多个模型”插件使用的模型分隔PLUGIN_HOT_RELOADFalse插件热加载开关NUM_CUSTOM_BASIC_BTN4界面中“自定义按钮”的最大数量LLM_MODEL必须存在于AVAIL_LLM_MODELS这一约束在 main.py 中有兜底处理若不在列表中会自动追加保证下拉菜单不报错。README 提到的LAYOUT选项在 main.py 中生效——TOP-DOWN布局下CHATBOT_HEIGHT会减半用于上下分栏。四、自定义快捷按钮学术快捷键README“Utilisation avancée”第一部分讲的是最轻量的定制方式编辑 core_functional.py 添加条目重启程序后新按钮即出现在“基础功能区”。文档给出的示例法语版原文Traduction avancée de langlais vers le français: { # 前缀加在你的输入之前例如描述你的要求翻译、解释代码、润色等 Prefix: Veuillez traduire le contenu suivant en français, puis expliquez chaque terme ..., # 后缀加在你的输入之后例如配合前缀用引号包住内容 Suffix: , },对照当前 core_functional.py 的实现每个按钮是一个字典支持以下键以“学术语料润色”按钮为例见 core_functional.py键必选说明Prefix是加在用户输入之前的提示词字符串Suffix是加在用户输入之后的字符串Color否按钮颜色primary/secondary/stop默认secondaryVisible否按钮是否显示默认TrueAutoClearHistory否触发时是否清空对话历史默认FalsePreProcess否输入文本的预处理函数如clear_line_break清除换行ModelOverride否强制该按钮使用指定模型覆盖全局LLM_MODEL按钮的触发链路在 main.py 中注册每个基础功能按钮的click事件都绑定ArgsGeneralWrapper(predict)并通过gr.State(k)把按钮名传入后端后端在 core_functional.py 的handle_core_functionality中拼接Prefix inputs Suffix。该函数每次都会importlib.reload(core_functional)所以 README 所说“若按钮已存在前缀/后缀可热修改而无需重启程序”在源码上是成立的——改提示词即时生效但新增按钮仍需重启因为按钮控件本身在main.py构建界面时静态生成。界面中另有NUM_CUSTOM_BASIC_BTN默认 4个“自定义按钮”占位其前缀/后缀保存在浏览器 cookie 中无需改代码即可通过界面增改这与 README“按钮读取core_functional.py动态生成、可添加自定义功能”的描述一致。五、自定义函数插件crazy_functions 扩展README“Utilisation avancée”第二部分介绍重量级扩展方式编写函数插件function plugin完成任意任务只要具备 Python 基础知识即可借助官方模板实现。插件的注册表位于 crazy_functional.pyfunction_plugins { 虚空终端: { Group: 对话|编程|学术|智能体, # 插件分组| 表示多分组 Color: stop, # 按钮颜色 AsButton: True, # False 时仅出现在“更多函数插件”下拉菜单 Info: 使用自然语言实现您的想法, # 按钮悬停提示 Function: HotReload(Void_Terminal), # 插件实现函数 }, ... }两个关键机制热更新HotReload所有插件函数都用 toolbox.py 的HotReload装饰器包裹。它会在每次调用时检查源文件修改时间并重载模块因此修改插件代码后无需重启服务即可生效——这正是 README 功能表中“插件热更新mise à jour à chaud”的实现。分组与下拉菜单main.py 根据Group与DEFAULT_FN_GROUPS默认[对话, 编程, 学术, 智能体]见 config.py决定按钮显隐AsButtonFalse的插件如“多媒体智能体”以及带高级参数AdvancedArgs的插件会出现在“更多函数插件”下拉菜单中通过隐藏的回调按钮routemain.py路由执行。新插件可直接参考仓库内的模板文件 crazy_functions/高级功能函数模板.py含高阶功能模板函数与Demo_Wrap两个范例在 crazy_functional.py 中导入并加入function_plugins字典即可完成扩展插件类形式的 UI 模板可参考 themes/gui_advanced_plugin_class.py。六、版本、已知问题与工程结构版本节奏README 记载了从 1.0基础功能到 3.70 的完整版本史其中与架构关系最大的节点包括2.0 引入模块化函数插件、2.2 支持插件热重载、3.0 支持 ChatGLM 等本地小模型、3.1 支持多模型并行问询与多密钥负载均衡、3.50 虚空终端。当前 version 文件显示版本 4.00“优化文件对话使用逻辑、新增速读论文”界面标题中的版本号由 check_proxy.py 的get_current_version读取该文件得到见 main.py。已知问题README 明确列出值得部署前知晓某些浏览器翻译插件会干扰本项目的 Web 界面运行建议禁用Gradio 官方存在兼容性问题务必按requirements.txt锁定版本安装如第 2.1 节所述main.py 会硬性校验。分支策略master为主分支稳定版frontier为开发分支测试版。自译解能力项目可通过自身插件对任意开源项目含自身生成剖析报告报告模板与示例见 docs/self_analysis.md其中逐文件列出了config.py、main.py、toolbox.py、request_llms/*等模块的职责界面中的“解析项目本身”按钮即调用 crazy_functions/SourceCode_Analyse.py 实现。运行入口总览整个系统的最小调用链为 main.pyGradio 界面构建与事件绑定→ shared_utils/config_loader.py三级配置读取→ request_llms/bridge_all.py按LLM_MODEL路由到bridge_chatgpt.py/bridge_chatglm.py等各模型桥接层→ shared_utils/fastapi_server.py服务启动。理解这条链路后README 中提到的所有“模型切换”“临时换密钥”“主题/布局切换”行为都能在此找到落点。【免费下载链接】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),仅供参考