菜单

插件

相关源文件

本文档概述了GPT Academic的插件系统,解释了插件的结构、注册和执行方式。插件通过提供文档翻译、代码分析和学术论文处理等专业功能来扩展GPT Academic的核心功能。有关开发自己的插件的信息,请参阅插件开发

插件系统架构

GPT Academic的插件系统遵循注册模式,插件定义在crazy_functions包内的模块中,并通过get_crazy_functions()函数进行注册。该函数返回一个包含所有可用插件及其元数据的字典。

来源: crazy_functional.py5-732

插件结构和元数据

GPT Academic中的每个插件都具有特定的元数据,这些元数据决定了其行为、外观以及在UI中的分类。

插件元数据字段

字段类型描述默认
分组字符串用于UI分组的类别(例如,“学术”,“编程”,“对话”)“对话”
颜色字符串按钮颜色代码“secondary”
AsButton布尔值是否在UI中显示为按钮True
Info字符串插件的描述-
功能功能函数式插件的引用-
类式插件的引用-
AdvancedArgs布尔值插件是否接受高级参数
ArgsReminder字符串高级参数输入的提示-

示例插件注册

来源: crazy_functional.py54-381 crazy_functional.py716-731

插件类别

GPT Academic中的插件分为几个组,以帮助用户查找相关功能。这些组在插件元数据的“Group”字段中定义。

来源: crazy_functional.py54-104 crazy_functional.py112-381 crazy_functional.py384-408 crazy_functional.py418-697 crazy_functional.py384-408 crazy_functional.py418-697 crazy_functional.py418-697 crazy_functional.py418-697

插件实现方式

GPT Academic支持两种插件实现方式

函数式插件

传统方式,插件实现为一个Python函数。在插件元数据中通过“Function”键注册。

类式插件

一种更高级的方式,插件实现为类,通常继承自模板类。在插件元数据中通过“Class”键注册。类式插件为参数选择和执行提供了更结构化的接口。

来源: crazy_functional.py232-233 crazy_functional.py117-119 crazy_functional.py379-381

插件开发核心工具

crazy_utils.py模块提供了插件可以使用的核心工具,用于各种任务

令牌管理

  • input_clipping():智能地裁剪输入和历史记录,当它们超出token限制时

多线程

  • request_gpt_model_in_new_thread_with_ui_alive():在新线程中发起LLM请求,同时保持UI响应
  • request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency():以高效率和出色的UI并行处理多个请求

文件处理

  • read_and_clean_pdf_text():解析和清理PDF文档中的文本
  • get_files_from_everything():从各种来源(本地路径、URL)检索文件

来源: crazy_utils.py7-66 crazy_utils.py68-164 crazy_utils.py187-355 crazy_utils.py359-539 crazy_utils.py542-587

可用插件

GPT Academic 附带了广泛的内置插件。以下是一些最值得注意的插件:

学术插件

插件名称描述
Arxiv论文翻译将ArXiv论文翻译成中文
精准翻译PDF论文准确翻译PDF论文
批量总结PDF文档总结多个PDF文档
Latex英文润色润色英文LaTeX文档

编程插件

插件名称描述
解析整个Python项目分析整个Python项目
注释Python项目为Python代码添加文档字符串
解析整个C++项目分析C++项目
翻译README或MD翻译Markdown文件

对话插件

插件名称描述
查互联网后回答使用互联网搜索回答问题
询问多个GPT模型查询多个LLM模型
虚空终端自然语言命令执行
保存当前的对话保存当前对话

Agent插件

插件名称描述
多媒体智能体处理多媒体内容
AutoGen多智能体终端使用AutoGen的多智能体系统
随机互动小游戏互动小游戏
动态代码解释器动态代码解释器

来源: crazy_functional.py54-381 crazy_functional.py384-408 crazy_functional.py418-697

插件执行流程

当用户通过UI与插件交互时,会发生以下顺序:

来源: crazy_functional.py5-732 crazy_utils.py68-164 crazy_utils.py187-355

多路由提交按钮

GPT Academic 还为主要的提交按钮实现了一个“多路由”系统,允许它根据所选模式触发不同的插件。

来源: crazy_functional.py737-755

插件热重载

GPT Academic 实现了一个热重载系统,允许在不重启应用程序的情况下修改和更新插件。这是通过包装插件函数的HotReload包装器实现的。

来源: crazy_functional.py1-3 crazy_functional.py60

该系统使得插件的开发和测试更加高效,因为更改可以立即生效。

结论

插件系统是GPT Academic的核心功能,它实现了可扩展性和专业功能。通过了解插件的结构、注册和执行方式,用户可以充分利用现有插件,开发者可以创建新的插件来扩展平台的可能性。