本文深入概述了 GPT Academic 的系统架构,解释了核心组件及其如何协同工作以提供与大型语言模型交互的灵活界面。有关配置选项的信息,请参阅配置和部署;有关插件开发的信息,请参阅插件开发。
GPT Academic 遵循模块化设计,将不同系统组件的功能分离。系统利用基于 Gradio 的 UI,通过桥接适配器与各种语言模型交互,并具有可扩展的插件架构以实现自定义功能。
来源: main.py34-355 config.py1-440 crazy_functional.py1-597 toolbox.py1-652
系统通过 main.py 初始化,它设置 Gradio UI,从 config.py 加载配置,从 crazy_functional.py 注册插件,并通过桥接适配器建立与语言模型的连接。toolbox.py 模块提供系统使用的实用函数。
当用户与系统交互时,请求会通过多个组件流转,最终到达语言模型并返回响应。
来源: main.py217-229 toolbox.py88-150
GPT Academic 具有基于插件的架构,允许模块化扩展功能。插件通过 crazy_functional.py 注册,并可通过 UI 调用。
来源: crazy_functional.py1-54 crazy_functional.py55-642 crazy_functions/crazy_utils.py1-652
插件系统定义了一个包含插件功能的字典,其中包含组、颜色以及是否显示为按钮等元数据。插件可以是基于函数的,也可以是基于类的,后者提供更高级的功能,例如用于参数选择的自定义 UI 元素。
LLM 桥接组件为各种语言模型(包括外部 API 和本地模型)提供了统一的接口。
桥接架构抽象了各种语言模型之间的差异,提供了统一的接口。bridge_all.py 中的 model_info 字典将模型名称映射到其特定的桥接实现,而 predict 函数则将请求路由到相应的模型。
GPT Academic 使用 Gradio 构建其用户界面,支持自定义主题和布局。
来源: main.py60-63 main.py88-94 main.py98-196 config.py89-92 config.py133
UI 系统使用 Gradio 构建,支持两种主要布局:左右布局 (LEFT-RIGHT) 和上下布局 (TOP-DOWN)。主题系统允许自定义外观,界面设计得响应灵敏且直观。
当插件执行时,它遵循特定的流程来处理请求并返回结果。
来源: toolbox.py88-150 toolbox.py152-184 toolbox.py220-246 toolbox.py248-269 crazy_functions/crazy_utils.py187-356
插件执行由多个装饰器封装,这些装饰器提供参数处理、异常捕获和热重载等功能。ArgsGeneralWrapper 装饰器重构输入参数以匹配插件函数预期的格式,而 CatchException 装饰器则捕获并显示执行过程中发生的任何错误。
GPT Academic 包含复杂的机制,用于并行处理多个 LLM 请求和管理 Token 限制。
来源: crazy_functions/crazy_utils.py7-66 crazy_functions/crazy_utils.py68-164 crazy_functions/crazy_utils.py187-356
多线程系统允许并行执行 LLM 请求,并提供实时 UI 更新以显示进度。Token 管理系统通过智能地裁剪文本以适应限制,处理输入和历史记录超出模型 Token 限制的情况。
GPT Academic 包含用于处理文件上传、处理各种文件格式和管理结果的实用工具。
来源: toolbox.py503-566 toolbox.py578-592 crazy_functions/crazy_utils.py359-540
文件管理系统处理上传、存档提取,并提供用于处理各种文件格式(如 PDF、Markdown 和源代码文件)的实用工具。结果管理系统为生成的报告和文件创建可下载链接。
GPT Academic 使用分层配置系统,允许通过 config.py、环境变量和私有配置文件进行自定义。
来源: config.py1-14 main.py44-54 toolbox.py16-18
配置系统采用分层方法,其中环境变量具有最高优先级,其次是 config_private.py,最后是 config.py。这使得配置管理灵活,同时维护了 API 密钥等敏感数据的安全性。
GPT Academic 的启动过程涉及初始化各种组件并设置执行环境。
来源: main.py35-355 main.py334-348 main.py353-355
启动过程首先加载配置、注册插件、初始化 LLM 桥接,并创建 UI 块。UI 创建完成后,延迟任务(如检查更新、预热模块和打开浏览器)会在单独的线程中执行。最后,服务器启动以处理用户请求。
系统使用 WebSocket 连接在长时间运行的操作期间向 UI 提供实时更新。
来源: toolbox.py152-184 crazy_functions/crazy_utils.py152-163 crazy_functions/crazy_utils.py335-339
系统使用 Gradio 的 yield 机制在长时间运行的操作期间向 UI 提供实时更新。update_ui 函数及其变体用于向客户端发送更新,然后通过 WebSocket 连接反映在 UI 中。
GPT Academic 采用模块化架构,将不同系统组件的功能分离。核心系统通过 main.py 初始化,设置 Gradio UI,加载配置,注册插件,并建立与语言模型的连接。插件系统提供了灵活的方式来扩展系统功能,而桥接架构抽象了各种语言模型之间的差异。UI 系统使用 Gradio 构建,支持自定义主题和布局。文件管理系统处理上传并提供用于处理各种文件格式的实用工具。配置系统采用分层方法,以实现灵活和安全的配置管理。
来源: main.py34-355 config.py1-440 crazy_functional.py1-597 toolbox.py1-652 crazy_functions/crazy_utils.py1-652 requirements.txt1-46 version1-6