本文档概述了GPT Academic的插件系统,解释了插件的结构、注册和执行方式。插件通过提供文档翻译、代码分析和学术论文处理等专业功能来扩展GPT Academic的核心功能。有关开发自己的插件的信息,请参阅插件开发。
GPT Academic的插件系统遵循注册模式,插件定义在crazy_functions包内的模块中,并通过get_crazy_functions()函数进行注册。该函数返回一个包含所有可用插件及其元数据的字典。
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模型 |
| 虚空终端 | 自然语言命令执行 |
| 保存当前的对话 | 保存当前对话 |
| 插件名称 | 描述 |
|---|---|
| 多媒体智能体 | 处理多媒体内容 |
| 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的核心功能,它实现了可扩展性和专业功能。通过了解插件的结构、注册和执行方式,用户可以充分利用现有插件,开发者可以创建新的插件来扩展平台的可能性。